Brotli RCE açığı Node.js, Python, Envoy'u vurdu: ne yamalanmalı
Brotli çözücü hatası, hazırlanmış veriyle belleği bozuyor. Düzeltilmiş Node.js, Python, Bun ve Envoy sürümleri, kimin bulduğu, yama öncesi önlemler.

Bu yazıda
Yazılımınız kontrol etmediğiniz kaynaklardan gelen Brotli verisini açıyorsa, güncelleyin. Google’ın Brotli çözücüsündeki, CVE-2026-111497 olarak izlenen tek bir hata; Node.js’e, Python’un Brotli paketlerine, Envoy’a ve kütüphaneyi paketleyen diğer yazılımlara ulaşıyor. Node.js’in güvenlik sürümü yazısını, Python paketleri ve Envoy için GitHub advisory’lerini, Brotli’nin upstream sürümlerini ve commit’ini, ayrıca Aikido ve Imperva’nın yazılarını okuduk. Bu yazıda açığın ne olduğu, hangi sürümlerin düzelttiği, kimin bulduğu ve yama yapamadan önce neler yapabileceğiniz var. İstismar ayrıntıları dışarıda.
CVE-2026-111497 nedir?
Brotli’nin çözücüsünde, hazırlanmış girdinin tetikleyebildiği bir sınır dışı yazma. GitHub advisory’si, tüm platformlarda Brotli 1.0.3’ten 1.2.0’a kadar c/dec/decode.c içinde, uzaktan ve kimlik doğrulamasız bir saldırganın bitişik çözücü durumunu bozmasına, bellek ifşa etmesine, hizmet reddine yol açmasına ya da olası şekilde kod çalıştırmasına izin veren bir tampon taşmasını anlatıyor. Node.js nedeni, geçersiz bir blok geçişinin kalıcı bir biçim hatası yerine geçici bir “daha fazla girdi gerek” olarak bildirilmesi şeklinde tarif ediyor; bu yüzden akış çözücü sekiz baytlık dahili tampona bayt eklemeyi sürdürüyor. Bir uygulamanın node:zlib ile açtığı Brotli verisini sağlayabilen bir saldırganın süreç belleğini bozabileceğini, bunun çökmeye, süreç belleğinin ifşasına ya da uzaktan kod çalıştırmaya yol açabileceğini söylüyor. Açık iki yönde de çalışıyor: OpenAI’ın raporunu aktaran Aikido, kötü niyetli bir istemcinin yamasız bir sunucuya, kötü niyetli bir sunucunun da sıkıştırılmış yanıtları kabul eden yamasız bir istemciye saldırabileceğini söylüyor.
İsimler kaynağa göre değişiyor. Imperva Node.js vakası için kendi analizine “Node2Shell” diyor, Aikido da daha geniş yayılım için “HTTP2Shell” kullanıyor. İkisi de resmi isim değil.
Hangi sürümler düzeltiyor?
Upstream Brotli 1.2.1, 1.1.1 ve 1.0.10’u 21 Ekim’de 19:27 UTC’de yayımladı ve gerisi bundan geliyor. Okuduğumuz kaynaklara göre:
- Node.js: 21 Ekim güvenlik sürümlerinden 22.23.4, 24.22.1 ve 26.12.1; sürümler 22.x, 24.x ve 26.x hatlarını etkiliyor.
- Python paketleri: Brotli 1.2.1 ve brotlicffi 1.2.1.0. GitHub advisory’si Brotli’yi 1.0.3’ten 1.2.1’in altına, brotlicffi’yi 1.0.3’ten 1.2.1.0’ın altına kadar kapsıyor.
- Envoy: 1.40.0, 1.39.3, 1.38.6 ve 1.37.8; 1.36.12 de desteklenmeyen bir hatta düzeltilmiş. Envoy’un advisory’si etkilenen sürümlerin 1.39.2, 1.38.5, 1.37.7 ve 1.36.11 olduğunu ve Brotli açıcısı yapılandırılmış dağıtımları etkilediğini söylüyor.
- Bun ve Istio: Aikido Bun 1.4.4’ü ve Istio 1.29.9, 1.30.6 ile 1.31.2’yi listeliyor; Istio’nun 1.29 hattı ömrünü doldurmuş. Bu projelerin kendi advisory’lerini okumadık.
- curl ve diğerleri: Aikido, curl ve libcurl’ün güncellenmiş bir Brotli bağımlılığına ya da satıcının güvenlik düzeltmeli paketine ihtiyaç duyduğunu, paketlenmiş ya da statik bağlanmış kopyaların uygulamanın yeniden derlenmesini gerektirdiğini söylüyor. Bir curl advisory’si bulamadık; dağıtımınızı kontrol edin.
- İşletim sistemi paketleri, Aikido’ya göre düzeltmeyi upstream sürüm numarasını değiştirmeden taşıyor olabilir.
Kimler açıkta?
Güvenilmeyen veriden Brotli açan her şey, bir HTTP alışverişinin iki tarafında da. Imperva, resmi Node.js 24.22.0 Linux arm64 imajındaki uygulamalarda kod çalıştırdığını söylüyor; Node’un yerleşik fetch() çağrısının tükettiği sıkıştırılmış bir yanıt üzerinden ve Express 5.0.0 ile 5.3.0 ve body-parser 2.0.0 ile 2.3.0’ın ayrıştırdığı istek gövdeleri üzerinden; 24.22.1 aynı girdileri reddetmiş. Kendi kurulumunda çalıştırmanın birkaç deneme aldığını ekliyor ve WAF kuralları eklemiş. Python için Aikido, requests, httpx ve aiohttp gibi HTTP istemcilerinin kuruluysa Brotli paketlerini otomatik yüklediğini söylüyor. Apache’nin standart mod_brotli modülünün Brotli açmadığını, yani standart bir Apache’nin varsayılan olarak yolda olmadığını söylüyor.
Yamadan önce ne yapabilirsiniz?
Brotli’nin savunmasız bir çözücüye ulaştığı yerleri azaltın. Bunlar Aikido’nun önerileri ve çözüm değil, geçici önlemler:
- Gelen:
Content-Encodingdeğeribriçeren istekleri, büyük/küçük harfe duyarsız ve listelerin içinde de eşleştirerek, ters proxy’de, yük dengeleyicide ya da ara katmanda, herhangi bir çözücü gövdeyi görmeden reddedin. - Giden:
Accept-Encoding’denbr’yi kaldırın ve otomatik açmadan öncebryanıtları da reddedin. Aikido, kötü niyetli bir sunucu yine de Brotli gönderebildiği için yalnızcaAccept-Encoding’i değiştirmenin yetmediğini söylüyor. - Python: Brotli isteğe bağlıysa Brotli ve brotlicffi’yi kaldırın,
httpx[brotli]gibi ek bağımlılıkları çıkarın, yeniden derleyip başlatın. Yine de Brotli gönderen sunucular hata üretebilir. - Kontrol edin, yeniden derleyin, yeniden dağıtın. Kilit dosyalarını güncelleyin, konteyner imajlarını ve derlenmiş çalıştırılabilirleri yeniden derleyin ve çalışan iş yüklerinin yamalı bileşenleri kullandığını doğrulayın. Aikido, 23 Ekim’de pip-audit, Dependabot ve Safety’nin PyPI paketlerini henüz işaretlemediğini bildirdi; bu yüzden onlar için 22 Ekim’de bir GitHub advisory’si yayımlanmış olsa da elle kontrol edin.
Kim buldu ve neden Ekim’i buldu?
Node.js, advisory’sinin raporlanması için OpenAI Codex Security’yi, Khai Tran ve Sylvie Mayer’i, düzeltme için Matteo Collina ve Antoine du Hamel’i anıyor. Envoy advisory’si OpenAI Security Research’ü anıyor. Aikido, OpenAI’ın hatayı Şubat’ta keşfettiğini, o sırada kök nedenin Brotli’nin kaynağında, kimse güvenlik açığı olduğunu fark etmeden düzeltildiğini söyleyen açıklamasını aktarıyor. Brotli deposu bu zaman çizelgesini destekliyor: düzeltici commit “Detect and report invalid stream earlier” 27 Şubat 2026 tarihli ve 21 Ekim’e kadar düzeltilmiş bir sürüm çıkmadı. Aikido’nun sonucu, Brotli’yi paketleyen her projenin kendi güncellemesini yayımlaması gerektiği. OpenAI’ın kendi sayfasını okuyamadık ve kaynaklar keşifte AI araçlarının kullanılıp kullanılmadığını söylemiyor.
Henüz bilinmeyenler neler?
- Sahada sömürü. Okuduğumuz kaynaklarda bir bildirim bulamadık ve hiçbiri bunu iddia etmiyor.
- Başka hangi yazılımların etkilendiği. Aikido’nun listesi okuduğumuz advisory’lerden geniş ve curl, Bun ya da Istio’yu kendimiz doğrulamadık.
- Ne kadar ciddi olduğu. Node.js kendi advisory’sini yüksek, GitHub PyPI ve Envoy advisory’lerini kritik işaretliyor ve Aikido’nun CVSS v4.0 9,2 puanı okuduğumuz GitHub kayıtlarında görünmüyor.
- Konteynerlerde, gömülü kodda ve derlenmiş ikililerde henüz hiçbir tarayıcının bu CVE’ye eşlemediği kaç paketlenmiş kopya olduğu.
Akılda tutulacaklar
Bunlar bizim gözlemlerimiz:
- Kaynaktaki bir düzeltme yama değildir. Upstream commit Şubat’taydı ve hesabımıza göre bir sürüm çıkana kadar neredeyse sekiz ay geçti; paketleyenlerin her birinin ayrı ayrı tepki vermesi gerekmesinin sebebi bu.
- Yalnızca paket yöneticisini değil, paketlenmiş kopyaları da yamalayın. Node.js, Bun ve Envoy kendi Brotli’sini taşıyor; bu yüzden bir kütüphaneyi güncellemek diğerlerini korumaz.
- Ürününüz için ciddiyeti okuyun. Derecelendirmeler kaynaklar arasında farklı ve güvenilmeyen gövdeleri açan servisler için etiketten çok maruziyet önemli.
- PHP ile aynı güne denk geldi. PHP raporumuz aynı gün düzeltilen kritik açıkları anlatıyor ve aynı Node.js sürümü eMudhra ara CA ihlali güncellemesini de taşıyor.
Editoryal inceleme: 24 Ekim 2026 (AI). Node.js’in 21 Ekim güvenlik sürümü yazısı (Brotli bölümü ve paketlenmiş güncellemeler listesi; yazının geri kalanı göz gezdirildi), PyPI paketleri ve Envoy için GitHub advisory’leri (GitHub API ile okundu), Brotli’nin upstream sürümleri ve düzeltici commit’i (GitHub API), Aikido’nun yazısı (23 Ekim, 24 Ekim’de güncellendi) ve Imperva’nın yazısı (22 Ekim) üzerinden hazırlandı; ikisi de sayfa metni olarak okundu. OpenAI’ın kendi anlatımını, Bun, Istio ya da curl advisory’lerini ve herhangi bir istismarı okumadık. Bu, ortamınız için güvenlik tavsiyesi değildir; satıcılarınızın rehberini izleyin.
Kaynaklar
- Node.js, Wednesday, October 21, 2026 Security Releases (Node.js blogu) ↗Node.js
- Brotli: Out-of-bounds write in the Brotli decoder, also affects the PyPI Brotli package (GHSA-9v8h-qqgm-4m35) ↗GitHub Advisory Database
- Out-of-Bounds Write in Brotli Decompressor (Envoy, GHSA-3wvj-j6qm-62mr) ↗Envoy
- Brotli flaw (CVE-2026-111497) blast radius affects many libraries and apps using HTTPs (Aikido, 23-24 Ekim 2026) ↗Aikido
- Node2Shell: From Brotli Data to Remote Code Execution (Imperva, 22 Ekim 2026) ↗Imperva
AI desteğiyle hazırlandı.
Düzeltme öner
Bir hata veya eksik kaynak mı fark ettin? Editöre özel bir öneri gönder. Önerin incelenir ve herkese açık bir yorum olarak yayımlanmaz. Ad, e-posta veya hesap gerekmez.



Bize mesaj gönder