Node.js, 21 Ekim'de Brotli decoder'daki uzaktan kod yürütme riski taşıyan açık dahil 10 güvenlik açığını kapatan 22.23.4, 24.22.1 ve 26.12.1 sürümlerini yayınladı.
Yazılım ve Uygulamalar
Admin1 okunma

Node.js'te Brotli Açığı İçin Kritik Güvenlik Güncellemesi

Node.js, 21 Ekim'de Brotli decoder'daki uzaktan kod yürütme riski taşıyan açık dahil 10 güvenlik açığını kapatan 22.23.4, 24.22.1 ve 26.12.1 sürümlerini yayınladı.

Node.js'te Brotli Açığı İçin Kritik Güvenlik Güncellemesi

Haber detayı

Node.js, 21 Ekim'de desteklenen üç sürüm hattı için güvenlik güncellemeleri yayınladı. 22.x, 24.x ve 26.x hatlarında toplam 10 açık kapatılırken, en ciddi açık olarak Node.js'in birlikte paketlediği Brotli sıkıştırma açma kodundaki hata gösterildi. Proje, bu hatanın uzaktan kod yürütmeye olanak sağlayabileceğini belirtiyor. Güncellemelerle birlikte her hat için tek bir düzeltilmiş sürüm yayınlandı: uzun süreli destek hatlarında 22.23.4 ve 24.22.1, güncel hatta ise 26.12.1. Destek süresi dolan 20.x ve önceki sürümler bu düzeltmeyi almayacak ve desteklenen bir hatta geçirilmesi gerekiyor.
Brotli açığı, kullanıcının kendi programında değil, Node.js'in paketlediği kodda bulunuyor. Node.js bu kodu Brotli verisini açarken çalıştırıyor; doğrudan node:zlib modülü üzerinden veya fetch() çağrısı Brotli ile sıkıştırılmış bir yanıt aldığında otomatik olarak devreye giriyor. Bir uygulama, saldırganın kontrol ettiği Brotli verisini açtığı her yerde risk altında kabul ediliyor. Buna istek gövdesi veya başka bir sunucudan fetch ile alınan yanıtlar örnek gösteriliyor.

Brotli Decoder'daki Açık Nasıl Tetikleniyor?​

Kaynağa göre açık, Brotli decoder'da sınır dışı yazma (out-of-bounds write) olarak tanımlanıyor ve bozuk sıkıştırılmış girdi ile tetikleniyor. Düzeltme, Brotli projesinden gelen ve Node.js'in içeri kopyaladığı bir upstream yama. Yama, decoder'ın geçersiz girdiyi yakalayıp tamponun dışına yazmadan daha erken durmasını sağlıyor. Brotli, Google'ın sıkıştırma kütüphanesi ve Node.js kendi kopyasını paketliyor.
Aynı düzeltme 21 Ekim'de Brotli'nin 1.2.1, 1.1.1 ve 1.0.10 sürümlerinde de yayınlandı. Bu nedenle Brotli'yi paketleyen diğer yazılımların da aynı güncellemeye ihtiyaç duyabileceği belirtiliyor. Değişiklik ilk olarak Şubat 2026'da Brotli'nin kaynak kodunda yapılmış, ancak güvenlik sürümü olarak yalnızca Ekim ayında yayınlanmış.
Proje, açığın neye yol açabileceğini "uzaktan kod yürütme" olarak tanımlıyor ve açığı kritik yerine yüksek dereceli olarak derecelendiriyor. Pratikte ne kadarının gösterildiği ise daha sınırlı. 22 Ekim'de yayınlanan herkese açık bir kavram kanıtlama (proof-of-concept) çalışması, kod yürütmeyi yalnızca kasıtlı olarak zayıflatılmış bir test derlemesinde başarabildi. Standart bir Node.js derlemesinde aynı çalışmanın yazarı çökme ve süreç belleğinin sınırlı okunmasını rapor etti, normal derlemede çalışan bir saldırı elde edilemediğini söyledi. Yamalı Node.js, kavram kanıtlamada kullanılan bozuk girdiyi reddediyor ve 22 Ekim itibarıyla açığın vahşi ortamda istismar edildiğine dair bir rapor bulunmuyor.

