Фатальная дыра
АрхивКогда в мае этого года вице-президент Microsoft Джим Олчин давал под присягой показания в очередном раунде антимонопольного судебного разбирательства, то среди его ответов проскользнуло одно весьма любопытное признание.
Когда в мае этого года вице-президент Microsoft Джим Олчин (Jim Allchin) давал под присягой показания в очередном раунде антимонопольного судебного разбирательства, то среди его ответов проскользнуло одно весьма любопытное признание. Объясняя необходимость сохранения в тайне исходных текстов ОС Windows, Олчин заявил, что этого требуют интересы государственной безопасности, поскольку в реализации API и протоколов имеются серьезнейшие дыры, позволяющие похищать важную информацию, хранящуюся в компьютерах. Когда судья попросил привести конкретный пример такой слабости, Олчин назвал (о чем тут же и пожалел) протокол организации очередей сообщений («message queuing»)…
Что именно имел в виду Олчин, осталось тайной, но в начале августа в Интернете появилась публикация английского хакера Криса Пэйджета (Chris Paget aka Foon) «Использование уязвимостей архитектуры Win32 для повышения уровня привилегий пользователя или Как взламывать Windows» (security.tombom.co.uk/shatter.html). По словам Пэйджета, он обнаружил фундаментальную и практически неустранимую дыру в Win32 Messaging System - системе сообщений ОС, управляющих работой приложений. Атаки, описанные Пэйджетом, позволяют рядовому сетевому «гостю» повысить свои минимальные привилегии до максимума и затем делать с машиной что угодно: устанавливать снифферы для похищения паролей, копировать файлы или даже форматировать диски.
Серьезнейшая слабость Win32 Messaging System (остающейся неизменной с момента появления Win32 API в WinNT 3.5, то есть с 1993 года) состоит в том, что здесь не выполняется аутентификация сообщений, управляющих работой окон-приложений. Из-за этого система не может различить, от кого поступает сообщение, - от ядра, от «легального» приложения или же от злоумышленника. Данное обстоятельство позволило Пэйджету выбрать окно с максимальными привилегиями и скрытно встроить в очередь сообщений для него собственный код. После выполнения этого кода «гость» получает те же привилегии, что и запустившее «вставку» окно-приложение. Но каким образом окно удается сподвигнуть к выполнению этого кода? Пэйджет установил, что посылкой специального системного сообщения WM_TIMER можно заставить окно запустить практически произвольный код, предварительно загрузив его в память окна.
С помощью описанной технологии Пэйджет сумел повысить свои полномочия в Windows 2000 с минимальных (Guest) до максимально возможных - LocalSystem, то есть иерархически более высоких, чем у самого хозяина машины (Administrator). Когда же хакер уведомил Microsoft о выявленной дыре и намерении опубликовать ее описание, корпорация ответила, что знает об этой «особенности ОС», но не считает ее уязвимостью… Здесь следует, видимо, упомянуть, что на пристальное изучение Win32 Messaging System Пэйджета подтолкнуло то самое признание Джима Олчина в суде, о котором речь шла в начале заметки. С учетом последнего ответа Microsoft можно (вслед за Пэйджетом) сделать вывод, что в корпорации действительно давно обо всем знают, вот только исправить не могут - проще новую ОС сделать.