Архивы: по дате | по разделам | по авторам

Нечаянный стриптиз

Архив
автор : Андрей Васильков   25.02.2004

12 февраля корпорация Microsoft официально подтвердила правдивость слухов о том, что в Сеть попала часть исходников операционных систем Windows NT и Windows 2000

12 февраля корпорация Microsoft официально подтвердила правдивость слухов о том, что в Сеть попала часть исходников операционных систем Windows NT и Windows 2000 (см. новость «Oh My Code», стр. 19. — Прим. ред.). Событие сенсационное само по себе, но гораздо интереснее не то, как код попал в Интернет, а чем это чревато для пользователей, работающих под управлением нечаянно «открывшихся» ОС, и для самой Microsoft.

Как известно, все существующее программное обеспечение можно грубо разделить на проприетарное и ПО с открытым кодом. Адепты противоборствующих идеологий сломали немало копий, пытаясь перетянуть общественность каждый на свою сторону. Сегодня уже можно сказать, что «открытость» одержала по меньшей мере одну убедительную победу. Несколько лет назад Microsoft — флагману на рынке проприетарного ПО — пришлось смягчить свое ретивое отношение к защите собственных продуктов «от сглазу» и начать «делиться». Компания выступила с инициативой правительственной программы безопасности (Government Security Program, GSP), в рамках которой планировалось открыть исходный код ОС Windows и некоторых других продуктов Microsoft правительствам шестидесяти с лишним стран и международным организациям. Россия удостоилась чести быть первой, и уже с февраля прошлого года сотрудники НТЦ «Атлас» и ГУИР ФАПСИ приступили к изучению части исходников. Понятно, что это вынужденный шаг, цель которого — доказать, что в ПО Microsoft нет троянских коней, введенных туда по настоянию американского правительства.

Похожие программы ознакомления с исходным кодом Microsoft предложила также своим партнерам и образовательным учреждениям. Существует несколько типов лицензий shared source, владельцы которых могут частично ознакомиться с исходным кодом продуктов Microsoft1. Однако «открытость» у корпорации получилась весьма избирательная, и уж тем более речь об изменении кода шла только в исключительных случаях. Несмотря на схожесть названий, концепция shared source имела мало общего с open source, и руководители Microsoft неоднократно подчеркивали, что идеология open source и вообще идея свободно распространяемого ПО кажется им опасной не только для самой компании, но и для рынка ПО в целом2.

Судьба сыграла злую шутку над софтверным гигантом. 12 февраля 2004 года на сайте Neowin.net появилось первое сообщение о гуляющих по Сети исходниках Windows. Новостные агентства моментально разнесли сенсационную весть по свету. В тот же день отреагировала и Microsoft, признав в официальном пресс-релизе3 утечку части исходного кода Windows 2000 и Windows NT 4.0.

Предварительное расследование показало, что виновником является компания Mainsoft, которая, занимаясь портированием приложений Microsoft под Unix, имела доступ к исходникам Windows задолго до того, как Microsoft запустила программу shared source. Впрочем, вина Mainsoft (которая, к слову, не слишком отпирается) еще не доказана. По данным компании iDefence, код был похищен в 2001 году. Времени, чтобы изменить его и «подставить» Mainsoft, тем самым отведя подозрения от себя, у злоумышленников было предостаточно. Более того, Кен Данхэм, специалист по «вредному коду» из iDefence, даже сомневается, что весь распространяемый код принадлежит «пострадавшему»: «в архиве чистый код перемешан с халтурой, не похожей на продукцию Microsoft. Такое впечатление, что некто придержал код и немного поигрался с ним, прежде чем распространять».