Yüksek Dereceli Diğer Açıklar Neler?​

Brotli dışındaki düzeltmelerden üçü de yüksek dereceli olarak sınıflandırılıyor. İkisi, TLS sertifika kontrollerinin atlatılmasıyla ilgili. Bir sunucunun IP adresinin alışılmadık bir biçimde yazılması durumunda sertifikanın olmaması gereken bir ana bilgisayarla eşleşmesine yol açabiliyor. Bu iki açık CVE-2026-106069 ve CVE-2026-105483 olarak listeleniyor. Üçüncü yüksek dereceli açık ise dns.resolve çağrısının gömülü null bayt içeren bir ana bilgisayar adını kısa kesmesini engelliyor (CVE-2026-105482). Node.js, CVE-2026-105483'ü yüksek olarak derecelendirirken, düzeltmeyi yapan commit bu hatayı düşük şiddetli ve istismarı zor olarak nitelendiriyor.
Geriye kalan açıklar orta ve düşük dereceli. Orta dereceli bir açık, bir uygulama başlangıç anlık görüntüsü (startup snapshot) veya tek çalıştırılabilir uygulama (single-executable application) olarak derlendiğinde crypto.randomUUID() ve crypto.randomInt() çağrılarının her süreçte aynı değerleri döndürmesine neden oluyor (CVE-2026-106074). Bu durum, bu değerlerin öngörülemez olmasına dayanan her şeyi zayıflatıyor.
Tüm açıkların listesi, dereceleri ve etkilenen hatlar şöyle:
  • CVE-2026-111497: Brotli decoder'da sınır dışı yazma, projeye göre uzaktan kod yürütme - Yüksek - 22.x, 24.x, 26.x
  • CVE-2026-106069: IP adresi kanonik olmayan formda olduğunda TLS ana bilgisayar kontrolü atlatması - Yüksek - 22.x, 24.x, 26.x
  • CVE-2026-105483: IP tam genişlikli rakamlarla yazıldığında TLS ana bilgisayar kontrolü atlatması - Yüksek - 24.x, 26.x
  • CVE-2026-105482: dns.resolve null bayt içeren adları kesiyor - Yüksek - 22.x, 24.x, 26.x
  • CVE-2026-105481: Keep-alive soketi istek gönderilmeden önce yazılan yanıtı işleyebiliyor - Orta - 22.x, 24.x, 26.x
  • CVE-2026-106072: Kanonik olmayan IPv4 için sertifika doğrulaması DNS adlarının IP uç noktalarını doğrulamasına izin veriyor - Orta - 22.x, 24.x, 26.x
  • CVE-2026-106074: randomUUID() ve randomInt() önbelleği başlangıç anlık görüntülerinde ve tek çalıştırılabilir uygulamalarda yeniden kullanılıyor - Orta - 22.x, 24.x, 26.x
  • CVE-2026-106070: ZipFile başarısız başlık kontrolünden sonra saldırgan kontrollü baytlar döndürüyor - Düşük - 26.x
  • CVE-2026-106071: Permission Model joker karakter araması üzerinden fazla dosya erişimi veriyor - Düşük - 26.x
  • CVE-2026-106073: fs.realpathSync ile Permission Model atlatması - Düşük - 22.x, 24.x, 26.x
\n

eMudhra Sertifika Engeli ve Güncellenen Bağımlılıklar​

