Node.js İçin Kritik Güvenlik Güncellemesi: 10 Açık Kapatıldı

Node.js İçin Kritik Güvenlik Güncellemesi: 10 Açık Kapatıldı
0

Node.js ekibi, 21 Ekim 2026 tarihinde birden fazla güvenlik açığını gidermek amacıyla yeni sürümler yayımladı. Güncelleme; DNS çözümlemesi, TLS sertifika doğrulaması, sıkıştırılmış verilerin işlenmesi, rastgele sayı üretimi ve dosya sistemi izinleri gibi farklı alanları etkileyen toplam 10 güvenlik sorununu kapsıyor. Açıklanan açıklar arasında, özel olarak hazırlanmış Brotli verilerinin işlenmesiyle uzaktan kod çalıştırılmasına kadar ilerleyebilecek yüksek önem dereceli bir güvenlik açığı da bulunuyor.

Node.js projesi, 22.x, 24.x ve 26.x sürüm serilerini kapsayan güncellemelerle güvenlik sorunlarının giderildiğini duyurdu. Proje ekibi, güvenlik açıklarından korunmak için desteklenen sürümlerin güncel tutulması gerektiğini vurguluyor.

Node.js güvenlik güncellemesi hangi sürümleri kapsıyor?

Node.js tarafından yayımlanan güvenlik güncellemeleri üç sürüm serisini kapsıyor. Kullanıcıların ve sistem yöneticilerinin kontrol etmesi gereken sürümler şöyle:

  • Node.js 22.23.4
  • Node.js 24.22.1
  • Node.js 26.12.1

Resmî duyuruya göre her üç sürüm serisinde de en yüksek önem derecesine sahip açıklar yüksek seviyede sınıflandırıldı. Toplam 10 güvenlik sorununun dördü yüksek, üçü orta ve üçü düşük önem derecesine sahip.

Güncelleme yalnızca Node.js’in kendi koduyla sınırlı değil. c-ares, ca-cert, OpenSSL, SQLite ve Undici gibi bağımlılıklarda da güvenlik düzeltmeleri yapıldı. OpenSSL güncellemesi 22.x ve 24.x serilerini, SQLite güncellemesi ise 22.x serisini kapsarken c-ares, ca-cert ve Undici güncellemeleri üç sürüm serisinin tamamında yer alıyor.

Node.js ekibi, kullanım ömrü sona ermiş sürümlerin de yeni güvenlik duyurularında belirtilen sorunlardan etkilenmiş olabileceğine dikkat çekiyor. Bu nedenle yalnızca sürüm numarasının eski olması değil, kullanılan dalın hâlâ desteklenip desteklenmediği de önemli.

Brotli açığı uzaktan kod çalıştırılmasına yol açabiliyor

Güncellemede öne çıkan sorunlardan biri, CVE-2026-111497 koduyla takip edilen Brotli çözümleyici açığı. Node.js bünyesindeki Brotli veri çözümleyicisinde bulunan bu hata, bozuk biçimlendirilmiş sıkıştırılmış verilerin işlenmesi sırasında bellek sınırlarının aşılmasına neden olabiliyor.

Sorunun temelinde, geçersiz bir blok geçişinin kalıcı bir veri biçimi hatası olarak değerlendirilmemesi yatıyor. Çözümleyici, daha fazla veri beklendiğini varsayarak işlemeye devam ediyor ve giriş verilerini dahili olarak kullanılan sekiz baytlık bir arabelleğe ekliyor. Bu durum, arabellek sınırlarının dışına yazılmasına yol açabiliyor.

Bir uygulamaya, node:zlib üzerinden açılmak üzere saldırgan tarafından hazırlanmış Brotli verileri gönderilebiliyorsa süreç belleği bozulabiliyor. Bunun olası sonuçları arasında uygulamanın çökmesi, süreç belleğindeki bazı bilgilerin açığa çıkması ve uzaktan kod çalıştırılması bulunuyor.