Сама Mainsoft вызвалась активно помогать ФБР в расследовании. Однако если ей предъявят обвинение, она запросто сможет воспользоваться так называемой троянской защитой. Это новомодный адвокатский прием, который использует идею возможности внедрения в компьютеры обвиняемого троянских программ, с помощью которых третьи лица действуют от имени подзащитного. Учитывая, что доказать обратное практически невозможно (троянский конь мог самоуничтожиться, а значит, для построения адвокатской защиты отыскивать его необязательно), у Mainsoft есть шанс избежать судебного преследования. Правда, о сотрудничестве с Microsoft компания с громким именем тоже может забыть. Портировать Media Player или IE под Unix скорее всего будет кто-нибудь другой.

Пока сведений о пользователях, реально пострадавших из-за сложившейся ситуации, не поступало. В то же время есть основания полагать, что теперь угроз для пользователей ОС Windows NT/2000/XP/2003 потенциально стало больше.

Архив с кодом Windows 2000 весит порядка 200 мегабайт и включает в себя более 30 тысяч файлов, содержащих около 13,5 млн. строк кода. Известно, что в самой Windows 2000 — от 35 до 100 млн. строк кода (вилка, конечно, недетская; в некоторых источниках говорится, что объем исходных файлов Windows 2000 составляет 4 гигабайта). Даже по самым скромным подсчетам получается, что в руках злоумышленников оказалось 15–20 процентов кода Windows 2000 SP1, который реализует сетевые сервисы (winsock и inet) и отвечает за работу многих популярных приложений4. Windows NT 4.0, по слухам, похищена почти полностью, но она привлекает гораздо меньше внимания в силу своей относительной неактуальности.

На первый взгляд 15 процентов — совсем немного. Однако если подноготная Windows 2000 станет известна вирусописателям, хакерам и прочим «исследователям», это сильно поспособствует успешности их новых атак. Разумеется, после первого сервис-пака вышло великое множество заплат, часть дыр давно залатана, многие пользователи перешли на Windows Server 2003, но анализ кода может представлять интерес не столько в плане поиска уязвимостей, сколько для понимания ключевых моментов работы ОС и получения информации, ранее доступной лишь разработчикам. Это поможет писать программы, которые буду взаимодействовать с ОС на самом глубоком уровне. Среди таковых наверняка окажутся вирусы, троянские кони, бэкдоры, сетевые черви, «шпионские» (adware) компоненты, отловить и вычистить которые будет гораздо труднее, чем раньше.


1 www.microsoft.com/resources/sharedsource/Licensing/default.mspx .
2 См., например, комментарии старшего вице-президента Microsoft Крейга Манди (www.old.computerra.ru/online/firstpage/newsofday/9104/for_print.html ).
3 www.microsoft.com/presspass/press/2004/Feb04/02-12windowssource.asp .
4 Полный список файлов можно посмотреть по адресу www.scowerer.piratecove.net/files/w2kfiles.txt. (Если эта ссылка будет жива к моменту появления номера в киосках. — Прим. ред.)

Дело в том, что прежде «нападающие» и «защитники» (вирусописатели и антивирусные компании) находились в равных условиях. Не зная исходного кода, обе стороны работали, основываясь лишь на общедоступных данных о системе, а также тех, что смогли получить методом «черного ящика». Ради поиска недокументированных функций приходилось идти на множество ухищрений; обнаруживать бреши в системе защиты тоже было нелегко. С открытием исходных кодов делать подобные вещи станет гораздо проще. Это все равно что вместе с захваченным самолетом противника найти в кабине его детальные чертежи.

Любопытно, что Linux, чей код общеизвестен, не испытывает от этого серьезных проблем. Наоборот, в среде линуксоидов открытость считается благом, поскольку дает возможность легко находить ошибки и оперативно (причем самостоятельно) их исправлять. Почему же тогда открытие исходников Windows приравнивают к катастрофе с далеко идущими последствиями? Очевидно, потому, что код Linux был открыт с самого начала. Эту ОС шлифовали от версии к версии тысячи энтузиастов, прежде чем она обрела популярность и стала завоевывать серверный рынок, а после утвердилась и в качестве полноценной настольной системы, начала использоваться в мобильных устройствах, различных гаджетах.

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

