Уязвимость Windows Metafile

Уязвимость Windows Metafile (также исполнение кода через метафайл, англ. Metafile Image Code Execution, MICE) — это уязвимость в системе безопасности, связанная с обработкой изображений в формате Windows Metafile некоторыми версиями операционной системы Microsoft Windows. Уязвимость позволяет выполнять произвольный код на поражённых компьютерах без согласия пользователя. Она была обнаружена 27 декабря 2005 года, а первые сообщения о заражённых компьютерах появились в течение суток. Microsoft выпустила приоритетное обновление для устранения этой уязвимости через Windows Update 5 января 2006 года[1]. Атаки, использующие эту уязвимость, известны как эксплойты WMF.

Уязвимость была найдена в библиотеке gdi32.dll и существовала во всех версиях Microsoft Windows от Windows 3.0 до Windows Server 2003 R2. Однако практические методы атаки реализуемы только в версиях семейства NT (Windows NT, Windows 2000, Windows XP, Windows Server 2003). Эксплойты для систем на основе Windows NT позволяли распространять различное вредоносное ПО, чаще всего через атаки типа скрытая загрузка.

В связи с масштабным воздействием данный баг был удостоен награды Pwnie Awards в 2007 году в номинациях «Массовое взламывание» и «Взлом интернета».

Затронутые системы

Все версии ОС Microsoft Windows поддерживают графический стандарт Windows Metafile, и все версии от Windows 3.0 до Windows Server 2003 R2 содержат этот уязвимый код[2]. Однако, по умолчанию в Windows NT 4.0 и Windows XP (если не применён патч) проигрывание WMF-файлов включено, что делает эти системы более уязвимыми, чем более ранние версии[3] Позднейшие версии Windows этой уязвимости не имеют.[2].

По оценке эксперта по компьютерной безопасности Стива Гибсона, Windows NT 4 подвержена эксплойтам при включённом режиме предпросмотра изображений[3]. Системы, где предпросмотр отключён или для всех приложений включена аппаратная защита от выполнения данных (DEP), как правило устойчивы к данному эксплойту.

Операционные системы, отличные от Windows (например, macOS, Unix, Linux), напрямую не подвержены уязвимости. Однако такие системы могут стать уязвимыми, если запускают ПО для просмотра WMF-файлов, используют сторонние реализации GDI либо работают через эмулятор Windows или совместимый слой. Например, Unix-подобная система, использующая Wine, может быть атакована[4]. Для диагностики уязвимости, работающей как в Windows, так и в эмуляторах, Гибсон разработал бесплатную утилиту MouseTrap[3]

Уязвимость

По данным компании F-Secure, уязвимость имеет корни в устаревшей архитектуре WMF: формат включает возможность исполнения кода при открытии WMF-файла, изначально необходимую для управления печатью во время спулинга.

Согласно компаниям Secunia, уязвимость вызвана ошибкой обработки файлов WMF (расширение «.wmf»), содержащих особые записи SETABORTPROC типа «Escape», позволяющие выполнять пользовательскую функцию при сбое прорисовки.[5]. Документация SDK Windows 3.1 сообщает, что «escape»-код SETABORTPROC стал устаревшим и был заменён одноимённой функцией ещё в Windows 3.1, задолго до обнаружения уязвимости, однако по соображениям совместимости было сохранено его использование в WMF. Эта архитектурная особенность появилась примерно тогда же, когда Microsoft разрабатывала 32-битную реализацию GDI для Windows NT; скорее всего, ошибка внедрилась на этом этапе.

Механизм Escape позволяет приложениям обращаться к возможностям устройств вывода, не реализованным средствами самой GDI (например, аппаратное ускорение через Bézier-кривые или поддержку encapsulated postscript). Поскольку большинство Escape-вызовов фактически формирует графику, авторам WMF-формата такой механизм показался безопасным, однако специфика SETABORTPROC не была учтена. В современных интерпретаторах метафайлов теперь применяется whitelist/blacklist для Escape-кодов.

Замечено, что 16-битная Windows (кроме малоиспользуемого реального режима Windows 3.0) была невосприимчива к атаке, поскольку в сегментной архитектуре защищённого режима данные, на которые ссылается WMF, могли находиться только внутри самого метафайла, а исполнение данных было запрещено на аппаратном уровне. Для NT-систем с процессорами, отличными от x86 (MIPS, PowerPC, Alpha, Itanium, x86_64), эксплойт требовал возвратно-ориентированного программирования, поскольку функция неисполнения данных там поддерживалась на аппаратном уровне.

Уязвимость зарегистрирована как в базе Common Vulnerabilities and Exposures, под индексом VU#181038 в US-CERT и в статье Microsoft Knowledge Base 912840. Впервые эксплойт был обнаружен исследователями Sunbelt Software 28 декабря 2005 года и публично объявлен президентом компании Алекс Экелберри[6][7].

Распространение и заражение

Заражение компьютеров возможно через массовую рассылку заражённых WMF как вложение к письму. Инфицирование также может произойти при:

  • посещении сайта, который автоматически открывает WMF-файлы — браузер (например, Internet Explorer, используемый по умолчанию с 1996 года до Windows 8), может загрузить и выполнить заражённое изображение;
  • просмотре или предпросмотре заражённого файла в Проводнике Windows;
  • открытии заражённого изображения уязвимыми программами просмотра;
  • предпросмотре или открытии заражённых писем в старых версиях Microsoft Outlook и Outlook Express;
  • индексировании диска заражённым файлом с помощью Google Desktop;
  • переходе по ссылкам из мгновенных сообщений через Windows Live Messenger, AOL Instant Messenger (AIM), Yahoo! Messenger.

Существуют и другие способы распространения. Поскольку уязвим код операционной системы, использование альтернативных браузеров, таких как Firefox или Opera, не гарантирует полной защиты. Пользователю может быть предложено скачать и открыть вредоносный файл, что приведёт к заражению. Также заражённые файлы могут быть скачаны автоматически, что чревато заражением при индексировании диска либо случайном предпросмотре.

По данным McAfee, уязвимость активно эксплуатировалась для распространения троянских программ, в частности Bifrost, а также других видов вредоносного ПО. Первый всплеск эксплойтов был зафиксирован к 31 декабря 2005 года у более 6 % клиентов компании.

Официальный патч

Microsoft выпустила официальный патч 5 января 2006 года[8]. Патч устранил уязвимость для Windows 2000, Windows XP и Microsoft Windows Server 2003. Windows NT 4 и другие более старые системы патч не получили, поскольку не поддерживались Microsoft. Стив Гибсон в своём подкасте Security Now! (выпуск № 20) обещал выпустить патч для Windows 9x, если Microsoft этого не сделает[9]. Позже (в подкасте № 23) он сообщил, что Windows 9x и ME уязвимости не подвержены, патч им не нужен[10]. Проверить систему можно с помощью его утилиты MouseTrap.

Бесплатный патч для Windows NT был подготовлен Паоло Монти (Paolo Monti) из компании Future Time, итальянского дистрибутора NOD32[11]. Патч работает на старых ОС, но распространяется без гарантий.

Сообщалось, что официальный патч иногда устанавливался автоматически, даже если у пользователя был включён режим подтверждения установки через Windows Automatic Update, что приводило к автоматической перезагрузке компьютера и, в некоторых случаях, к потере несохранённых данных.

Другие меры защиты

Эти меры актуальны только для систем, не обновлённых после 5 января 2006 года.

Временное решение

В качестве временного обходного варианта, Microsoft рекомендовала отключить регистрацию библиотеки shimgvw.dll (ответственной за предпросмотр изображений; это делается командой regsvr32.exe /u shimgvw.dll через меню «Выполнить» или командную строку) — именно её использование чаще всего приводит к успешному эксплойту. После установки патча DLL можно зарегистрировать обратно с помощью regsvr32.exe shimgvw.dll. Такой workaround блокирует основной вектор атаки, но не устраняет уязвимость полностью.

Сторонний патч

Сторонний патч был опубликован Ильфаком Гильфановым 31 декабря 2005 года: он временно отключал опасную функцию в gdi32.dll[12]. Патч получил широкую огласку и рекомендации от SANS Institute (Internet Storm Center) и F-Secure, особенно актуально это было до выхода официального патча Microsoft. Из-за высокой популярности сайт Гильфанова не выдержал наплыва посетителей и был временно отключён, однако файлы распространялись через зеркала, в том числе Internet Storm Center.