Açığın yüksek önem derecesinde sınıflandırılmasının temel nedeni, uygun koşullarda bir uygulamanın yalnızca bozuk sıkıştırılmış veriyi işlemesiyle ciddi sonuçların ortaya çıkabilmesi. Bununla birlikte duyuru, her Node.js uygulamasının otomatik olarak saldırıya açık olduğu anlamına gelmiyor; risk, uygulamanın ilgili veri işleme yolunu kullanmasına ve saldırganın bu girdiyi sağlayabilmesine bağlı.

Bu güvenlik sorunu OpenAI Codex Security ekibinden Khai Tran ve Sylvie Mayer tarafından bildirildi. Düzeltmelerin hazırlanmasına mcollina ve aduh95 katkıda bulundu.

DNS çözümlemesinde alan adı doğrulaması aşılabiliyor

Bir diğer yüksek önem dereceli açık, CVE-2026-105482 koduyla izlenen DNS çözümleme hatası. Node.js’in dns.resolve*() işlevleri ve dns.reverse() fonksiyonu, alan adının içinde bulunan boş bayt karakteri nedeniyle adı sessizce kesebiliyor.

Örneğin attacker.example\0.trusted.example biçimindeki bir alan adı işlenirken DNS sorgusu, beklenen tam ad yerine attacker.example için gerçekleştirilebiliyor. Bunun nedeni, alan adının c-ares bileşenine C dizgesi olarak aktarılması ve boş bayt karakterinin dizgenin sonu olarak değerlendirilmesi.

Bu durum özellikle alan adlarını bir izin listesine göre kontrol eden uygulamalar açısından risk oluşturuyor. Uygulama bir alan adını güvenilir olarak doğruladıktan sonra DNS çözümlemesi yaptığında, gerçekte doğruladığından farklı bir alan adının kayıtlarıyla işlem yapabilir.

Açık, Node.js 22.x, 24.x ve 26.x sürüm serilerini etkiliyor. Duyuru, bunun daha önce yayımlanan CVE-2026-48930 düzeltmesinin eksik kalan bir devamı olduğunu belirtiyor. Önceki düzeltme yalnızca dns.lookup() ve net/tls seçeneklerini kapsıyordu.

TLS sertifika doğrulamasında üç farklı sorun giderildi

Güvenlik güncellemesinde, TLS bağlantılarında sunucu sertifikasının doğru IP adresiyle eşleştirilmesini etkileyen üç ayrı sorun da bulunuyor. Bu açıklar, bazı alışılmadık IP adresi yazımlarının normalleştirilmesi ve doğrulanması sırasında ortaya çıkıyor.

CVE-2026-105483 — Tam genişlikli rakamlarla sertifika doğrulama sorunu

Node.js 26.x ve 24.x sürümlerini etkileyen bu açıkta, IP adresi ASCII dışındaki karakterlerle yazıldığında TLS sertifika doğrulaması hatalı sonuç verebiliyor. Örneğin 127.0.0.1 biçimindeki adres, normalleştirildiğinde standart bir IPv4 adresine karşılık gelebiliyor.

Ancak tls.checkServerIdentity() bu adresi IP adresi olarak tanımak yerine DNS adı gibi değerlendirebiliyor. Bu nedenle sertifikadaki DNS adı veya Common Name alanı, bağlantı kurulan IP adresi için geçerli olmamasına rağmen kabul edilebiliyor.

CVE-2026-106069 — Baştaki sıfır nedeniyle farklı IP adresinin doğrulanması

Node.js 22.x, 24.x ve 26.x sürümlerini etkileyen bu açıkta, 0127.0.0.1 gibi standart dışı bir IPv4 gösterimi farklı bileşenler tarafından farklı yorumlanabiliyor.

WHATWG URL kurallarına göre başında sıfır bulunan sekizlik bölüm sekizlik tabanda değerlendirilebiliyor ve 0127.0.0.1, 87.0.0.1 biçiminde normalleştirilebiliyor. Buna karşılık bazı işletim sistemi çözümleyicileri, örneğin macOS’taki çözümleme davranışı, aynı ifadeyi onluk tabanda yorumlayarak 127.0.0.1 adresine bağlanabiliyor.

Sonuç olarak TLS sertifikası, istemcinin gerçekte bağlandığı IP adresi yerine başka bir IP adresi için doğrulanabiliyor.

CVE-2026-106072 — Standart dışı IPv4 yazımlarının DNS SAN ile doğrulanması

