Imperva güvenlik araştırmacıları, kötü amaçlı Brotli verisiyle resmi bir Node.js sürümünde çalışan bir uygulamaya saldırganın kodunu çalıştırtmanın mümkün olduğunu gösterdi. “Node2Shell” adını verdikleri kavram kanıtı (PoC), Node.js’in içinde gelen Brotli çözücüsündeki CVE-2026-111497 açığını kullanıyor. Node.js açığı 21 Ekim’de duyurup düzeltmeleri yayımladı. Güvenilmeyen Brotli verisini açan uygulamaların güncellenmesi gerekiyor.

Gösterim neyi kanıtlıyor?
Imperva’nın kavram kanıtı, Linux arm64 için resmi Node.js 24.22.0 imajında, herhangi bir debugger ya da özel derleme olmadan, gömülü Brotli çözücüsüne hazırlanmış veri vererek kod çalıştırdı.
Sonucun sınırları da açıkça belirtilmiş. Saldırı her denemede başarılı olmadı; Linux arm64 kurulumunda kod çalıştırmak birkaç deneme aldı. Sonuç yalnızca test edilen sürüm ve uygulama yapılandırması için geçerli; diğer mimariler ve 22.x ile 26.x hatları test edilmedi. Düzeltilmiş 24.22.1 sürümünde aynı veri reddedildi ve kod çalışmadı.
Bu gösterim, ilk yayımlanan kavram kanıtının bir adım ötesine geçiyor. O PoC yalnızca bilerek zayıflatılmış bir test derlemesinde kod çalıştırabilmişti. Yazarı, standart derlemede yalnızca çökme ve sınırlı bellek okuması elde ettiğini, normal bir derlemede çalışan bir saldırı gerçekleştiremediğini söylemişti. 22 Ekim itibarıyla açığın gerçek saldırılarda kullanıldığına dair bir rapor yok.
Hangi uygulamalar etkileniyor?
Açık Node.js’in içinde gelen Brotli çözücüsünde olduğu için yalnızca Imperva’nın test ettiği sürümü değil, 22.x, 24.x ve 26.x hatlarındaki uygulamaları etkiliyor. Bir servis bu çözücüye HTTP alışverişinin iki tarafından da ulaşabiliyor:
- Node.js’in yerleşik
fetch()fonksiyonuyla Brotli ile sıkıştırılmış bir yanıt okuduğunda, - Bir middleware Brotli ile sıkıştırılmış bir istek gövdesini açtığında.
Express 5’in body parser’ları (express.json(), express.urlencoded(), express.text() ve express.raw()) bir route’a uygulandığında gzip ve deflate’in yanında Brotli istek gövdelerini de açıyor. Düz bir Node.js HTTP sunucusu ise yalnızca Brotli gövdeli bir istek aldığı için onu açmıyor; bunun için o middleware ya da açık bir çağrı gerekiyor.
Imperva hem istek gövdesi hem de yanıt yolu üzerinden kod çalıştırmayı yeniden üretti. Express 5.0.0 ile 5.3.0 ve body-parser 2.0.0 ile 2.3.0 sürümlerini test etti; aradaki her sürümü denemedi.

Hata nasıl ortaya çıkıyor?
Imperva sorunun kaynağını, çözücünün Brotli akışındaki imkânsız bir noktayı nasıl ele aldığına bağlıyor. Brotli akışı, çözme sırasında kullanacağı blok tiplerini önceden bildiriyor. Test girdisi, akışın kendi yapısına göre olmaması gereken bir blok değişimine ulaştı. Açıklı çözücü bunu “daha fazla girdi gerekiyor” şeklinde yorumladı ve geçersiz bir durumda çalışmaya devam etti.
Node.js’in güvenlik bülteni de aynı mekanizmayı anlatıyor: Geçersiz blok değişimi kalıcı bir format hatası yerine geçici bir girdi eksikliği olarak raporlandığı için akış çözücüsü girdi baytlarını sekiz baytlık dahili bir tampona eklemeye devam ediyor. Bellek sanitizer’ıyla yapılan ayrı bir testte bu durumun tampon sınırının ötesine yazdığı (out-of-bounds write) görüldü. Bülten, bunun çökme, bellek ifşası ya da uzaktan kod çalıştırmaya yol açabileceğini belirtiyor. Açığı OpenAI Codex Security ekibinden Khai Tran ve Sylvie Mayer bildirmiş.
Node.js düzeltme olarak, çözücünün bu noktada devam etmek yerine format hatasıyla durmasını sağlayan upstream Brotli yamasını projeye dahil etti.
Ne yapmalı?
- Yamalı bir sürüme geçin. Node.js bültenindeki güncel sürümler: 22.23.4, 24.22.1 ve 26.12.1.
- Güncellemenin, içinde Node binary’si taşıyan container imajlarına ve diğer paketlere de ulaştığından emin olun. Paket envanterleri bunları gözden kaçırabiliyor.
- 20.x ve öncesi gibi destek süresi bitmiş hatlar düzeltme almıyor; desteklenen bir hatta geçin.
- Bültende Node.js içinde bir geçici çözüm (workaround) yok. Hemen güncelleyemiyorsanız Imperva, mümkün olan yerlerde etkilenen yollardaki güvenilmeyen Brotli trafiğini sınırlamayı öneriyor. Açığı yalnızca güncelleme kapatıyor.
Imperva kendi WAF’ına, yeniden ürettiği saldırılara karşı test ettiği kurallar ekledi. Node.js çalıştıran Vercel de 21 Ekim’de gelen isteklerdeki saldırıyı engelleyen kurallar eklediğini duyurdu. Ancak bu kurallar, uygulamanın başka sunuculardan çektiği Brotli yanıtlarını kapsamıyor ve güncellemenin yerini tutmuyor.
Aynı bültende CVE-2026-111497’nin yanında TLS sertifika doğrulama atlatmaları ve DNS çözümlemesiyle ilgili başka yüksek önemli açıklar da düzeltildi. Yani güncelleme yalnızca Brotli için değil.
Bu hafta PHP tarafında da benzer kritik RCE açıkları vardı; onları PHP2Shell yazısında ele almıştık. Node.js tarafında ilk kontrol basit: node -v çıktısını yukarıdaki sürümlerle karşılaştırın ve container imajlarınızı yeniden derleyin.
Kaynak: https://thehackernews.com/2026/10/researchers-demonstrate-node2shell-rce.html