Aynı güncellemeler, Node.js'in Hindistan merkezli sağlayıcı eMudhra'ya ait sekiz ara sertifika otoritesi anahtarına güvenmeyi de durduruyor. Bu anahtarların günler önce ele geçirildiği bildirilmişti. Node.js, Mozilla kök sertifika listesini kullanıyor ancak varsayılan olarak iptal kontrolü yapmıyor. Bu nedenle güncellemeden önce bu anahtarlar üzerine kurulu bir sertifika zinciri hala geçerli sayılıyordu. Yeni sürümler sekiz anahtara yerleşik bir engel ekliyor ve paketlenmiş kök listesini güncelleyerek üç emSign kökünü kaldırıyor. Go da aynı engeli 20 Ekim'deki kendi güncellemesinde uygulamıştı. Güncellemeden önce başlayan bir oturumdan devam eden bağlantılar, oturum zaman aşımına uğrayana kadar yeniden kontrol edilmiyor ve destek süresi dolan hatlar bu engeli almıyor.
10 açığın ötesinde güncellemeler paketlenmiş birkaç bileşeni de yeniliyor. fetch() arkasındaki HTTP istemcisi undici'nin kopyası, üç orta dereceli danışma belgesini düzelten bir sürüme taşınıyor. Bunlardan biri Subresource Integrity kontrolünde, ikisi bellek tüketimi açıklarında, biri Node.js içine gömülü WebSocket istemcisinde bulunuyor. Node.js ayrıca tüm hatlarda paketlenmiş c-ares'i, 22.x ve 24.x hatlarında OpenSSL'i ve 22.x hattında SQLite'ı herkese açık bilinen güvenlik açıklarına yönelik düzeltmeleri içerecek şekilde güncelledi.

Yükseltme Yapamayanlar İçin Durum Ne?​

Kaynak, düzeltmenin yükseltme olduğunu ve danışma belgesinin Brotli açığı için geçici bir çözüm sunmadığını belirtiyor. Bu nedenle hemen yükseltme yapamayan bir uygulamanın Node.js içinde bir geri dönüşü bulunmuyor. Müşterileri için Node.js çalıştıran Vercel, 21 Ekim'de gelen isteklerdeki saldırıyı engelleyen güvenlik duvarı kuralları eklediğini açıkladı. Bu kuralların bir uygulamanın diğer sunuculardan fetch ile aldığı Brotli yanıtlarını kapsamadığı ve yükseltmenin yerini tutmadığı ifade ediliyor.

Sıkça Sorulan Sorular​

Node.js'teki en ciddi açık hangisi ve hangi sürümleri etkiliyor?​

En ciddi açık, Node.js'in paketlediği Brotli decoder'daki sınır dışı yazma hatası (CVE-2026-111497). Yüksek dereceli olarak sınıflandırılıyor ve projenin tanımına göre uzaktan kod yürütmeye olanak sağlayabilir. Desteklenen tüm hatları, yani 22.x, 24.x ve 26.x'i etkiliyor.

Düzeltilmiş Node.js sürümleri hangileri?​

Her desteklenen hat için bir düzeltilmiş sürüm yayınlandı: 22.23.4 ve 24.22.1 uzun süreli destek hatlarında, 26.12.1 ise güncel hatta. 20.x ve öncesi destek dışı olduğu için düzeltme almayacak.

Brotli açığı nasıl istismar ediliyor ve kavram kanıtlama ne gösterdi?​

Açık, bozuk sıkıştırılmış girdi ile tetiklenen sınır dışı yazma. Node.js bu kodu node:zlib modülü veya fetch() ile Brotli yanıtı otomatik açılırken çalıştırıyor. 22 Ekim'de yayınlanan kavram kanıtlama yalnızca zayıflatılmış test derlemesinde kod yürütmeye ulaştı, standart derlemede çökme ve sınırlı bellek okuma rapor edildi ve normal derlemede çalışan saldırı elde edilemedi. Yamalı Node.js bozuk girdiyi reddediyor.

eMudhra ile ilgili sertifika engeli nedir?​

Güncellemeler, ele geçirildiği bildirilen eMudhra'ya ait sekiz ara sertifika otoritesi anahtarına güvenmeyi durduruyor ve üç emSign kökünü paketlenmiş listeden kaldırıyor. Node.js varsayılan olarak iptal kontrolü yapmadığı için bu engel eklendi. Go aynı engeli 20 Ekim'de uygulamıştı.

Hemen yükseltme yapamayan uygulamalar için geçici çözüm var mı?​

Kaynağa göre danışma belgesi Brotli açığı için geçici çözüm sunmuyor ve yükseltme düzeltme olarak gösteriliyor. Vercel 21 Ekim'de gelen istekler için güvenlik duvarı kuralları ekledi ancak bu kurallar fetch ile alınan Brotli yanıtlarını kapsamıyor ve yükseltmenin yerini tutmuyor.

Etiketler

Yorumlar (0)

Yorum yapmak için giriş yapmalısınız.

Geri
Üst