Node.js 22.x, 24.x ve 26.x sürümlerini etkileyen bu orta önem dereceli açık, 0177.0.0.1, 0x7f.0.0.1, 2130706433 veya 127.1 gibi standart dışı IPv4 gösterimlerinde ortaya çıkabiliyor.

Node.js bu adresleri IP adresi olarak sınıflandırmayıp normalleştirilmiş hâllerini sertifikadaki DNS SAN kayıtlarıyla karşılaştırabiliyor. Böylece yalnızca DNS:127.0.0.1 kaydını içeren, ancak uygun bir IP Address SAN kaydı bulunmayan sertifika belirli koşullarda kabul edilebiliyor.

Bu açığın kullanılabilmesi için istemcinin güvendiği bir sertifika otoritesi tarafından verilmiş uygun bir sayısal DNS SAN kaydına sahip sertifika ve ilgili gösterimleri kabul eden bir platform çözümleyicisi gerekiyor.

Bu üç sorun, TLS sertifika doğrulamasında farklı IP yazımlarının tutarlı biçimde ele alınmasının önemini gösteriyor. Sertifikanın doğrulanması, bağlantı kurulan uç noktanın gerçekten sertifikada belirtilen adres olduğunun kontrol edilmesine dayanıyor.

HTTP bağlantılarında eski yanıt yeni isteğe aitmiş gibi işlenebiliyor

CVE-2026-105481, Node.js HTTP Agent bileşeninin yeniden kullandığı kalıcı bağlantılarla (keep-alive) ilgili orta önem dereceli bir açık.

Normalde bir bağlantıda yeni istek gönderilmeden önce beklenmeyen veri gelirse ilgili soketin kapatılması gerekiyor. Ancak Node.js’teki kontrol, yalnızca olay döngüsü giriş/çıkış işlemlerini kontrol ettiğinde çalışıyor.

Beklenmeyen bir yanıt sokete ulaşmış ancak henüz okunmamışsa, örneğin olay döngüsü senkron işlemler nedeniyle meşgulse, bağlantı yeni bir istek için yeniden kullanılabiliyor. Bu sırada eski yanıt verisi fark edilmeden yeni isteğin yanıtı olarak işlenebiliyor.

Bu hata, daha önceki CVE-2026-48931 için hazırlanan düzeltmenin eksik kalan bir devamı olarak tanımlanıyor. Açık Node.js 22.x, 24.x ve 26.x sürümlerini etkiliyor.

Rastgele kimlikler ve dosya sistemi izinleri de etkilendi

Güvenlik duyurusunda, belirli yapılandırmalarda ortaya çıkan başka sorunlar da yer alıyor.

CVE-2026-106074 — Rastgele değerlerin süreçler arasında tekrarlanması

Node.js’in crypto.randomUUID(), crypto.randomUUIDv7() ve crypto.randomInt() işlevlerinde kullanılan entropi önbellekleri, başlangıç anlık görüntüleri (--build-snapshot) ve useSnapshot kullanan tek çalıştırılabilir uygulamalar (SEA) içine kaydedilebiliyor.

Anlık görüntü hazırlanırken bu işlevlerden biri çağrılırsa, önbellek yenilenene kadar aynı görüntüden başlatılan süreçler aynı değerleri üretebiliyor. Etki, 127 adede kadar UUID ve yaklaşık 1.000 randomInt() sonucu için görülebiliyor. Bu durum benzersiz olması beklenen kimliklerin çakışmasına veya bir süreçte üretilen değerlerin başka bir süreçte gözlemlenerek tahmin edilmesine neden olabilir.

Açık, Node.js 22.x, 24.x ve 26.x sürümlerini etkiliyor.

CVE-2026-106070 — ZIP dosyasında doğrulama hatasından sonra yanlış veri döndürülmesi

Node.js 26.x sürümünü etkileyen bu düşük önem dereceli açık, zlib.ZipFile API’siyle ilgili. ZIP dosyasındaki yerel başlık ile merkezi dizin başlığı uyuşmadığında doğrulama hatası yakalanabiliyor ancak ayrıştırılmış yerel başlık önbellekte kalabiliyor.

