exploit-review-0x1B

exploits review\\ 1Bh выпуск

крис касперски ака мыщъх, a.k.a. nezumi, a.k.a elraton, a.k.a. souriz, no-email

в середине августа Microsoft порадовала нас очередной порцией заплаток, допускающих удаленный захват управления системой. практически все они относятся к MS Office, файлы которого давно стали международным стандартом де-факто и сколько непатченных систем можно захачить — остается только гадать…

brief:Microsoft подтвердила и исправила сразу 4 критических ошибки в Excel, обнаруженных различными независимыми исследователями. Первая ошибка связана с косой обработкой записи (record) AxesSet, размещенной в диаграмме (chart), встроенной в электронную таблицу (spreadsheet). Записи этого типа (используемые для задания позиций и размеров координатных осей диаграммы) являются недокументированными и отсутствуют в официальном описании формата файлов Office, недавно обнародованного Microsoft, однако, OpenOffice (поставляющийся в исходных тестах) все прекрасно поддерживает, открывая огромный творческий простор для экспериментов. Физически, AxesSet представляет собой массив индексов массива координатных осей диаграммы, причем значения индексов не проверяется и в специальным образом сконструированном файле они могут указывать куда угодно, далеко выходя за пределы «родного» массива, что в общем случае приводит к «удару» по памяти и непредсказуемому поведению Excel'я, как правило, заканчивающегося его падением. Возможность удаленного захвата управления не исключена, хакеры уже работают в этом направлении, правда пока не очень успешно. Уязвимости присвоен кодовый номер CVE-2008-3004 и подробнее о ней прочитать можно на: http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2008-3004, labs.idefense.com/intelligence/vulnerabilities/display.php?id=740 и www.securityfocus.com/bid/30638.
Еще одна ошибка индексного переполнения (на этот раз уже связанная с документированной записью типа «RECORD», размещенной внутри электронной таблицы) проходит под кодовым номером CVE-2008-3005. Так же, как и в предыдущем случае, здесь отсутствует какой бы то ни было контроль индексов, позволяя им выходить за границы массива, модифицируя любую ячейку стековой памяти по усмотрению атакующего. А вот это уже серьезно! И уязвимость носит отнюдь не академический, а вполне реалистический характер. Впрочем, на поздних версиях Офиса, откомпилированных новым Си компилятором от Microsoft, хакер не может ни подменить адрес возврата из функции (он проверяется перед выходом), ни даже перезаписать указатели на процедуры (они зашифрованы псевдослучайным числом, генерируемом при запуске приложения), SEH-обработчики так же убраны из стека и вынесены в специальную секцию PE-файла. Все это усложняет атаку, хотя и не делает ее невозможной, тем более младшие версии Офиса (скажем, довольно популярный Office XP) практически никак не защищены от хакерской агрессии, что дает атакующим зеленый свет. Подробную карту маршрута можно отрыть на securityfocus.com/bid/30639 и http://labs.idefense.com/intelligence/vulnerabilities/display.php?id=741.

