MS12-020 или червивый RDP
Вчера Microsoft выпустила очередную порцию патчей и среди них мое внимание особенно привлек MS12-020,
который имеет критический статус. Уязвимость позволяет выполнить
произвольный код на удаленной системе при мощи специально
сформированного RDP пакета. Данной уязвимости подвержены все версии MS
Windows в том числе и 64-битные версии. На самом деле в рамках
патча MS12-020 было закрыто две уязвимости CVE-2012-0002 (RCE в RDP)
и CVE-2012-0152 (DoS в Terminal Server). Меня больше интересует первая
уязвимость, так как она гораздо более опасная и может повлечь за собой
появление сетевых червей, которые будут ее активно эксплуатировать (на
данный момент о случаях ее использования во вредоносных программах мне
не известно).
Кстати относительно недавно уже закрывалась уязвимость MS11-065 (август
2011), которая позволяла осуществлять DoS (WinXP/2003) и была замечена в
том же драйвере rdpwd.sys, в котором была найдена CVE-2012-0002.
Эти изменения можно отследить по временным меткам в rdpwd.sys до и
после патча. А также в официальных списках изменений для MS11-065 и для MS12-020.
Собственно основные изменения были замечены в функции HandleAttachUserReq(), декомпилированный вариант которой выглядит следующим образом:
При сравнение исправленного драйвера и драйвера до патча, видно что изменений было произведено не так уж и много.
Видно, что добавлена дополнительная проверка и освобождение памяти при помощи ExFreePoolWithTag():
Давайте теперь посмотрим на декомпилированный вариант этих изменений:
Именно отсутствие этой проверки может за собой повлечь возможность
удаленного захвата памяти и возможность несанкционированного выполнения
кода. Причем выполнения кода происходит в ядре.
Описание баги от автора (Luigi Auriemma)
Неплохой анализ CVE-2012-0152 (DoS в Terminal Server) можно найти здесь.
Еще один анализ CVE-2012-0002 здесь
DoS эксплойт для CVE-2012-0002 брать в metasploit
Комментарии
Отправить комментарий