Найден способ захватить Windows с помощью лишнего пробела

Автопривилегированность

Эксперт по информационной безопасности Дэвид Уэллс(David Wells) обнаружил новый, по его мнению, способ обходить функцию контроля учетных записей в Windows — UAC.

UAC — это компонент операционных систем Microsoft, который запрашивает подтверждение действий, требующих прав администратора, в целях защиты от несанкционированного использования компьютера. Данный компонент ограничивает привилегии той или иной программы в системе на уровне рядового пользователя до тех пор, пока администратор не разрешит повысить данные привилегии.

Некоторые программы имеют возможность автоматически повышать собственные привилегии. Чтобы предотвратить инциденты, Windows осуществляет серию дополнительных проверок безопасности так, предоставляя возможность автоматического повышения привилегий только избранной группе доверенных программ.

Такие программы должны обладать особой конфигурацией и надлежащей цифровой подписью, гарантирующей подлинность. Кроме того, они должны запускаться из доверенной папки, например, C:\Windows\System32.

Как работает уязвимость

Уэллс обнаружил, что собственная система идентификации приложений Windows — appinfo.dll — использует API RtlPrefixUnicodeString для проверки, начинается ли путь запускаемого приложения с C:\Windows\System32\. 

Затем исследователь создал папку с названием C:\Windows \ (с пробелом после Windows). Просто так, средствами проводника Windows этого не сделать — операционная система не любит такие названия, вдобавок оно не пройдет проверку RtlPrefixUnicodeString.

Однако с помощью API CreateDirectory, с добавлением последовательности символов \\?\ к началу Уэллсу удалось добиться создания папки с некоректным названием, а также организовать внутри нее подкаталог System32 (C:\Windows \System32).

Уэллс затем скопировал в нее файл winSAT.exe — доверенное приложение, которому разрешено автоматическое повышение привилегий.

И тут обнаружилось, что appinfo.dll совершенно спокойно конвертирует путь C:\Windows \System32\winSAT.exe в обычный C:\Windows\System32\winSAT.exe, и UAC никак не реагирует на существование несанкционированного пробела.

В дальнейшем, как выясняется, все дополнительные проверки спокойно «проглатывают» путь с пробелом, и копия winSAT.exe, располагающаяся в некорректной папке получает от appinfo.dll повышенные привилегии.

После этого эксперт поместил в папку C:\Windows \System32\ фальшивый файл WINMM.dll, содержащий вредоносный код; этот файл импортируется winSAT.ee, так что происходит локальный захват DLL — динамически подключаемой библиотеки для, позволяющей многократно использовать различные программные приложения.

Комментарий эксперта

«Тут, похоже, наблюдается целая комбинация ошибок в различных компонентах Windows, которые могут представлять угрозу, только если знать, как их комбинировать, — полагает Михаил Зайцев, эксперт по информационной безопасности компании SEC Consult Services. — Хотелось бы надеяться, что Microsoft довольно быстро обратит внимание на этот способ обхода механизмов защиты Windows, поскольку пока сценарий атак с помощью этого метода выглядит вполне реалистичным».


Источник : CNews