Zafiyet.live Keşfet. Değerlendir. Düzelt. Doğrula.
  • Yama var
  • Son 7 gün
  • CWE-407

CVE-2026-108529

Bandit HTTP/2 uygulamasında SETTINGS ve WINDOW_UPDATE çerçeveleri ile hizmet dışı bırakma riski

mtrudel bandit

Yüksek 8,7 CVSS 4.0
Yayımlandı
Güncellendi
26 Eki 2026
Açık yaşı
2 gün
Kaydı açan
EEF

ÖzetTürkçe

Bandit'in mtrudel tarafından geliştirilen HTTP/2 uygulamasında, algoritmik karmaşıklık nedeniyle oluşan verimsiz bir zafiyet bulunmaktadır. Kimlik doğrulaması olmayan uzaktan bir saldırgan, küçük SETTINGS veya bağlantı düzeyindeki WINDOW_UPDATE çerçeveleri göndererek sunucunun CPU kaynaklarını tüketebilir. Saldırgan, yanıtları bağlantının gönderim penceresi nedeniyle bloke olan binlerce akış açar, ardından her biri sunucuyu bloke edilmiş tüm gönderimlerin kuyruğunu baştan sona taramaya zorlayan düşük maliyetli çerçeveler gönderir. Bildiren kişinin testinde, 3.000 bloke edilmiş akış varken tek bir 9 baytlık SETTINGS çerçevesinin işlenmesi 133 ms sürmüştür.

lib/bandit/http2/connection.ex dosyasındaki do_pending_sends/2 fonksiyonu, kuyruktaki her gönderimi yeniden dener ve her denemeden önce ilgili girişi List.delete/2 ile kuyruktan kaldırır. Bu nedenle n bloke edilmiş akış için tek bir çerçeve O(n²) liste işlemine neden olur. max_concurrent_streams varsayılan olarak :infinity değerindedir, dolayısıyla n değerini saldırgan belirler.

Bu sorun, 0.3.4 sürümünden 1.14.0 sürümünden önceki bandit sürümlerini etkilemektedir.

Kaynaktaki açıklama (İngilizce)

Inefficient Algorithmic Complexity vulnerability in the HTTP/2 implementation of mtrudel bandit allows an unauthenticated remote attacker to exhaust server CPU via small SETTINGS or connection-level WINDOW_UPDATE frames. The attacker opens thousands of streams whose responses block on the connection send window, then sends cheap frames that each make the server walk the whole queue of blocked sends. In the reporter's run, with 3,000 blocked streams a single 9-byte SETTINGS frame took 133 ms to process.

do_pending_sends/2 in lib/bandit/http2/connection.ex retries every queued send and, before each retry, removes that entry from the queue with List.delete/2, so one frame costs O(n²) list operations for n blocked streams. max_concurrent_streams defaults to :infinity, so the attacker chooses n.

This issue affects bandit: from 0.3.4 before 1.14.0.

Üreticinin geçici önlemi (İngilizce)

From 1.9.0, bound the number of streams a client can open, for example with http_2_options: [default_local_settings: [max_concurrent_streams: 100]], which bounds the work each frame can cause. From 0.7.0, disabling HTTP/2 with http_2_options: [enabled: false] removes the vulnerable path.

Bu açığın açıklamasını Türkçeye çevirdik. Adım adım çözüm önerilerini kritik ve yeni açıklar için hazırlıyoruz; düzeltilmiş sürüm aşağıdaki tabloda, ayrıntılar üreticinin duyurusunda.

Etkilenen sürümler1 yazılım

YazılımEtkilenenDüzeltildiği sürüm
mtrudel bandit ≥ 0.3.4, < 1.14.0 1.14.0

Kaynaklar7 kaynak

Kayıt geçmişi

  1. 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.