deniz.in

Piyasalar

Hava durumu

Hava durumu yükleniyor

· kaynak dev.to (home feed)

Node.js 10 açığı yamaladı: yüksek şiddetli Brotli decoder uzaktan kod çalıştırma açığı başı çekiyor

Node.js, 22, 24 ve 26 sürüm hatları için 10 açığı düzelten güvenlik sürümleri yayınladı; başrollerde uzaktan kod çalıştırmaya izin verebilecek yüksek şiddetli bir Brotli decoder hatası var. Tek çözüm yükseltme.

Node.js 10 açığı yamaladı: yüksek şiddetli Brotli decoder uzaktan kod çalıştırma açığı başı çekiyor

Desteklenen tüm hatlar için güvenlik sürümleri

21 Ekim 2026'da Node.js projesi, desteklenen üç sürüm hattı için dev.to'daki bir yazıya göre güvenlik sürümleri yayınladı. Bültenler 10 açığı kapsıyor: dördü Yüksek, üçü Orta ve üçü Düşük olarak derecelendirilmiş. Yamalı sürümler 26.x hattı için v26.12.1, 24.x için v24.22.1 ve 22.x için v22.23.4.

Sorunların hiçbiri için bir geçici çözüm listelenmemiş, yani yükseltme tek çözüm. Node.js 20 ve öncesi kullanım ömrünü tamamladı ve bu yamaları hiçbir zaman almayacak; orada tek yol desteklenen bir hatta geçmek. Eski bir etikete sabitlenmiş container imajları yeniden oluşturulana kadar açık kalır ve yamalı runtime'ı yüklemek için her Node sürecinin, container'lar dahil, yeniden başlatılması gerekir. Dev.to yazarı ayrıca dağıtım paketleriyle gelen yapıların sistem Brotli kütüphanesine bağlanabileceğine dikkat çekiyor; bu yüzden dağıtımının Node paketini kullananlar satıcı bültenini de kontrol etmeli.

Brotli decoder hatası

Acil konu, Node.js ile birlikte gelen Brotli decoder'daki yüksek şiddetli bir tampon dışına yazma hatası olan CVE-2026-111497. Bültenin anlattığına göre decoder geçersiz bir blok geçişini yanlış ele almış, akışı reddetmek yerine daha fazla girdi gerekiyormuş gibi davranarak akış tabanlı açıcıyı küçük bir dahili tampona yazmaya devam etmesine izin vermiş. node:zlib ile açılan kötü niyetli Brotli verisi süreci çökertebilir, bellek sızdırabilir veya uzaktan kod çalıştırma ile sonuçlanabilir.

Açıkta olup olmama, güvenilmeyen Brotli verisinin sürece ulaşıp ulaşamayacağına bağlı. Yazıda anlatılan Node.js 22.22.0 üzerindeki testler, fetch() fonksiyonunun Brotli ile sıkıştırılmış yanıtları otomatik olarak açtığını bulmuş; yani kodun fetch() yaptığı herhangi bir sunucu, kullanıcı tarafından sağlanan URL'ler veya webhook'lar dahil, Brotli verisi iletebilir. Düz bir http sunucusu istek gövdelerini açmaz, ama body-parser 2 ile Express 5, ek yapılandırma olmadan Brotli ile sıkıştırılmış bir JSON gövdesini ayrıştırıyor; bu da güvenlik firması Aikido'nun bildirdiğiyle örtüşüyor. Express 5 çalıştıran veya kontrol etmedikleri sunuculara fetch() çağrısı yapan uygulamalar açıkta olduğunu varsaymalı.

Sömürülebilirlik raporları ayrışıyor

Sömürünün ne kadar pratik olduğu konusunda kamuya açık raporlar ikiye bölünüyor. Dev.to'nun aktardığı Hacker News tartışmasına göre 22 Ekim'de kamuya açık bir kavram kanıtı çıkmış ve kod çalıştırmayı yalnızca kasıtlı olarak zayıflatılmış bir test derlemesinde başarmış; standart bir derlemede ise çökme ve sınırlı bir bellek okuması elde etmiş. Aikido, Linux arm64 üzerinde değiştirilmemiş bir Node.js 24.22.0 imajesine karşı kod çalıştırmayı, her denemede olmasa da, başardığını ve 24.22.1'in aynı girdiyi reddettiğini bildiriyor. Ne taraf da 22 Ekim itibarıyla sahada sömürü bildirmedi ve Qualys, CVE kayıtlarında henüz CVSS puanlarının bulunmadığını belirtiyor.