Третья ошибка реализует тривиальное переполнение буфера (что так же ведет к возможности захвата управления). Excel поддерживает файлы формата BIFF, только поддержка эта выполнена не вполне корректно и при обработке записи типа Country (8Ch), программа выделяет буфер фиксированного размера, копируя туда пользовательские данные, проверка длины при этом не производится, в результате чего содержимое ячеек памяти, находящихся за концом буфера, затирается и Excel падает, однако, передача управления на shell-код вполне возможна, особенно в ранних версиях Офиса. Ошибке присвоен номер CVE-2008-3006 и более подробную информацию о ней можно найти на http://www.zerodayinitiative.com/advisories/ZDI-08-048/, а так же на http://www.securityfocus.com/bid/30640/info.
О поледеней (четвертой по счету) ошибке с номером CVE-2008-3003 известно меньше всего и мыщъху пришлось повозиться с дизассемблером, прежде чем удалось разобраться что к чему. Выяснилось, что баг существует только в Office 2007 и связан с удаленным доступом к данным .xlsx-файла, явно защищенным паролем от посторонних личностей, но, поскольку, Excel кэширует пароль (чтобы не спрашивать его у пользователя всякий раз), сохраняя его непосредственно в самом файле, то атакующий может захачить его без особых проблем. Во всяком случае в теории. А на практике необходимо, чтобы при создании файла использовались фрагменты других файлов, заботливо начиненные «взрывчаткой», причем, «заимствование» фрагментов должно осуществляться напрямую через буфер обмена без всяких «посредников» типа FAR'а, удаляющих оттуда все ненужное. Ну а кто у нас копирует через FAR? Уж точно не секретарши. С другой стороны, навязать жертве свои ресурсы для перетаскивания их в секретный документ — крайне затруднительно, и тут без социальной инженерии тут не обойтись, ну а чисто техническую информацию можно найти на: http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2008-3003. Прежде, чем заканчивать с Excel'ем стоит сказать, что для изготовления exploit'ов нам необходимо либо воспользоваться официальной спецификацией на Excel формат от Microsoft, доступной на http://download.microsoft.com/download/0/B/E/0BE8BDD7-E5E8-422A-ABFD-4342ED7AD886/Excel97-2007BinaryFileFormat(xls)Specification.pdf (Excel 97-2007, .xls) и http://download.microsoft.com/download/0/B/E/0BE8BDD7-E5E8-422A-ABFD-4342ED7AD886/Excel2007BinaryFileFormat(xlsb)Specification.pdf (Excel 2007, xlsb), либо же сравнить оригинальную и залатанный Excel на предмет поиска различий. Сравнивать лучше всего Excel Viewer. Он и бесплатный и весит всего несколько метров, так что разобраться будет нетрудно. Просто идем на http://download.microsoft.com/download/9/e/f/9ef13e5d-2116-40de-ab97-310811f0f3ca/xlviewer.exe, устанавливаем Excel Viewer на виртуальную машину, делаем бэкап всех файлов, качаем патч: http://download.microsoft.com/download/c/a/8/ca83a37c-2760-439e-9a5c-11485f260bac/office2003-KB951589-FullFile-ENU.exe, устанавливаем и смотрим различия, которые в наглядном виде отображает бесплатный PatchBiff (полноценный аналог коммерческого BinDiff'а, стоящего немерянных денег): http://cgi.tenablesecurity.com/tenable/dl.php?p=patchdiff2-2.0.3.zip

targets:CVE-2008-3004: Excel 2K SP3, 2K2 SP3, 2K3 SP2/SP3, Excel Viewer 2003;
CVE-2008-3005: Excel 2K SP3, 2K2 SP3,
CVE-2008-3006: Excel 2K SP3, 2K2 SP3, 2K3 SP2/SP3, 2K7, 2K7 SP1, Viewer 2003/SP1;
CVE-2008-3003: Excel 2K7, 2K7 SP1;

exploits:сплоиты находятся в стадии активной разработки и пишутся мыщхъхем по заказу Endeavor Security, Inc для тестирования набора сигнатур, крупнейшим поставщиком которого она, собственно говоря, и является. поскольку, никакие права фирме не передается, то после выпуска сигнатур exploit'ы вместе с исходным кодом будут опубликованы и выложены на мыщъхином сервере: http://nezumi.org.ru/souriz/hack/;

solution:установить заплатки от Microsoft, доступные всем желающим (т.е. без проверки подлинности лицензии по адресу): http://www.microsoft.com/technet/security/bulletin/ms08-043.mspx;

Рисунок 1 запись AxesSet в официальной спецификации XLS формата от Microsoft даже не упоминается, между тем она есть!!!

