Shatter attack

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

«Подрывная атака» (англ. shatter attack) — программная технология, которая используется хакерами для обхода ограничений безопасности между процессами одного сеанса в операционной системе Microsoft Windows. Она опирается на недостаток архитектуры системы передачи сообщений и позволяет одному приложению внедрить произвольный код в любое другое приложение или службу, работающие в том же сеансе. В результате может произойти несанкционированное повышение привилегий.

Описание[править | править вики-текст]

Новый тип атак стал темой горячих обсуждений среди специалистов в сфере безопасности после публикации в августе 2002 года статьи Криса Паже[1], независимого консультанта по защите данных. В этом документе впервые появился термин «shatter attack», описывающий процесс, с помощью которого приложение может выполнить произвольный код в другом приложении. Это возможно благодаря тому, что Windows позволяет приложениям с низкими привилегиями отправлять сообщения приложениям, имеющим более высокие привилегии. В сообщении в качестве параметра может содержаться адрес функции обратного вызова из адресного пространства приложения. Если злоумышленник сумеет внедрить свои данные в память другого приложения (например, вставив шелл-код в окно редактирования или с помощью функций VirtualAllocEx и WriteProcessMemory), то он может послать ему сообщение WM_TIMER и указать адрес функции обратного вызова, который ссылается на эти данные.

Спустя несколько недель после публикации статьи, компания Microsoft согласилась с тем, что проблема существует, но в то же время пояснила[2], что называть это недоработкой Windows ошибочно, так как проблема кроется в самой службе с высокими привилегиями.

Решение[править | править вики-текст]

В декабре 2002 года Microsoft выпустила патч для систем Windows NT 4.0, Windows 2000, и Windows XP, предотвращающий использование «shatter attack»[3]. Но это было частичное решение проблемы, так как исправление касалось служб, поставляемых вместе с Windows. Однако сама архитектура не претерпела изменений, и для остальных приложений и служб угроза продолжала существовать.

В Windows Vista проблему решили комплексно, внеся два существенных изменения. Во-первых, сеанс 0 выделен исключительно для системных процессов, и пользователь больше не осуществляет вход в этот сеанс[4]. Во-вторых, большая часть сообщений теперь не отправляется от процессов с низкими привилегиями процессам с высокими привилегиями (User Interface Privilege Isolation, UIPI)[5]. К примеру, Internet Explorer 7 использует это нововведение для ограничения взаимодействия компонентов визуализации с остальной системой.

Примечания[править | править вики-текст]

Ссылки[править | править вики-текст]