· kaynak Hacker News – Front Page (native)
Brotli çözücüsündeki CVE-2026-111497 zafiyeti Node.js'den Python'a, Envoy'a ve ötesine yayılıyor
Google'ın Brotli kütüphanesindeki kritik bir buffer dışına yazma zafiyeti, hazırlanmış sıkıştırılmış akışlarla saldırganların kod çalıştırmasına imkân veriyor ve bu sorun Node.js'den Python paketlerine, proxy'lere ve diğer HTTP yazılımlarına yayıldı.

Ne oldu
Google'ın yaygın olarak kullanılan Brotli sıkıştırma kütüphanesindeki kritik bir zafiyet, tek bir runtime sorunundan tüm ekosistemi etkileyen bir soruna dönüştü. Aikido'ya göre Node.js, "node2shell" adı verilen bu açığı 21 Ekim Çarşamba günü duyurdu. Ertesi gün Python paketlerinin de etkilendiğini doğruladı ve 23 Ekim Cuma gününe kadar sorunun birçok dile ve HTTP servis uygulamasına ulaştığı, düzeltmelerin ise hâlâ yayımlandığı netleşti. Etki alanı büyüdükçe olay "HTTP2Shell" olarak anılır oldu.
CVE-2026-111497 olarak takip edilen zafiyet, tüm platformlarda 1.0.3'ten 1.2.0'a kadar sürümlerde bulunan Brotli çözücüsündeki bir buffer dışına yazma sorunu. CVSS v4.0 skoru 9.2 olan ve Kritik olarak derecelendirilen zafiyette, kötü niyetle hazırlanmış bir Brotli akışını zafiyetli bir çözücüye ulaştırabilen uzaktan erişimli, kimlik doğrulaması gerektirmeyen bir saldırgan belleği bozabilir, hassas veri sızdırabilir, süreci çökertebilir ya da en kötü durumda keyfi kod çalıştırabilir.
Zafiyet nasıl çalışıyor
Aikido, çözücünün okumayı durdurması gereken noktada fazladan girdiyi reddetmediğini açıklıyor. Fazla baytlar küçük bir çalışma buffer'ının ötesine taşıp programın belleğine zarar veriyor ve bu zarar, sürecin ne çalıştıracağı üzerinde kontrol elde etmeye dönüştürülebiliyor.
Brotli standart bir HTTP içerik kodlaması olduğu için saldırı iki yönde de ilerleyebilir: kötü niyetli bir istemci, istek gövdelerini açan yamasız bir sunucuyu tehlikeye atabilir; kötü niyetli bir sunucu da sıkıştırılmış yanıtları kabul eden yamasız bir istemciyi tehlikeye atabilir. Python ortamlarında maruziyet gözden kaçması kolay — Aikido, requests, httpx ve aiohttp gibi HTTP istemcilerinin Brotli ve brotlicffi paketleri kurulu olduğu anda bunları otomatik yüklediğine dikkat çekiyor.
Şubat'tan beri bekleyen düzeltme
Aikido'ya göre OpenAI zafiyeti Şubat ayında keşfetti ve iki yönde de çalışan, kimlik doğrulaması gerektirmeyen bir uzaktan kod çalıştırma sorunu olarak bildirdi. Kök neden o sırada Brotli kaynak kodunda düzeltildi; ancak güvenlik sorunu olarak tanınmadı ve düzeltmeyi içeren bir sürüm şimdiye kadar yayımlanmadı. Bu gecikme, Brotli'yi içeren her projenin kendi güncellemesini hazırlaması gerektiği anlamına geliyor; bu yüzden yamalar bu hafta ekosistemde parça parça geldi.
Yamalanmış sürümler
23 Ekim Pasifik saatiyle öğleden sonraya kadar Aikido, libbrotli, Python, C++, Node.js, Bun ve Envoy için yamaların mevcut olduğunu ve yenilerinin geldiğini bildirdi. Listelediği düzeltilmiş sürümler:
- Node.js: desteklenen bir sürüm hattında 22.23.4, 24.22.1 veya 26.12.1 ya da daha yenisi
- Google Brotli upstream: 1.2.1 ya da eski dallar için yamalanmış 1.0.10 / 1.1.1
- Python paketleri: Brotli 1.2.1 ve brotlicffi 1.2.1.0
- Bun: 1.4.4, bunu paketleyen derlenmiş çalıştırılabilir dosyaların yeniden derlemeleri dahil
- Envoy: 1.40.0, 1.39.3, 1.38.6 veya 1.37.8 (1.36.12 de düzeltmeyi içeriyor ancak o dal artık desteklenmiyor)
- Istio: 1.29.9, 1.30.6 veya 1.31.2, 1.29 dalının ömrünün sonuna geldiğini unutmayın
- curl / libcurl: Brotli bağımlılığını 1.2.1'e ya da vendor güvenlik derlemesine güncelleyin; statik olarak bağlanmış kopyalar uygulamanın yeniden derlenmesini gerektirir
Aikido ayrıca Apache ve Nginx'in varsayılan olarak Brotli çözmediğini belirtiyor. İşletim sistemi paketlerinde vendor'lar düzeltmeyi upstream sürüm numarasını değiştirmeden geri taşıyabilir; dolayısıyla yalnızca sürüm kontrolü tüm tabloyu göstermeyebilir.
Beklerken alınabilecek önlemler
Henüz yama bulunmayan yerlerde Aikido, Brotli çözümünü tamamen devre dışı bırakmayı öneriyor. Python için bu, hem Brotli hem brotlicffi paketlerini kaldırmak ve bunları geri getirecek httpx[brotli] gibi extras'ları temizlemek anlamına geliyor; gzip ve deflate desteği bozulmadan kalıyor. Gelen trafik için, Content-Encoding değerinde br geçen istekleri — büyük/küçük harf duyarsız eşleşecek ve listelerin içindekiler dahil — ters proxy, load balancer ya da middleware katmanında, gövdeye zafiyetli herhangi bir çözücü dokunmadan önce reddedin. Giden trafik için Accept-Encoding'den br değerini çıkarın ve Brotli yanıtlarını çözümleme başlamadan önce reddedin.
Aikido, yalnızca Accept-Encoding düzenlemenin yeterli olmadığı konusunda uyarıyor; çünkü kötü niyetli bir sunucu, istemci ne duyurursa duyursun Brotli gönderebilir. Bir başka boşluk daha var: 23 Ekim itibarıyla danışma belgesi veritabanları CVE'yi iki Python paketine eşlemiyordu; bu yüzden pip-audit, Dependabot ve Safety gibi araçlar zafiyetli kurulumları işaretlemeyecekti.
Neden önemli
Brotli web trafiğinin çok büyük bir bölümünün çözme (decompression) yolunda duruyor ve bu hata o rutin adımı, hem istemci hem sunucu yönünde olası bir uzaktan kod çalıştırma vektörüne dönüştürüyor. Upstream düzeltme aylardır mevcut olduğu halde hiç yayımlanmadığı için, iyileştirme düzinelerce vendor, runtime ve gömülü kopya arasında parçalı durumda ve Python maruziyetinin bir kısmı yaygın bağımlılık tarayıcılarına görünmez. Tam olarak güvenmediği verileri açan her sistem — sıkıştırılmış istek gövdelerini kabul eden API gateway'leri, sıkıştırılmış yanıtları çeken crawler'lar ve HTTP istemcileri — bunu acil bir yamala-ya-da-devre-dışı-bırak kararı olarak görmeli, ardından imajları yeniden oluşturup yeniden dağıtmalı ve çalışan iş yüklerinin gerçekten yamalanmış bileşenleri kullandığını doğrulamalı.
- #security
- #vulnerability
- #node-js
- #python
- #http
- #brotli