brief:в PowerPoint'е найдено 3 критических ошибки, допускающих удаленный захват управления, что реально высаживает на измену. Если .xls файлы из сети качают немногие, а по почте получают их в основном от более или менее доверенных лиц, то ситуация с .ppt прямо противоположная. В сети болтаются тысячи презентаций в PowerPoint форматеи не качать их просто невозможно. К счастью для честных тружеников клавиатуры и к большому хакерскому огорчению, две из трех ошибок воздействуют только на редко кем используемый PowerPoint Viewer, зато третья распространяется на все версии Офиса, допуская передачу управления на shell-код со всеми вытекающими отсюда последствиями. Но не будем забегать вперед и начнем излагать материал по порядку. Первая уязвимость (CVE-2008-0120) связана с классической ошибкой строкового переполнения MFC CSting, выделяющей память в куче, а куча это такое дело… достаточно хорошо защищенное в последних версиях XP и Висле, а потому, чтобы забросить на целевую машину shell-код хакеру придется изрядно потрудиться. Технически подробности (из уст первооткрывателя дыры) находятся на: http://labs.idefense.com/intelligence/vulnerabilities/display.php?id=739.
Вторая ошибка (CVE-2008-0121), кстати сказать, обнаруженная тем же самым исследовательским коллективом, очень похожа на первые три ошибки в Excel'е – отсутствие проверки границ массива при обработке индексов, выход за пределы которого в данном случае дает замечательную возможность перезаписи указателей на виртуальные функции, что обеспечивает быстрый и надежный захват управления, к сожалению, работающий только под PowerPoint Viewer'ом. Ну и у кого же, интересно, он установлен?! Впрочем, почитать об этой дыре не помешает: http://labs.idefense.com/intelligence/vulnerabilities/display.php?id=738
Третья дыра, затрагивающая все версии Офиса, проходит под номером CVE-2008-1455 и связана с ошибкой парсинга .ppt файлов, вызывая традиционное переполнение буфера с возможностью захвата управления. Подробностей о ней известно немного и мыщъх все еще ковыряется дизассемблером, испытывая жуткую нехватку новых версий Офиса, за которыми он буквально через считанные часы улетает в Москву, ибо в окрестностях мыщъхиной норы такие вещи не купишь, ну а пока мыщъх летает, можно почитать те огрызки инфы, что есть: http://www.securityfocus.com/bid/30579/info;

targets:CVE-2008-0120: PowerPoint Viewer 2003;
CVE-2008-0121: PowerPoint Viewer 2003;
CVE-2008-1455: PowerPoint 2K SP3, 2K2 SP3, 2K3 SP2/SP3, 2K7, 2K7 SP1, Viewer 2K3;

exploits:сплоиты находятся в стадии активной разработки и пишутся мыщхъхем по заказу Endeavor Security, Inc для тестирования набора сигнатур, крупнейшим поставщиком которого она, собственно говоря, и является. поскольку, никакие права фирме не передается, то после выпуска сигнатур exploit'ы вместе с исходным кодом будут опубликованы и выложены на мыщъхином сервере: http://nezumi.org.ru/souriz/hack/

Рисунок 2 официальная информация по дырам в PowerPoint'е от Microsoft

solution:установить заплатки от Microsoft, доступные всем желающим (т. е. без проверки подлинности лицензии по адресу): http://www.microsoft.com/technet/security/bulletin/ms08-051.mspx; исследователям на заметку: в разных версиях Офиса обновляются разные файлы, список которых представлен ниже в таблице 1. Сам же формат .ppt файлов берется с официального сайта Microsoft: http://download.microsoft.com/download/0/B/E/0BE8BDD7-E5E8-422A-ABFD-4342ED7AD886/PowerPoint97-2007BinaryFileFormat(ppt)Specification.pdf;