TLS doğrulaması ve DNS uç durumları

Üç ek sorun, tls.checkServerIdentity() fonksiyonunun bir sertifikanın bağlanılan sunucuyla eşleştiğine nasıl karar verdiğiyle ilgili. Bülten bunları IP adresi uç durumları olarak çerçeveliyor: tam genişlikli rakamlarla, baştaki sıfırlarla, onaltılık gösterimle veya düz bir tamsayı olarak yazılmış bir adres, sertifikadaki IP girdileri yerine DNS adlarıyla eşleştiriliyor. Dev.to yazısı ayrıştırma boşluğunu şöyle örneklendiriyor: WHATWG URL işleyişi 0127.0.0.1'i sekizlik olarak okuyup 87.0.0.1 sonucunu üretirken, bazı işletim sistemi çözümleyicileri onu ondalık olarak okuyor. Böylece bir sertifika, socket'in gerçekten bağlandığı adresten farklı bir adrese karşı doğrulanabiliyor. Bu hatalar en çok, IP adresiyle başka hizmetlere bağlanan veya kullanıcıdan hostname ve URL kabul eden hizmetler için önemli.\n CVE-2026-105482, dns.resolve*() ve dns.reverse() fonksiyonlarının bir adı gömülü bir NUL baytında kesmesine yol açıyor, çünkü ad bir C dizgesi olarak c-ares'e aktarılıyor; bültenin örneğinde attacker.example\0.trusted.example, attacker.example olarak çözülüyor. Riskli örüntü, bir hostname'i bir izin listesine göre doğrulayıp sonra çözümlemek — yaygın bir SSRF savunması — ve bülten bunu CVE-2026-48930'un eksik kalan bir takibi olarak nitelendiriyor.

Kalan düzeltmeler, erken gelen veriyi bir sonraki isteğin yanıtı sayan bir keep-alive socket'i, sertifikalardaki DNS adlarının kanonik olmayan IPv4 yazımlarını doğrulaması ve başlangıç anlık görüntülerine ile tek çalıştırılabilir uygulamalara gömülen önbelleklenmiş crypto.randomUUID() ve randomInt() durumunu kapsıyor; hepsi Orta dereceli. Üç Düşük sorun ise Node 26 üzerinde bir zlib.ZipFile uç durumunu ve iki Permission Model zafiyetini ele alıyor. Sürüm ayrıca c-ares, undici, CA sertifika paketini (bülten bir "eMudhra Intermediate CA Compromise" listeliyor), 24.x ve 22.x hatlarında OpenSSL'ı ve 22.x'te SQLite'ı yeniliyor.

Bir porselen, çözüm değil

Hemen yükseltemeyen ekipler, dev.to yazarının test edilmiş önerisiyle, herhangi bir body parser çalışmadan önce Brotli istek gövdelerini HTTP 415 ile reddeden bir Express middleware'i ekleyebilir veya aynı kuralı bir proxy ya da load balancer üzerinde uygulayabilir. Bu ne uygulamanın diğer sunuculardan fetch() ile aldığı Brotli yanıtlarını ne de diğer dokuz açığı kapsıyor; yani sadece bir geçici önlem.

Neden önemli

Rutin olarak güvenilmeyen ağ girdisiyle uğraşan bir runtime'daki bir bellek bozulması hatası, elinde dolaşan kamuya açık bir kavram kanıtı ve çözüm olarak rutin bir sürüm yükseltmesi varken, sömürülebilirlik konusundaki ayrışmaya bakılmaksızın şimdi-yamala sorunudur. Açıkta kalma yolları sıradan olanlar: fetch() çağrıları ve Express 5 gövde ayrıştırma; egzotik yapılandırmalar değil ve kullanım ömrünü tamamlamış hatlar bu düzeltmeyi hiçbir zaman almayacak. Sunucular, CI runner'ları ve container imajları arasında node --version kontrolü yapıp yükseltmek ve yeniden başlatmak, tüm düzeltme sürecinin ta kendisi.

  • #node-js
  • #security
  • #vulnerabilities
  • #javascript
  • #runtime

İlgili yazılar