Английский специалист по ИТ-безопасности Питер Винтер-Смит (Peter Winter-Smith) сделал рождественский подарок сообществу, опубликовав 25 декабря интересный эксплойт для Nvidia Display Driver Service (Nvvsvc.exe), в том числе подробное описание уязвимости и код самого эксплойта.

В Nvvsvc.exe происходит переполнение буфера из-за некорректного проведения операции memmove. Эксплойт использует эту ошибку и позволяет обойти механизмы защиты памяти DEP и ASLR, после чего становится возможным выполнение произвольного кода со стороны любого авторизованного пользователя или удалённого пользователя в домене Windows.

Некорректное проведение операции memmove происходит таким образом: эта функция переносит данные из буфера received-data в буфер response-buf, не проверяя их. При этом возможно определить, с какого места в буфере received-data начинается считывание данных, если внедрить строку переменной длины, которая одновременно является частью протокола и сообщает количество байтов, скопированных в буфер. Дело в том, что в именованный конвейер \pipe\nsvr поступает в точности такое же количество байтов, какое передаётся в буфер, а не фиксированное число с максимальным значением байтов, которые буфер способен принять. За счёт этой утечки данных становится возможным считывание стека, путём копирования данных с конца буфера received-data, через буфер received-data, который изначально имеет значение, равное нулю. Получается, что путём последовательного считывания можно получить всё содержимое стека:

  • [locals]
  • [received-data]
  • [response-buf]
  • [stack cookie]
  • [return address]
  • [arg space]
  • [etc]

Опубликованный эксплойт осуществляет последующую эксплуатацию уязвимости, внедряя в память исполняемый код, используя данные stack cookie.

Эксплойт проверен под Win7/x64, на компьютере Dell XPS 15 с видеокартой NVidia GT540M и последней версией драйверов.



Оставить мнение