Microsoft Office PowerPoint 2007
File nameFile versionFile sizeDateTime
Powerpnt.exe12.0.6300.5000467,49613-Dec-200706:42
Msppt.olb12.0.6300.5000265,79207-Dec-200707:17
Ppcore.dll12.0.6307.50007,998,50416-Mar-200808:12
Pptpia.dll12.0.6300.5000250,92807-Dec-200707:17
Microsoft Office PowerPoint 2007 converter
File nameFile versionFile sizeDateTime
Pptcnv.dll12.0.6320.50001,768,44818-Jun-200816:46
Pxbcom.exe12.0.6300.500071,74407-Dec-200707:17
Microsoft Office PowerPoint 2003
File nameFile versionFile sizeDateTime
Powerpnt.exe11.0.8227.06,421,51204-Jul-200801:33
Microsoft Office PowerPoint Viewer 2003
File nameFile versionFile sizeDateTime
Pptview.exe11.0.8164.01,661,28019-Apr-200713:49
Gdiplus.dll11.0.8165.01,701,21630-Apr-200714:43
Intldate.dll11.0.5510.064,06414-Jul-200322:57
Ppvwintl.dll11.0.8161.0131,42422-Mar-200719:05
Pvreadme.htmNot Applicable4,18919-Jun-200812:24
Saext.dll11.0.8161.0218,45622-Mar-200719:25
Unicows.dll1.0.3703.0246,42430-Oct-200212:21
Microsoft PowerPoint 2002
File nameFile versionFile sizeDateTime
Powerpnt.exe10.0.6842.06,095,88006-May-200817:13
Microsoft PowerPoint 2000
File nameFile versionFile sizeDateTime
Powerpnt.exe9.0.0.89694,259,89226-Mar-200800:55

Таблица 1 файлы PowePoint'а, обновляемые заплаткой от MS

brief:набор графических фильтров, используемых всеми приложениями Офиса, так же не свободен от ошибок, и этих ошибок там просто тьма. Последнее обновление от Microsoft, выпущенное 12 августа сразу затыкает 5 крупных дыр, связанных с дефектами обработки файлов следующих форматов: WPG, EPS, PICT и BMP, причем в простеньком PICT обнаружено сразу две дыры! Это же надо было так постараться! Где же они такую траву берут?! И ведь даже не отсыпают! Допустить столько ляпов на трезвую голову… Ну, в Microsoft последнее время вообще много индусов. А в Индии растет нереально термоядерная трава, срывающая крышу так, что после этого ошибки переполнения в BMP уже никого не удивляют. BMP-уязвимости присвоен номер CVE-2008-3020, а гнездится она в BMPIMP32.FLT файле, считывающим BMP заголовок, содержащий среди прочего количество цветов, при превышении которого происходит разрушение кучи, допускающее возможность захвата управления по вполне стандартному сценарию: labs.idefense.com/intelligence/vulnerabilities/display.php?id=736, после подробно описывать дыры в остальных форматах мыщъх'у откровенно лениво, поэтому, ограничимся тем, что перечислим их номера. CVE-2008-3019 — отвечает за ошибку в EPS, дыры в PICT награждены номерами CVE-2008-3018 и CVE-2008-3021 (по одному номеру на каждую дыру), а WPG (так же вызывающий контролируемое разрушение кучи) проходит под номером CVE-2008-3460 и уже довольно детально исследован хакерами: labs.idefense.com/intelligence/vulnerabilities/display.php?id=736.

targets:MS Office 2K SP3, Office XP SP3, Office 2K3 SP2, Office Project 2K2 SP1, MS Works 8;

exploits:сплоиты находятся в стадии активной разработки и пишутся мыщхъхем по заказу Endeavor Security, Inc для тестирования набора сигнатур, крупнейшим поставщиком которого она, собственно говоря, и является. поскольку, никакие права фирме не передается, то после выпуска сигнатур exploit'ы вместе с исходным кодом будут опубликованы и выложены на мыщъхином сервере: http://nezumi.org.ru/souriz/hack/;

Рисунок 3 техническая информация о дыре на сайте iDefenseLabs

