Node.js 21 Ekim'de 22.x, 24.x ve 26.x olmak üzere üç desteklenen sürüm hattı için güvenlik güncellemesi yayınladı, 10 açık düzeltildi. En ciddi olanı Node.js'in paketlediği Brotli açma kodundaki bir hata; proje bunun uzaktan kod çalıştırma riski oluşturabileceğini söylüyor, yani saldırgan etkilenen sistemde kendi seçtiği kodu çalıştırabilir.
Her desteklenen hat için bir düzeltme sürümü var: uzun süreli destek hatlarında 22.23.4 ve 24.22.1, güncel hatta ise 26.12.1. Node.js 20.x ve öncesi yaşam döngüsünü tamamladı ve düzeltme almayacak, bu yüzden desteklenen bir hatta geçilmeli.
Brotli açığı Node.js'in paketlediği koddadır, kullanıcının kendi programında değil. Node.js bu kodu Brotli verisi açılırken çalıştırır; doğrudan node:zlib modülü üzerinden ya da kod Brotli sıkıştırmasıyla gönderilen bir yanıta fetch() çağırdığında otomatik olarak.
Bir uygulama, saldırganın kontrol ettiği Brotli verisini açtığı durumda risk altındadır; örneğin bir istek gövdesi ya da başka bir sunucudan alınan bir yanıt.
Brotli Açığı
Açık, bozuk sıkıştırılmış girdiyle tetiklenen Brotli çözücüsünde sınır dışı yazma hatasıdır. Düzeltme, Node.js'in aldığı Brotli projesinden gelen yukarı akış yamasıdır ve çözücü geçersiz girdiyi yakalayıp tamponun dışına yazmak yerine daha erken duracak şekilde değiştirildi.
Brotli Google'ın sıkıştırma kitaplığıdır ve Node.js kendi kopyasını gönderir. Aynı düzeltme 21 Ekim'de Brotli 1.2.1, 1.1.1 ve 1.0.10'da yayınlandı, dolayısıyla Brotli'yi paketleyen diğer yazılımların da aynı güncellemeye ihtiyacı olabilir. Değişiklik ilk olarak Şubat 2026'da Brotli kaynak kodunda yapıldı ve yalnızca ekimde güvenlik sürümü olarak yayınlandı.
"Uzaktan kod çalıştırma" açığın izin verebileceği durumun projenin tanımıdır ve açık kritik değil yüksek olarak derecelendirildi. Pratikte ne kadar gösterildiği daha dar.
22 Ekim'de yayınlanan kamuya açık bir kanıt konsepti, kasıtlı olarak zayıflatılmış bir test derlemesine karşı yalnızca kod çalıştırma sağladı. Standart bir Node.js derlemesinde yazarı çökme ve işlem belleğinin sınırlı okunması bildirdi, kod çalıştırma bildirmedi ve normal bir derlemede çalışan bir saldırı elde edilmediğini söyledi.
Yama uygulanmış Node.js, kanıt konseptinin kullandığı bozuk girdiyi reddeder ve 22 Ekim itibarıyla açığın gerçek dünyada istismar edildiğine dair bildirim yok.
Diğer Açıklar
Diğer düzeltmelerin üçü de yüksek olarak derecelendirildi. İkisi TLS sertifika kontrolleri; saldırgan sunucu IP adresini olağandışı bir biçimde yazarak bir sertifikanın olması gerekmediği bir ana bilgisayarla eşleşmesini sağlayabilir (CVE-2026-106069 ve CVE-2026-105483). Üçüncüsü dns.resolve'un gömülü boş bayt nedeniyle bir ana bilgisayar adını kısaltmasını engeller (CVE-2026-105482).
Node.js CVE-2026-105483'ü yüksek olarak değerlendiriyor, ancak bunu düzelten taahhüt hatayı düşük önem dereceli ve istismarı zor olarak adlandırıyor.
Kalanlar orta ve düşük önem derecesinde. Orta düzey bir açık, uygulama başlangıç anlık görüntüsü ya da tek çalıştırılabilir uygulama olarak oluşturulduğunda crypto.randomUUID() ve crypto.randomInt()'in her işlemde aynı değerleri döndürmesine neden olur (CVE-2026-106074); bu da bu değerlerin öngörülemezliğine dayanan her şeyi zayıflatır.
Tam set ve her birinin etkilediği hatlar:
Ne olduğu
Brotli çözücüsünde sınır dışı yazma; projeye göre uzaktan kod çalıştırma
22.x, 24.x, 26.x
Bir ana bilgisayar IP adresine kanonik olmayan biçimde çözüldüğünde TLS ana bilgisayar adı kontrolü atlatma
22.x, 24.x, 26.x
IP tam genişlikli rakamlarla yazıldığında TLS ana bilgisayar adı kontrolü atlatma
dns.resolve boş bayt içeren adları kısaltır
22.x, 24.x, 26.x
Keep-alive soketi isteğin gönderilmesinden önce yazılmış bir yanıtı işleyebilir
22.x, 24.x, 26.x
Kanonik olmayan IPv4 için sertifika doğrulaması DNS adlarının IP uç noktalarını doğrulanmasını sağlar
22.x, 24.x, 26.x
randomUUID() ve randomInt() önbellekleri başlangıç anlık görüntüleri ve tek çalıştırılabilir uygulamalarda yeniden kullanılır
22.x, 24.x, 26.x
ZipFile başarısız başlık kontrolünden sonra saldırgan tarafından kontrol edilen baytları döndürür
Permission Model joker karakter aramasıyla dosya erişimini fazla yetkilendirir
Permission Model fs.realpathSync ile atlatma
22.x, 24.x, 26.x
eMudhra Sertifika Engeli
Aynı güncellemeler, günler önce tehlikeye atıldığı bildirilen Hintli sağlayıcı eMudhra'dan sekiz ara sertifika otoritesi anahtarına Node.js'in güvenmesini de durduruyor.
Node.js Mozilla kök sertifika listesini kullanır ancak varsayılan olarak iptal kontrolleri yapmaz, bu yüzden bu güncellemeden önce tehlikeye atılmış bir anahtara dayalı bir sertifika zinciri yine de geçerli kabul edilirdi.
Yayınlar sekiz anahtara yerleşik bir engel ekler ve paketlenen kök listesini üç emSign kökünü kaldırmaya günceller. Go, 20 Ekim'deki kendi güncellemesinde aynı engeli uyguladı.
Güncellemeden önce başlamış bir oturumdan devam eden bağlantılar, oturum zaman aşımına uğrayana kadar yeniden kontrol edilmez ve yaşam döngüsü tamamlanmış hatlar engeli almaz.
10 açık dışında güncellemeler birkaç paketlenen bileşeni yeniler. fetch()'in arkasındaki HTTP istemcisi olan undici'nin kopyası, Alt Kaynak Bütünlüğü kontrolündeki bir sorun ve WebSocket istemcisinde de dahil olmak üzere iki bellek tükenmesi açığını düzelten üç orta düzey danışmanlığı gideren bir sürüme geçti.
Node.js ayrıca tüm hatlarda paketlenen c-ares'i, 22.x ve 24.x'te OpenSSL'i ve 22.x'te SQLite'ı kamuya açık olarak bilinen güvenlik açıkları için düzeltmeler içerecek şekilde güncelledi.
Hemen Güncelleyemiyorsanız
Güncelleme çözümüdür. Danışma, Brotli açığı için geçici bir çözüm sunmuyor, bu yüzden bir uygulama hemen güncellenemezse Node.js içinde bir geri plan yok.
Vercel, müşterileri için Node.js çalıştırdığını söyledi, 21 Ekim'de gelen isteklerde saldırıyı engelleyen güvenlik duvarı kuralları eklediğini belirtti. Kurallar bir uygulamanın diğer sunuculardan aldığı Brotli yanıtlarını kapsamaz ve güncellemenin yerini tutmaz.