Конечно, мало кто обладает достаточными знаниями и временем, чтобы провести такую проверку, да еще суметь сделать правильные выводы. Однако само наличие подобной возможности представляет немалую ценность.

Затея Microsoft выборочно открыть части исходников своих продуктов некоторым организациям была скорее вынужденным шагом, нежели добровольной инициативой. Случившееся неконтролируемое «ускорение и расширение» процесса действительно способно доставить немало проблем как самой компании, так и пользователям.

«Подобные утечки снижают степень защиты операционной системы и могут привести к созданию вирусов, использующих такие бреши в безопасности Windows, для которых еще нет заплаток. В результате это может привести к крупномасштабной вирусной эпидемии, борьба с которой будет существенно затруднена» — полагают в «Лаборатории Касперского». Вирусы и раньше использовали для своего распространения дыры, для которых еще не было заплаток. Разработчику не всегда удается оперативно отреагировать на обнаружение новых брешей и выпустить патч до того, как ими воспользуются «вредители». С другой стороны, бывали случаи, когда проблема общеизвестна, пакет исправлений давно выпущен, а пользователи просто ленятся его установить. Так было в случае с Worm.SQL.Helkern5. Он использовал дыру, патч для которой был выложен на сайт Microsoft за полгода (!) до эпидемии.

Первая ласточка уже прилетела. В списке рассылки Full Disclosure опубликовано описание6 бреши в IE, основанное на поверхностном анализе кода Windows 2000. Между первыми сообщениями об архивах с исходниками и публикацией письма прошло два дня.

Помимо того, что хакерам и вирусописателям теперь будет легче находить дыры в ОС, головной боли компании добавляет тот факт, что ее наработки могут быть использованы для создания других продуктов и усложнят конкурентную борьбу. Отважным поступком была бы официальная публикация скомпрометированного кода под свободной лицензией7, но рассчитывать на это не приходится. Microsoft скорее попытается снизить оценку угрозы и удесятерит усилия по разработке патчей.

 

Избранные комментарии из похищенных исходников

private\shell\ext\tweakui\genthunk.c:
* CallProc32W is insane. It’s a variadic * function that uses the pascal calling
* convention. (It probably makes more
* sense when you’re stoned.)

private\mvdm\wow32\wgdi31.c:
// InquireVisRgn is an undocumented Win // 3.1 API. This code has been
// suggested by ChuckWh. If this does not // fix the s 2.0 problem, then ChuckWh
// would be providing us with an private // entry point.

private\ntos\w32\ntuser\kernel\mnpopup.c:
// Set the GlobalPopupMenu variable so
// that EndMenu works for popupmenus so
// that WinWart II people can continue to // abuse undocumented functions.

private\mvdm\wow32\wgfont.c:
* This thunk implements the undocumented * Win3.0 and Win3.1 API
* GetCurLogFont (GDI.411). Symantec QA4.0 * uses it.
* To implement this undocumented API we
* will use the NT undocumented API

private\windows\media\avi\verinfo.16\verinfo.h:
* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! * !!!!!!!!IF YOU CHANGE TABS TO SPACES,!!
*!!!!!!!!!YOU WILL BE KILLED!!!!!!!!!!!!!
*!!!!!!!!!DOING SO FUCKS THE BUILD!!!!!!!
*!!!!!!!!!PROCESS!!!!!!!!!!!!!!!!!!!!!!!!!
* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

5 Подробнее см. www.computerra.ru/offline/2003/478/24186 .
6 www.lists.netsys.com/pipermail/full-disclosure/2004-February/017364.html.
7 См., например, комментарий Алексея Новодворского из AltLinux на www.compulenta.ru/2004/2/16/45129 .

© ООО "Компьютерра-Онлайн", 1997-2024
При цитировании и использовании любых материалов ссылка на "Компьютерру" обязательна.