solution:установить заплатки от Microsoft, доступные всем желающим (т.е. без проверки подлинности лицензии по адресу): http://www.microsoft.com/technet/security/bulletin/ms08-044.mspx, если же заплатку по каким-либо причинам устанавливать не хочется, то можно воспользоваться временным обходным решением. Делается это так. Открываем папку \Program Files\Common Files\Microsoft Shared\Grphflt\, находим там файл имя_фильтра.ftl (например, для BMP это будет BMPIMP32.FLT), переименовываем его, например, в BMPIMP32.FLT_, после чего создаем пустой файл BMPIMP32.FLT. Несмотря на отсутствие фильтра BMP будет можно по прежнему импортировать в Офис (т. к. там в дополнение к набору фильтров имеются и внутренние конверторы), продолжив работать в безопасности, сухости и комфорте. Про остальные файлы такого сказать нельзя, однако, в реальной жизни они уже давно не встречаются, а вот подхватить «заразу», заботливо подкинутую хакером с преднамеренно переименованным расширением, уже не получится. У нас против нее иммунитет по типу вырезанных гланд (удаленных графических фильтров). Решение, конечно, радикальное, но, учитывая, что это не первая и, очевидно, далеко не последняя заплатка от Microsoft, то радикальные меры оказываются намного более предпочтительными.

Рисунок 4 http://blogs.technet.com/swi/ — один из немногих Microsoft блогов снабжающий нас действительно объективной информации о безопасности

Свершилось! Компания Tenable-Security взяла и выпустила некоммерческий аналог знаменитого коммерческого BinDiff'а от Zynamics, обозвав его PatchDiff'ом, причем, не просто выпустила, а даже обогнала его по функциональности. Что такое BinDiff и зачем он вообще нужен, когда есть куча всяких fc.exe, сравнивающих бинарные файлы, а WinDiff замечательно сравнивает текстовые. Казалось бы, ничего нового тут не придумаешь… На самом деле, BinDiff совсем не тоже самое, что fc.exe. Во-первых, это не самостоятельный продукт, а plug-in для IDA-Pro, а, во-вторых, он сравнивает файлы довольно изощренным образом, работая на высоком абстрактом уровне. Анализируя поток управления (со всеми ветвлениями) он разбивает его на блоки и, игнорируя мелкие различия, занимается поиском масштабных изменений, отыскивая похожие или полностью идентичные функции, что очень полезно при анализе заплаток. Ведь чтобы написать рабочий exploit, необходимо знать какая именно дыра была заткнута, а для этого необходимо «запеленговать» измененный код. Побайтовое сравнение ничего не дает, поскольку заплатка представляет собой полностью перекомпилированный файл, причем, как правило с другими ключами оптимизации или даже совершенно другой версией компилятора. Короче, смещения всех функций «уплывают», а в самом коде обнаруживается огромное количество несущественных изменений, «ослепляющих» тривиальное побайтовое сравнение. Зато анализ потока управления (в смысле ветвлений) рулит только так. Конечно, без ложных срабатываний не обходится, но дополнительные проверки и другие подобные изменения обнаруживаются без всякого труда, причем визуализируются в наглядной графической форме. Скачать PatchDiff можно в любое время дня и ночи: http://cgi.tenablesecurity.com/tenable/dl.php?p=patchdiff2-2.0.3.zip.

Рисунок 5 PatchDiff в действии

15 февраля 2008 года, Microsoft выложила в открытый доступ достаточно полную спецификацию формата бинарных файлов, используемых в Офисе версий 97-2007, что радует как создателей бесплатного программного обеспечения, вынужденных поддерживать эти форматы в своих приложениях, так и хакеров, у которых буквально крышу срывает от радости. Вряд ли стоит объяснять насколько упрощается анализ заплаток на тот же MS Word при наличии спецификации на .doc, но даже и без всяких заплаток — теперь можно осознанно экспериментировать с различными полями, пытаясь добиться их переполнения, что совсем нетрудно. А чем еще можно объяснить взрывной рост дыр, обнаруживаемых в Офисе с конца зимы этого года?! Если раньше хакерам приходилось блуждать впотьмах, то теперь все тайное стало явным! Впрочем, не стоит обольщаться. Microsoft изменила бы самой себе, если бы не оставила кучу недокументированных возможностей, кстати говоря, уже известных конкурентам и успешно поддерживаемых пакетом OpenOffice, исходные тексты которого окажутся замечательным подспорьем к документации, выложенной на http://www.microsoft.com/interop/docs/officebinaryformats.mspx#EAB.

Рисунок 6 невероятно, но факт! теперь спецификация на формат Офисных файлов открыта для всех желающих