exploit paylaşım grubumuz: t.me/HTTPwnn

HTTP/2BOMB nedir? nasıl saldırılır?

  • Konu başlatıcı Konu başlatıcı sh3d0w
  • Başlangıç Tarihi Başlangıç Tarihi

sh3d0w

WarNight Member
Katılım
25 Haz 2026
Mesaj
65
Reaksiyon
40
Puan
18
xentr_thread_starter

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 (a:) ekler ve ardından binlerce kez bu başlığa 1 byte'lık bir indeks numarası ile referans verir .

Alı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)
Bu sayede, saldırgan 15 MB'lık bir veri göndererek sunucuda 1.2 GB'a kadar bellek tüketimi yaratabilir. Amplifikasyon oranı, sunucuya göre değişir :



SunucuAmplifikasyon 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
Sonuç: 100 Mbps bağlantı ile yaklaşık 10-20 saniyede 32 GB bellek tüketimi mümkündür .


Etkilenen Sistemler​



SunucuEtkilenen SürümlerDüzeltilmiş Sürüm
nginx< 1.29.81.29.8+
Apache httpd2.4.17 ≤ sürüm ≤ 2.4.67mod_http2 v2.0.41+ / httpd 2.4.68+
Microsoft IISWindows Server 2025 dahilResmi yama yok
Envoy≤ 1.37.2Resmi yama yok
Cloudflare Pingora≤ 0.8.0Resmi 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ı​


ParametreAçıklama
--connectionsEşzamanlı HTTP/2 bağlantı sayısı
--streamsHer bağlantıdaki akış sayısı
--refsHPACK tablo referans sayısı
--initial-window 0Sıfır pencere ile yanıtı bloklar
--holdBağlantıyı kaç saniye tutacağı
--drip-intervalHer 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

CVEAçıklamaFark
CVE-2026-49975HTTP/2 Bomb (HPACK + Window Stall)Bellek tüketimi, tek bağlantı
CVE-2023-44487Rapid ResetCPU tüketimi, RST_STREAM spam
MadeYouResetSunucuyu kendi akışlarını sıfırlamaya zorlamaProtokol ihlalleri ile RST_STREAM tetikleme

Kaynaklar​

 
Geri
En Üst