HTTP/2 bomb saldırısı nedir?
HTTP/2 Bomb, günümüzdeki çoğu büyük web sunucusunu (nginx, Apache httpd, Microsoft IIS, Envoy, Cloudflare Pingora) etkileyen, uzaktan hizmet reddi (DoS) saldırısıdır. Saldırgan, tek bir bağlantı üzerinden, HTTP/2 protokolünün iki temel özelliğini birleştirerek, sunucunun belleğini saniyeler içinde tüketebilir .Bu saldırı, CVE-2026-49975 numarasıyla izlenmekte ve CVSS 3.1 skoru 9.8 ile Kritik olarak değerlendirilmektedir .
Saldırının Çalışma Prensibi
Saldırı, iki aşamalı bir kombinasyondan oluşur:1. HPACK Sıkıştırma Bombası (HPACK Compression Bomb)
HTTP/2, başlıkları sıkıştırmak için HPACK algoritmasını kullanır. HPACK, daha önce gönderilen başlıkları dinamik bir tabloda saklar. Saldırgan, bu tabloya neredeyse boş bir başlık (aAlıcı (sunucu), her bir 1 byte'lık referans için:
- Dinamik tablodan tam başlığı alır
- Her başlık için ayrı bir bellek alanı tahsis eder (~70-5700 byte amplifikasyon)
| Sunucu | Amplifikasyon Oranı |
|---|---|
| Envoy 1.37.2 | ~5,700:1 |
| Apache httpd 2.4.67 | ~4,000:1 |
| nginx < 1.29.8 | ~70:1 |
2. Akış Kontrolü Kilitleme (Flow-Control Window Stall)
HPACK bombası tek başına yeterli değildir çünkü istek tamamlandığında bellek serbest kalır. Saldırgan bu noktada HTTP/2'nin akış kontrol mekanizmasını kullanır :- SETTINGS_INITIAL_WINDOW_SIZE=0 göndererek sunucunun yanıt göndermesini engeller
- Periyodik olarak 1 byte'lık WINDOW_UPDATE çerçeveleri göndererek bağlantıyı canlı tutar
- Sunucu, yanıt gönderemediği ve bağlantı kapatılmadığı için tüm bellek tahsislerini sonsuza kadar tutar
Etkilenen Sistemler
| Sunucu | Etkilenen Sürümler | Düzeltilmiş Sürüm |
|---|---|---|
| nginx | < 1.29.8 | 1.29.8+ |
| Apache httpd | 2.4.17 ≤ sürüm ≤ 2.4.67 | mod_http2 v2.0.41+ / httpd 2.4.68+ |
| Microsoft IIS | Windows Server 2025 dahil | Resmi yama yok |
| Envoy | ≤ 1.37.2 | Resmi yama yok |
| Cloudflare Pingora | ≤ 0.8.0 | Resmi yama yok |
PoC (Proof of Concept) Çalıştırma
UYARI: Bu PoC yalnızca size ait sistemlerde veya izinli test ortamlarında çalıştırılmalıdır. Başkalarına ait sistemlere karşı kullanılması yasa dışıdır!
Gereksinimler
- Docker
- Python 3 (standart kütüphane yeterli)
Nginx/OpenResty PoC (GitHub - xero/hbomb-slowloris-poc-lab)
git clone https://github.com/xero/hbomb-slowloris-poc-lab
cd hbomb-slowloris-poc-lab
./run.sh build
./run.sh start vuln
./run.sh attack-prod
./run.sh monitor
Apache httpd PoC (CVE-2026-49975)
git clone https://github.com/0xc03307b/CVE-2026-49975
cd CVE-2026-49975
docker build -t cve-2026-49975 .
docker run -d --name cve-2026-49975 --memory 8g -p 10081:80 cve-2026-49975
docker stats cve-2026-49975
python3 poc.py \
--host localhost \
--port 10081 \
--connections 10 \
--streams 100 \
--refs 4091 \
--initial-window 0 \
--hold 300 \
--drip-interval 2 \
--drip-bytes 1
PoC Parametre Açıklamaları
| Parametre | Açıklama |
|---|---|
| --connections | Eşzamanlı HTTP/2 bağlantı sayısı |
| --streams | Her bağlantıdaki akış sayısı |
| --refs | HPACK tablo referans sayısı |
| --initial-window 0 | Sıfır pencere ile yanıtı bloklar |
| --hold | Bağlantıyı kaç saniye tutacağı |
| --drip-interval | Her kaç saniyede 1 byte gönderileceği |
Korunma Yöntemleri
Yazılım Güncellemesi (Öncelikli)
- nginx: 1.29.8 veya üstüne yükseltin (max_headers direktifi varsayılan olarak 1000 başlık ile gelir)
- Apache httpd: mod_http2 v2.0.41+ veya httpd 2.4.68+'a yükseltin
- IIS/Envoy/Pingora: Resmi yama çıkana kadar aşağıdaki geçici önlemleri uygulayın
Yapılandırma İyileştirmeleri
nginx için :http {
max_headers 1000;
http2_max_concurrent_streams 128;
keepalive_requests 1000;
limit_conn addr 10;
}
Apache httpd için :
LimitRequestFieldSize 8190
Protocols http/1.1
Genel Önlemler
- HTTP/2 sonlandırma noktasında "maksimum çözümlenmiş başlık boyutu" ve "maksimum başlık sayısı" olmak üzere iki ayrı limit yapılandırın
- Durdurulmuş (stalled) akışlar için, WINDOW_UPDATE aktivitesinden bağımsız, katı bir yaşam süresi sınırı belirleyin
- Çalışan süreçler için bellek limiti kullanın (cgroups, ulimit, container limitleri)
- Mümkünse HTTP/2'yi geçici olarak devre dışı bırakın
| CVE | Açıklama | Fark |
|---|---|---|
| CVE-2026-49975 | HTTP/2 Bomb (HPACK + Window Stall) | Bellek tüketimi, tek bağlantı |
| CVE-2023-44487 | Rapid Reset | CPU tüketimi, RST_STREAM spam |
| MadeYouReset | Sunucuyu kendi akışlarını sıfırlamaya zorlama | Protokol ihlalleri ile RST_STREAM tetikleme |