Итак, уязвимость находиться в модуле authplay.dll, при обработке специально сформированного SWF. Корнем зла на этот раз оказался тег DoABC, использующийся при вставке swf в pdf-файлы. Во вредоносном SWF-файле заменен всего лишь один опкод, но именно он и приводит к ошибке. Оригинальный байт-код 0x66 (GetProperty) заменен на 0x40 (newfunction).

Судя по всему уязвимость была найдена с применением методов фаззинга файловых форматов.
Но выполнению SWF предшествует heap-spraying, используется для обхода DEP.



В итоге мы получаем ret2lib в BIB.DLL, после чего начинается выполнение шелл-кода. Подобная техника обхода DEP была использована в нашумевшей атаке codname: Aurora. Сейчас она приминяется очень часто в различных эксплойтах.

Для того чтобы попасть в библиотеку BIB.dll используются техники return-oriented programming (ROP), недостаток этого метода в достаточно длительном времени работы. Например, публичный эксплойт на CVE-2010-1297, опубликованный в рамках Metasploit. Оказался очень медленным и нестабильным в работе.
На днях была опубликована программа BH'2010 USA та, что проводиться в Вегасе и на ней было замечено достаточно большое количество докладов посвященных ROP. Конец лета будет интересным :)
Напоследок небольшая демка, которую я записал для корпоративного блога, но мне она нравится и пожалуй продублирую ее здесь тоже :) На ней отчетливо видно, как не быстро отрабатывает ROP shellcode (из Metasploit'а работает как минимум в двое медленее). В качестве сандтрека была взята заглавная тема к фильму Pi.
Материал по теме:
Подробное исследование от Zynamics
Исследование от Symantec
Исследование от Websense
Что самое интересное, подобная дырка действительно находится элементарно даже ну самым примитивным мутационным фаззером. Странно, что столь поверхностные баги в столь распостранённом софте обнаруживаются до сих пор, уже который год подряд.
ОтветитьУдалитьмне кажется, что ROP работает секунды....
ОтветитьУдалитьМожет тормозит все из-за heap-spray
Алекс Сотиров и Дино Дай Зови говорят:
ОтветитьУдалить"С прогрессом баги находятся все проще и проще, а вот написание эксплойтов становится все сложнее и сложнее..."
даже графики они показывали соответсвующие)
Вот этот эксплойт - явный пример. Бага находится тупо фаззингом, зато эксплойт сложный, в три этапа работающий... чего стоит только то, как тут решили задачу замены стекового фрейма на страницу из heap-spray (что бы ESP=0x0C0C0C0C)... красота, тут даже пример возвратно-ориентированого программирования без самих "возвратов" (без окончания на RETN)
Мне тоже удивительно, что Adobe до сих пор не завела у себя группу профессиональных людей, которые будут заниматься анализом безопасности их продуктов внутри компании. В том же MS этим занимается достаточно большое кол-во людей и багов после внедрения такого процессинга стало несколько меньше. Ну или замечать их стали раньше не зависимо от появления паблик сплойтов :)
ОтветитьУдалитьОсновное время съедает действительно heap-spray, а этапов выполнения в анализируемом сплойте было аж 5 штук. На последнем дропался даунлодер и ...
>>Сейчас она приминяется
ОтветитьУдалитьC0101010: grammar error