Hoşgeldin Misafir

Apache HTTP/2'de Double-Free: Tek İstekle Sunucuyu Çökertmek (CVE-2026-23918)

Conrado Sol

29 Nis 2026
62 Mesaj

Aktiflik

Seviye

Deneyim

TIM / GÖREV:
mod_http2 modülünde bir açık var. Apache HTTP Server 2.4.66 ve öncesini etkiliyor.

Tek bir kötü niyetli istek yetiyor sunucuyu etkilemeye. Bazı sunucularda kod çalıştırmaya kadar gidebiliyor.

Önce HTTP/2 ne diye kısaca bakalım:

Eski HTTP/1.1de tarayıcı her dosya için ayrı bağlantı açıyordu. HTTP/2 tek bağlantının üzerinden paralel "stream" denen kanallar açıyor.

Her stream küçük paketlere bölünüyor, bu paketlere "frame" deniyor. yani stream bir konuşma, frame ise o konuşmadaki tek tek cümleler.

Saldırgan iki frame'i sırayla gönderiyor. Önce HEADERS (yeni bir stream başlatma frame'i) sonra hemen ardından RST_STREAM (stream'i iptal etme frame'i).

Normalde bu iki frame arası biraz boşluk olur ve sunucu yeni stream'i defterine kaydeder. ama burada saldırgan o boşluğu vermiyor.

İşte tam orada hata patlıyor. mod_http2 stream'i resmi olarak kaydetmeden iptal isteğini görüyor. ayırdığı belleği bir kez serbest bırakıyor.

sonra "stream zaten iptal" diye tekrar serbest bırakmaya çalışıyor. aynı belleği iki kez free etmek programlama dünyasında "double-free" deniyor ve tehlikeli sonuçlar doğuruyor.

Kod:
HEADERS frame   -  stream id=1 açılıyor
RST_STREAM frame -  stream id=1 iptal (ama daha kayıt olmamıştı)
sunucu hafızayı iki kez serbest bırakıyor - down


ne oluyor peki? en yumuşak senaryo: Apache process'i çöküyor. sunucu yeniden başlasa bile saldırgan komutu tekrarlıyor ve site sürekli düşüyor. yani DoS yani hizmet engelleme.

kötü senaryo daha can sıkıcı. Debian paketinden kurulan Apache ve resmi Docker image'ları farklı bir bellek allocator (APR mmap) kullanıyor.

orada double-free saldırganın bellekteki bazı yapıları kontrol etmesine izin verebiliyor. araştırmacılar bunun üzerinden uzaktan kod çalıştırma (RCE) ihtimalini doğruladı. yani saldırgan sunucuda komut çalıştırabilir hale geliyor.

henüz aktif sömürü teyit edilmedi ama elimizde hazır kod varken bunun süresi pek uzun olmaz.

çözüm net. Apache 2.4.67 güncellemesi 4 Mayıs'ta çıktı ve yamayı içeriyor. mod_http2 kullanmıyorsan modülü devre dışı bırakmak da geçici çözüm. ama HTTP/2 default geliyor production'da. çoğu admin kapalı olduğunu sanıyor ama açık çıkıyor.

Kod:
apachectl -M | grep http2

bu komutla mod_http2 yüklü mü kontrol edebilirsin. yüklüyse versiyona bakman lazım.

Kod:
httpd -v

2.4.66 veya altıysa hemen güncelle. paket yöneticinden gelmiyorsa Apache resmi sitesinden 2.4.67'yi al.

bu açığın asıl tehlikeli yanı şu: HTTP/2 günümüz internetinin omurgası. tarayıcılar default tercih ediyor, CDN'ler kullanıyor, neredeyse her büyük site çalıştırıyor. yani patch çıkmadan önce tarama yapan biri olsa hedef listesi çok büyük.