Разрушающая атака
В вычислительной технике разрушительная атака — это метод программирования, используемый хакерами в Microsoft Windows операционных системах для обхода ограничений безопасности между процессами в сеансе . Атака с разрушением использует недостаток конструкции в системе передачи сообщений Windows, в результате чего произвольный код может быть внедрен в любое другое работающее приложение или службу в том же сеансе, использующем цикл сообщений . Это может привести к эксплойту повышения привилегий . [1]
Обзор
[ редактировать ]Атаки Shatter стали темой интенсивных дискуссий в сообществе безопасности в августе 2002 года после публикации статьи Криса Пейджета «Использование недостатков дизайна в Win32 API для повышения привилегий». [2] В статье, в которой был предложен термин «разрушительная атака», объяснялся процесс, с помощью которого приложение может выполнить произвольный код в другом приложении. Это может произойти потому, что Windows позволяет непривилегированным приложениям отправлять сообщения в циклы сообщений приложений с более высокими привилегиями, а некоторые сообщения могут иметь в качестве параметров адрес функции обратного вызова в адресном пространстве приложения. Если злоумышленнику удастся поместить свою собственную строку в память приложения с более высокими привилегиями (скажем, вставив шеллкод в поле редактирования) в известном месте, он может затем отправить сообщения WM_TIMER с параметрами функции обратного вызова, установленными так, чтобы указывать на строку злоумышленника. .
Через несколько недель после публикации этой статьи Microsoft ответила, отметив, что: «В статье верно, что такая ситуация существует, и она правильно описывает ее последствия. Windows. На самом деле недостаток заключается в конкретной службе с высокими привилегиями. По задумке все службы интерактивного рабочего стола являются одноранговыми и могут взимать запросы друг с друга. В результате все службы интерактивного рабочего стола фактически имеют соразмерные привилегии. с самым привилегированным обслуживанием там». [3]
Решения
[ редактировать ]В декабре 2002 года Microsoft выпустила патч для Windows NT 4.0 , Windows 2000 и Windows XP , закрывающий некоторые возможности использования. [4] Однако это было лишь частичным решением, поскольку исправление ограничивалось службами, входящими в состав Windows, которые можно было использовать с помощью этого метода; основной недостаток конструкции все еще существовал и мог быть использован для атак на другие приложения или сторонние сервисы. [5] В Windows Vista Microsoft стремилась решить проблему двумя способами: во-первых, локальные пользователи больше не входят в сеанс 0, тем самым отделяя цикл сообщений сеанса вошедшего в систему пользователя от системных служб с высоким уровнем привилегий, которые загружаются в сеанс 0. Во-вторых, была представлена новая функция под названием «Изоляция привилегий пользовательского интерфейса» (UIPI), благодаря которой процессы можно дополнительно защитить от разрушительных атак путем назначения уровня целостности каждому процессу. [6] Попытки отправить сообщения процессу с более высоким уровнем целостности потерпят неудачу, даже если оба процесса принадлежат одному и тому же пользователю. Однако не все взаимодействия между процессами на разных уровнях целостности предотвращаются UIPI. [6] Например, Internet Explorer 7 использует функцию UIPI, чтобы ограничить степень взаимодействия компонентов рендеринга с остальной частью системы.
Способ создания экземпляров сеансов был изменен в Windows Vista и Windows Server 2008, чтобы обеспечить дополнительную защиту от разрушительных атак. Логины локальных пользователей были перенесены из сеанса 0 в сеанс 1, что позволило отделить процессы пользователя от системных служб, которые могли быть уязвимыми. [7] [8]

Однако это создает проблемы обратной совместимости , поскольку некоторое программное обеспечение было разработано с учетом предположения, что служба работает в том же сеансе, что и вошедший в систему пользователь. Для поддержки этого представления в Windows Vista и Windows Server 2008 появилась служба Windows под названием « Обнаружение интерактивных служб », которая обеспечивает доступ к диалоговым окнам, созданным интерактивными службами, при их появлении. Интерактивному пользователю отображается диалоговое окно, и ему предлагается возможность переключиться на сеанс 0 для доступа к диалоговому окну. [9] Эта возможность была удалена в обновлении Windows 10 Creators Update . [10]
См. также
[ редактировать ]- Изоляция привилегий пользовательского интерфейса
- Обязательный контроль целостности
- Принцип наименьших привилегий
- Безопасность на основе возможностей
Ссылки
[ редактировать ]- ^ «Использование недостатков дизайна Win32 API для повышения привилегий. Или… Shatter Attacks — Как взломать Windows» . Проверено 29 декабря 2011 г.
- ^ Крис Пейджет (август 2002 г.). «Использование недостатков дизайна Win32 API для повышения привилегий» . Архивировано из оригинала 4 сентября 2006 г.
- ^ «Информация о зарегистрированных архитектурных недостатках в Windows» . ТехНет . Майкрософт. Сентябрь 2002 года.
- ^ «Бюллетень по безопасности Microsoft MS02-071 — Ошибка в обработке сообщений Windows WM_TIMER может привести к повышению привилегий (328310)» . Майкрософт. 11 декабря 2002 года . Проверено 18 июля 2006 г.
- ^ «Небьющиеся окна» (PDF) . Проверено 29 декабря 2011 г.
- ^ Jump up to: а б «PsExec, контроль учетных записей пользователей и границы безопасности» . Архивировано из оригинала 15 апреля 2010 г. Проверено 8 октября 2007 г.
- ^ «Веб-журнал Ларри Остермана – взаимодействие со службами» . Ларри Остерман. 14 сентября 2005 года . Проверено 3 апреля 2007 г.
- ^ «Почему Vista? Изменения в сервисах, часть 2 (Безопасность, стабильность, целостность системы)» . Кен Шефер. 5 августа 2006 г.
- ^ Сирил Вуазен (23 февраля 2007 г.). «Изоляция служб в сеансе 0 Windows Vista и Longhorn Server» . Сирил Вуазен (он же Вой) по безопасности . Блоги MSDN . Проверено 23 апреля 2008 г.
- ^ «Функции, которые удалены или устарели в Windows 10 Creators Update» . Майкрософт. 11 марта 2024 г.