Нешуточная ошибка в Windows

10.08.2002, 13:18

В ОС Windows обнаружено серьезное уязвимое место: с его помощью злоумышленник может запустить на компьютере любую программу, даже не имея для этого достаточных прав. Ситуация осложнена тем, что устранить уязвимое место при помощи обычных заплаток не удастся: ошибка была допущена еще на этапе проектирования программного интерфейса Win32 (Win32 API).

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

Основой, на которой базируется пользовательский интерфейс Windows, являются сообщения (messages). Каждое действие, предпринимаемое пользователем, порождает массу сообщений, передаваемых для обработки окнам (отдельные компоненты интерфейса, такие как кнопки или, например, поля ввода текста, с точки зрения Windows, также являются окнами). Некоторые сообщения генерируют работающие приложения или сама система.

Проблема заключается в том, что Windows никак не контролирует передачу сообщений между разными приложениями. Любое приложение может послать любое сообщение любому окну, и то обработает его, не задумываясь. В Windows 95, где все пользователи и программы равны, это было нормально, но в Windows NT/2000/XP дело обстоит совсем не так. Некоторые программы имеют администраторские права, а другие - нет. Вредоносная программа может заставить выполнять программу с администраторскими правами действия, которые для нее самой запрещены.

Чтобы проверить реальность угрозы, Пейджет написал небольшую программу под названием Shatter. Она узнает идентификатор (handle) окна антивируса Network Associates VirusScan. Имея идентификатор, Shatter может послать антивирусу сообщение, устраняющее ограничение на длину текста, который можно ввести в текстовое поле в одном из его диалоговых окон. В этот момент требуется вмешательство взломщика: он должен поместить в буфер обмена (clipboard) исполняемый код программы, которую он хочет запустить. Сделать это можно при помощи какого-нибудь шестнадцатиричного редактора. Shatter перемещает данные из буфера обмена в текстовое поле. После этого с помощью отладчика этот код можно запустить.

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

О проблеме было сообщено в Microsoft. Там подтвердили, что знают об этой уязвимости, однако не склонны преувеличивать её опасность. В Microsoft считают, что если уж злоумышленник получил возможность поработать за чужим компьютером, остановить его невозможно. Так или иначе, но своего он добьется.

Пейджет считает, что авторы Windows не улавливают сути. Главная опасность угрожает компаниям, у которых много компьютеров, пользователи которых имеют ограниченные права. Эти компьютеры не имеют ничего для защиты от атаки с помощью программы, похожей на Shatter. Вся система безопасности Windows теряет смысл.

Причина, по которой Microsoft ничего не делает, заключается, по мнению Пейджета, в ином. В компании осознают свое бессилие. Хотя проблема имеет решения, ни одно из них не лишено недостатков.

Осторожность Microsoft можно понять. Несмотря ни на что, до сих пор её тактика оправдывала себя: за годы существования Win32 API случаев использования этой уязвимости не было.
По материалам "Компьюленты".

Читайте також