Daha sonraki bir içerik okuma işlemi, istenen ZIP girdisine ait veri yerine dosyanın başlangıcındaki saldırgan kontrollü baytları döndürebiliyor. Merkezi dizindeki CRC-32 değeri de saldırgan tarafından kontrol edilebildiğinden, bu doğrulama tek başına sorunu tespit etmeyebiliyor.

Bu durum, Node.js tabanlı bir tarayıcının onayladığı içerikle başka bir ZIP uygulamasının aynı arşivden çıkardığı içeriğin farklı olmasına yol açabilir.

CVE-2026-106071 — Dosya sistemi izinlerinde kapsamın genişlemesi

Yalnızca Node.js 26.x sürümünü etkileyen bu düşük önem dereceli açık, Permission Model kapsamındaki joker karakterli dosya sistemi izinleriyle ilgili.

Örneğin --allow-fs-read=/etc/passwd.* kuralı, belirli koşullarda yalnızca eşleşen dosyaları değil, doğrudan /etc/passwd dosyasını okumaya da izin verebiliyor. Sorun, istenen yol joker karakterli izin önekinin beklenen uzunluğundan kısa olduğunda ağaç tabanlı aramanın karşılaştırmayı erken sonlandırmasından kaynaklanıyor. Bunun gerçekleşmesi için joker karakterli iznin izin ağacının köküne doğrudan bağlı olması gibi koşullar gerekiyor.

CVE-2026-106073 — fs.realpathSync() ile izin kontrolünün aşılması

Node.js 22.x, 24.x ve 26.x sürümlerinde bulunan bu düşük önem dereceli sorun, fs.realpathSync() işlevinin gerekli okuma izni kontrollerini uygulamamasından kaynaklanıyor.

Kısıtlı --allow-fs-read izinleriyle çalışan bir süreç, bu işlevi kullanarak izin verilen dizinlerin dışındaki dosyaların varlığını kontrol edebilir, sembolik bağlantı hedeflerini çözümleyebilir ve dosya sistemi yolları hakkında bilgi edinebilir. Bu sorun da önceki CVE-2026-21715 düzeltmesinin eksik kalan bir devamı olarak açıklandı.

Node.js kullanıcıları ne yapmalı?

Node.js kullanan geliştiricilerin öncelikle çalıştırdıkları sürümü kontrol etmeleri ve kullandıkları sürüm serisi için yayımlanan güvenlik güncellemesine geçmeleri gerekiyor. Projenin duyurusunda belirtilen sürümler 22.23.4, 24.22.1 ve 26.12.1.

Windows üzerinde çalışan bir sunucuda Node.js sürümünü görmek için Komut İstemi veya PowerShell üzerinden şu komut kullanılabilir:

node -v

Örneğin çıktı v26.12.1 biçiminde görünür. Güncellemeden sonra aynı komutla sürümün değiştiği doğrulanabilir.

Birden fazla Node.js sürümünün veya farklı çalışma ortamlarının kullanıldığı sunucularda yalnızca tek bir kurulumun güncellenmesi yeterli olmayabilir. PM2, Supervisor veya benzeri araçlarla çalışan uygulamaların hangi Node.js kurulumunu kullandığı da kontrol edilmeli. Güncelleme sonrasında uygulamaların yeni çalışma zamanı sürümüyle yeniden başlatılması ve temel işlevlerinin test edilmesi gerekir.

Node.js uygulamaları, kullandıkları sürümün yanı sıra ilgili API’leri nasıl kullandıklarına bağlı olarak farklı riskler taşıyabilir. Özellikle kullanıcıdan veya harici sistemlerden gelen sıkıştırılmış verileri açan uygulamalar, DNS tabanlı izin listeleri kullanan servisler, TLS bağlantıları kuran istemciler ve dosya sistemi izinleriyle sınırlandırılmış süreçler dikkatle incelenmeli.

Node.js projesinin resmî duyurusu, bu güncellemedeki en yüksek önem dereceli sorunları yüksek (High) seviyesinde sınıflandırıyor. Bu nedenle güncellemenin ertelenmemesi ve kullanım ömrü sona ermiş Node.js sürümlerinden desteklenen bir sürüme geçilmesi öneriliyor.

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir