WMF: баг года крис касперски ака мыщъх Хакер, номер #086, стр. 086-066-3 что такое wmf Метафайлы (WMF - Windows Meta File) представляют собой последовательность команд GDI и с точки зрения графической подсистемы Windows являются таким же «устройством», как монитор или принтер, но если информация, выводимая на монитор/принтер как бы «выпадает из обращения», то wmf-файл можно «проигрывать» многократно, передавать по Сети и так далее. Функция HDC CreateMetaFile(LPCTSTR lpszFile) создает метафайл, возвращая контекст устройства, на котором можно рисовать стандартными GDI-функциями, такими как LineTo или Rectange, а функция PlayMetaFile(HDC hdc, HMETAFILE hmf) «проигрывает» метафайл, открытый функцией GetMetaFile(LPCTSTR lpszMetaFile), выводя его содержимое на заданное устройство, например, так: листинг 1: вывод метафайла на экран HDC DC; HMETAFILE h_meta; // объявляем переменные DC = GetDC(0); // получаем контекст для вывода h_meta = GetMetaFile("demo.wmf"); // открываем метафайл... PlayMetaFile(DC, h_meta); // ...и «проигрываем» его Функции CreateMetaFile/PlayMetaFile/GetMetaFile формально считаются устаревшими, однако поддерживаются всеми Windows-подобными системами для совместимости. Начиная с 9x, возможности метафайлов были значительно расширены, и появился новый формат - emf (Enhanced Metafile), окруженный новыми функциями: CreateEnhMetaFile/PlayEnhMetaFile/GetEngMetaFile. Они также поддерживают выполнение машинного кода, поэтому с точки зрения безопасности оба формата тождественны друг другу. Функции, обрабатывающие метафайлы, реализованы внутри GDI32.DLL. Именно здесь и сидит уязвимость. Библиотека shimgvw.dll - это всего лишь высокоуровневая «обертка», используемая некоторыми приложениями для обработки изображений, в то время как другие напрямую работают с GDI. К статье прилагается программа, демонстрирующая основные приемы работы с метафайлами, ты найдешь ее на нашем диске. уязвимые системы В своем бюллетене (support.microsoft.com/kb/912840) Microsoft официально подтверждает уязвимость следующих систем: Windows Server 2003 SP0/SP1 (Standard, Datacenter, Enterprise и Web Edition), XP SP0/SP1/SP2 (Home и Professional), Windows 2000 SP0/SP1/SP2/SP3/SP4 (Professional, Advanced и Datacenter Server) и Windows 98/Millennium. Уязвимости подвержены практически все платформы: x86, x64 и Itanium. Довольно внушительный список, к тому же в нем не упомянута Windows 3.x и некоторые UNIX-системы, добросовестно поддерживающие вражеский wmf-формат. В частности, сообщается об уязвимости популярного эмулятора wine и Mac OS. Кошмар! Или… еще одна раздутая сенсация? Эксперименты мыщъх'а показывают, что дела обстоят не так уж и плохо. Могло быть и хуже. Начнем с того, что, в отличие от печально известных дыр в SQL и DCOM RPC, wmf-файлы не поддерживают автоматическое размножение червей. Жертва должна загрузить метафайл из сети и попытаться его отобразить. Имеется множество сообщений, что Internet Explorer и Outlook Express автоматически «воспроизводят» wmf-файлы, указанные в тэге IMG, и это действительно так, однако лично мне ни один из эксплойтов заставить работать так и не удалось (W2K SP4 IE 6.0), причем IE отображает только расширенные (emf) метафайлы и только те из них, что имеют расширение wmf/emf, но не gif или jmp. |