- Son 7 gün
- CWE-770
CVE-2026-113431
cowlib HTTP/2 çözümlenmiş başlık boyutu sınırsız: HPACK ile bellek tükenmesi
- Yayımlandı
- Güncellendi
- 6 Kas 2026
- Açık yaşı
- 0 gün
- Kaydı açan
- EEF
Yönetici özeti
Bu açık, kimlik doğrulaması gerekmeden uzaktan tetiklenebilen ve sunucuların yanıt vermez hale gelmesine yol açabilen bir hizmet kesintisi riskidir. Bildirilen bir veri sızıntısı yoktur, ancak HTTP/2 kullanan web hizmetlerinin çökmesi iş sürekliliğini doğrudan etkileyebilir. Etkilenen sistemlerin hızla gözden geçirilmesi önerilir.
ÖzetTürkçe
cowlib kütüphanesinin 2.7.0 ve sonrası sürümlerinde, HTTP/2 HEADERS bloklarını çözen cow_http2_machine modülü, çözümlenmiş başlık listesinin boyutunu sınırlamaz. Saldırgan, HPACK dinamik tablosunu ve indeksli alanları kullanarak yaklaşık 100 bayt ağ trafiğiyle yaklaşık 390 KB'lık bir başlık listesi üretebilir. Bu verileri akış başına kopyalayan Cowboy gibi sunucular, bellek tükenmesine maruz kalır.
Saldırgan ne yapabilir?
Kimliği doğrulanmamış uzak bir saldırgan, HTTP/2 uç noktasının belleğini tüketerek hizmeti kesintiye uğratabilir. Bildirilen etki bellek tükenmesi ile hizmet reddidir; veri okuma veya değiştirme imkânı belirtilmemiştir.
Kaynaktaki açıklama (İngilizce)
Allocation of Resources Without Limits or Throttling vulnerability in ninenines cowlib allows an unauthenticated remote peer to exhaust the memory of an HTTP/2 endpoint via HPACK-indexed header fields.
cow_http2_machine:headers_decode/4 in src/cow_http2_machine.erl decodes every HEADERS block with cow_hpack:decode/3. It bounds the compressed block size and the number of fields, but not the size of the decoded header list that RFC 9113 section 6.5.2 places under SETTINGS_MAX_HEADER_LIST_SIZE. A peer stores one header value of up to the dynamic table size (4096 bytes by default) and then references it with one-byte indexed fields, so about 100 bytes on the wire decode to a header list of about 390 KB. A consumer that copies the decoded values, as Cowboy does when cowboy_http2:headers_to_map/2 joins repeated cookie fields into one binary, allocates that amount for every stream. The total across streams and connections is not bounded.
This issue affects cowlib: from 2.7.0 onward.
Üreticinin geçici önlemi (İngilizce)
Cowboy servers that do not need HTTP/2 can set protocols => [http] in the protocol options. The listener then answers the HTTP/2 preface with 501 Not Implemented and the decoder is never reached.
Lowering max_headers in the HTTP/2 protocol options shrinks the per-stream allocation in proportion, to about max_headers times the 4096-byte table entry. This reduces the amplification but does not remove it.
Ne yapmalı?
- Bildirilen veriye göre düzeltilmiş bir sürüm bilgisi henüz yoktur. Kullanılan cowlib sürümünü kontrol edin ve üretici kaynaklarından düzeltme yayımlandığında güncelleyin. Genel öneri
- HTTP/2'ye ihtiyaç duymayan Cowboy sunucularında
protocols => [http]ayarını kullanın. Bu durumda HTTP/2 önsözü 501 Not Implemented ile yanıtlanır ve sorunlu çözümleyici hiç çalıştırılmaz. Üretici - HTTP/2 kullanmak zorundaysanız HTTP/2 protokol seçeneklerindeki max_headers değerini düşürün. Bu, akış başına ayrılan belleği azaltır ancak sorunu tamamen ortadan kaldırmaz. Üretici
- Düzeltme sürümü yayımlandığında cowlib bağımlılığını güncelleyin ve güncellemeden sonra sunucuların bellek kullanımını izleyin. Genel öneri
Ek önlemler
- HTTP/2 kullanılmıyorsa bu protokolü tamamen kapatmak en etkili önlemdir. Genel öneri
- Sunucu bellek kullanımını ve bağlantı sayısını izleyerek ani artışları ve olağandışı istek kalıplarını takip edin. Genel öneri
- Ters vekil sunucu veya yük dengeleyici üzerinde istek başlığı boyutuna ilişkin sınırları gözden geçirin. Genel öneri
Etkilenen sürümler1 yazılım
| Yazılım | Etkilenen | Düzeltildiği sürüm |
|---|---|---|
| ninenines cowlib | ≥ 2.7.0 | – |
Kaynaklar6 kaynak
Kayıt geçmişi
- Yayımlandı
İlgili açıklar
Türkçe metin, resmi kayıtlardaki bilgilerle yapay zekâ yardımıyla yazıldı ve yayından önce otomatik kontrollerden geçti. Bir değişikliği uygulamadan önce üreticinin duyurusuna mutlaka bakın.