CVE-2023-44487
IETF HTTP/2
2023-10-10
HTTP/2 contains a rapid reset vulnerability that allows for a distributed denial-of-service attack (DDoS).
Технический анализ и план устранения
Суть уязвимости
CVE-2023-44487, известная как «HTTP/2 Rapid Reset», эксплуатирует особенность обработки потоков в протоколе HTTP/2. Злоумышленник отправляет запрос на открытие потока (фрейм HEADERS) и немедленно отправляет фрейм отмены (RST_STREAM).
Поскольку стандарт HTTP/2 не ограничивает количество таких операций в секунду, атакующий может генерировать миллионы запросов, которые сервер обязан обработать на уровне протокола до того, как они будут отменены. Это приводит к критическому потреблению ресурсов CPU и памяти на стороне сервера, вызывая отказ в обслуживании (DDoS), при этом объем сетевого трафика может оставаться сравнительно небольшим.
Как исправить
Основной способ устранения — обновление серверного ПО до версий, в которых реализованы алгоритмы контроля скорости создания и сброса потоков.
Nginx Обновитесь до версий 1.25.3, 1.24.0 (с патчем) или выше.
apt update && apt upgrade nginx
Apache HTTP Server Обновитесь до версии 2.4.58 или выше.
apt update && apt upgrade apache2
Kubernetes (Ingress Nginx) Обновите контроллер до версии v1.9.4 или выше.
kubectl set image deployment/ingress-nginx-controller controller=registry.k8s.io/ingress-nginx/controller:v1.9.4
Microsoft IIS Установите последние накопительные обновления безопасности через Windows Update.
Install-WindowsUpdate -MicrosoftUpdate -AcceptAll -AutoReboot
Временные меры
Если немедленное обновление невозможно, примените следующие настройки для ограничения воздействия атаки.
Для Nginx (ограничение количества запросов в одном соединении):
Внесите изменения в конфиг (секция http или server):
keepalive_requests 1000;
http2_max_concurrent_streams 128;
Для Apache (ограничение параллельных потоков):
В файле конфигурации модуля mod_http2:
H2MaxSessionStreams 100
H2MaxAnyPriorityStreams 10
Использование Web Application Firewall (WAF): Настройте правила ограничения частоты (Rate Limiting) для HTTP/2 соединений на уровне Cloudflare, AWS WAF или локального решения.
Отключение HTTP/2 (Крайняя мера):
Если атака продолжается и другие меры не помогают, временно отключите поддержку HTTP/2, оставив только HTTP/1.1.
Для Nginx (удалите http2 из директивы listen):
listen 443 ssl;