Node.js 16 açığı kapattı: HTTP/2 sunucuları çökertiliyor, HTTPS sunucularında başka bağlantıların belleği okunabiliyor
Node.js Kasım güvenlik sürümleri 22.23.5, 24.22.3 ve 26.13.1 yayımlandı. Yedisi yüksek önemde 16 açık arasında kimlik doğrulamasız HTTP/2 çökmesi ve TLS private key dahil bellek sızıntısı var; workaround yok.
CVE-2026-123863, CVE-2026-123864, CVE-2026-123865Node.js projesi, desteklenen üç sürüm hattı için Kasım güvenlik sürümlerini yayımladı: 22.23.5, 24.22.3 ve 26.13.1. Sürümler runtime'ın kendisinde 16 açığı kapatıyor; yedisi yüksek önemde ve hepsi Node.js'in kendi HTTP/2, HTTPS ve TLS sunucu kodunda. Yani risk, bağlantıyı doğrudan Node.js sürecinin karşıladığı sunucularda yoğunlaşıyor.
En dikkat çekenler iki grup. CVE-2026-123863, 24.x ve 26.x hatlarında varsayılan bir HTTP/2 sunucusunun, kimlik doğrulaması olmayan bir istemci tarafından çökertilmesine yol açıyor; TLS'li ve cleartext bağlantılarda çalışıyor. CVE-2026-123864 ise HTTPS sunucularında belirli bir işleyici deseninde, projenin ifadesiyle TLS private key'ler ve diğer kullanıcıların istekleri dahil başka bağlantılara ait belleğin okunmasına izin verebiliyor. Bülten sahada istismar bildirmiyor; açıklar CISA KEV kataloğunda değil. Beş açığı Chris Rohlf, Claude ve Anthropic Research iş birliğiyle bildirdi.
Etkilenen ve düzeltilmiş sürümler
| Ürün | Etkilenen | Düzeltilmiş sürüm |
|---|---|---|
| Node.js 22.x | 22.23.5 öncesi | 22.23.5 |
| Node.js 24.x | 24.22.3 öncesi | 24.22.3 |
| Node.js 26.x | 26.13.1 öncesi | 26.13.1 |
| Node.js 20.x, 25.x ve diğer EOL hatlar | Proje EOL sürümleri her zaman etkilenmiş sayıyor | Düzeltme yok; desteklenen hatta geçiş |
Yüksek önemdeki diğer açıklar:
CVE-2026-123866: HTTP/2 sunucusu istemciye kendi belleğinden parçalar, başka bağlantılara ait yanıtlar dahil, gönderebiliyor (üç hat).CVE-2026-123865: istemci, varsayılan HTTP/2 sunucusunda bellek ve file descriptor'ları kalıcı olarak tutturabiliyor (üç hat).CVE-2026-123874:respondWithFile()/respondWithFD()ile dosya sunan HTTP/2 sunucularında bellek bozulması (24.x, 26.x); aynı senaryoda indirme iptaliyle çökmeCVE-2026-123875(orta).CVE-2026-126051: SNICallback, OCSPRequest, oturum hook'ları ya daaddContext()kullanan TLS sunucularında çökme (24.x, 26.x).CVE-2026-123872: hostname'e göre farklı client certificate kuralı uygulayan TLS sunucularında, TLS 1.2 renegotiation ile daha sıkı kurallı hostname'e geçiş (üç hat).
Beni etkiliyor mu?
Sunucularda ve container imajlarında çalışan Node.js sürümünü salt okunur sorgulayın:
node --version
docker images
grep -rn "FROM node" DockerfileUygulamanın http2 ya da https / tls modülleriyle bağlantıyı kendisi karşılayıp karşılamadığına bakın:
grep -rnE "http2|https|tls" src/ --include=*.js --include=*.tsProje, yalnızca http modülüyle kurulan düz HTTP sunucularının HTTPS açığından etkilenmediğini belirtiyor. TLS'i önde bir reverse proxy ya da load balancer sonlandırıyorsa HTTPS/TLS açıklarının doğrudan yüzeyi daralır; HTTP/2'nin arka uca kadar taşınıp taşınmadığını ayrıca kontrol edin.
Ne yapılmalı?
- Desteklenen hattınızda düzeltilmiş sürüme geçin: 22.23.5, 24.22.3 ya da 26.13.1. Bültende workaround yok; tek düzeltme upgrade.
- 20.x, 25.x gibi EOL hatlardaki uygulamaları desteklenen bir hatta taşıma planına alın; bu hatlara düzeltme gelmiyor.
- Container tabanlı dağıtımlarda base image'ı güncel etiketle yeniden derleyin; yalnızca host'taki Node.js'i güncellemek imajdaki runtime'ı değiştirmez.
- HTTPS açığının koşullarını karşılayan internete açık sunucularda TLS anahtarları ve oturum sırlarının yenilenmesini değerlendirin; bülten bu konuda yönlendirme yapmıyor.
- Güncelleme sonrası beklenmeyen süreç yeniden başlatmalarını, HTTP/2 bağlantı ve bellek artışlarını izleyin; değişikliği change management kaydıyla ve önce test ortamında uygulayın.