Разбор эксплойта для СVE-2017-11826

Последний “вторник патчей” (17 октября) от Microsoft принес исправления для 62 уязвимостей, в том числе и патч, закрывающий критическую уязвимость “нулевого дня” СVE-2017-11826 во всех версиях Microsoft Office, которая эксплуатировалась в таргетированных атаках.

Эксплойт для этой уязвимости представляет собой RTF-документ, содержащий документ DOCX, который эксплуатирует СVE-2017-11826 в парсере Office Open XML.

Сам эксплойт находится в word/document.xml следующего содержания:

Согласно стандарту ECMA-376 для Office Open XML File Formats, валидный элемент font, описывающий используемые в документе шрифты, должен выглядеть следующим образом:

В теле эксплойта закрывающий тег </w:font> полностью отсутствует, а после открывающего <w:font> следует object-элемент <o:idmap/>, вызывающий type confusion в парсере OOXML. Для успешной эксплуатации уязвимости может использоваться любой object-элемент. Для прохождения одной из предшествующих эксплуатации проверок перед тегом <w:font> должен присутствовать элемент OLEObject, а длина содержимого атрибута name должна быть не менее 32 байт после конвертирования из UTF-8 в Unicode.

После конвертации из UTF-8 в Unicode E8 A3 AC E0 A2 80 преобразуется в EC 88 88 08.

При выполнении всех условий этот указатель будет разыменован и управление будет передано по содержимому этого адреса со смещением 4.

Для контроля содержимого памяти по адресу 0x088888EC атакующие применяют популярную технику Heap spraying с использованием компонентов ActiveX:

Эксплойт обходит ASLR и DEP с использованием ROP и гаджетов из msvbvm60.dll. Модуль msvbvm60.dll загружается из RTF-документа посредством CLSID, ассоциированного с этой библиотекой:


Первая часть ROP устанавливает значение регистра ESP:

Вторая часть ROP пропускается, она использовалась для установки регистра EIP на 0x088883EC. Последний “pop eax; retn” гаджет переместит адрес 0x729410D0 в EAX. Это адрес на указатель VirtualProtect в области импортов msvbvm60.dll из Kernel32.dll:

Указатель VirtualProtect используется в следующем ROP гаджете для вызова функции VirtualProtect(0x8888C90, 0x201, 0x40, 0x72A4C045), после чего управление передается в шеллкод по адресу 0x8888F70, который осуществляет расшифровку и выполнение DLL-файла:

Защитные решения “Лаборатории Касперского” детектируют эксплойты для СVE-2017-11826 как:

  • Exploit.MSWord.Agent.ix;
  • Exploit.MSOffice.CVE-2017-11826.a;
  • HEUR:Exploit.MSOffice.Generic.

IOC

cb3429e608144909ef25df2605c24ec253b10b6e99cbb6657afa6b92e9f32fb5

Публикации на схожие темы

Leave a Reply

Your email address will not be published. Required fields are marked *