После выпуска официального патча Microsoft, Гильфанов убрал свою версию с сайта.

Дополнительные методы снижения риска

Microsoft отмечала, что её патч полностью устраняет опасную функциональность в GDI32.dll. До выхода патча рекомендовалось использовать дополнительные меры:

  • аппаратно реализованная DEP для всех приложений;
  • назначение программой по умолчанию для WMF неуязвимого приложения (например, Блокнот);
  • отказ от использования Internet Explorer (или настройка максимального уровня безопасности на скачивание файлов);
  • обновление антивирусного ПО;
  • фильтрация WMF по сигнатуре на сетевом периметре;
  • использование учётных записей с минимальными правами;
  • отключение загрузки картинок в Internet Explorer и других браузерах;
  • отключение загрузки изображений в Outlook Express;
  • отключение гиперссылок в MSN Messenger;
  • остановка службы индексирования на Windows 2000, Windows XP, Windows Server 2003;
  • отключение приложений desktop search (Google Desktop, Windows Desktop Search), пока уязвимость не устранена.

По данным SANS Institute Internet Storm Center, использование браузера, отличного от Internet Explorer, может дать дополнительную защиту, однако если браузер всё равно открывает WMF-файл, это не спасает — рекомендуется полностью отключить загрузку изображений.

Обвинения в закладке

В 2006 году Стив Гибсон предположил, что странный характер этой «ошибки» может означать преднамеренное внедрение так называемой закладки в систему[13]. После публикации этой версии на портале Slashdot слухи быстро распространились по Сети[13]. Однако специалисты Microsoft и независимые эксперты опровергли теорию заговора[14][15], а сам Гибсон был раскритикован в профильной прессе[13].

Примечания

  1. Microsoft Releases Security Update to Fix Vulnerability in Windows (англ.). PressPass. Microsoft (5 января 2006). Дата обращения: 25 июня 2024. Архивировано 18 января 2006 года.
  2. 1 2 Microsoft Security Bulletin MS06-001 – Critical (англ.). TechNet. Microsoft (5 января 2006). Дата обращения: 25 июня 2024.
  3. 1 2 3 Gibson, Steve M.I.C.E.: Metafile Image Code Execution (англ.). Gibson Research Corporation (19 января 2006). Дата обращения: 25 июня 2024.
  4. Gibson, Steve; Laporte, Leo GRC's MouseTrap (англ.). Security Now! (4 мая 2013). Дата обращения: 25 июня 2024.
  5. Microsoft Windows WMF "SETABORTPROC" Arbitrary Code Execution (англ.). Secunia. Дата обращения: 25 июня 2024.
  6. The December Storm of WMF: Preparation, Identification, and Containment of Exploits (англ.). SANS Institute. Дата обращения: 25 июня 2024.
  7. New exploit blows by fully patched Windows XP systems (англ.) (28 декабря 2005). Дата обращения: 25 июня 2024.
  8. Technical documentation, API, and code examples (англ.). Microsoft. Дата обращения: 25 июня 2024.
  9. GRC (англ.). GRC. Дата обращения: 25 июня 2024.
  10. GRC (англ.). GRC. Дата обращения: 25 июня 2024.
  11. Downloadable patch for Windows NT by Paolo Monti (англ.). Дата обращения: 25 июня 2024.
  12. Неофициальный патч Ильфака Гильфанова (англ.). Hexblog. Дата обращения: 25 июня 2024.
  13. 1 2 3 Greene, Thomas C. Windows back door rumor is bunk (англ.). The Register. Situation Publishing Ltd. (21 января 2006). Дата обращения: 25 июня 2024.
  14. Looking at the WMF issue, how did it get there? (англ.). Microsoft Security Response Center Blog (13 января 2006). Дата обращения: 25 июня 2024.
  15. Inside the WMF Backdoor (англ.). Mark Russinovich's Blog (18 января 2006). Дата обращения: 25 июня 2024.

Литература

Категории