dev adlı üyeden alıntı: mesajı görüntüle
quality vs quantity
Quality vs Quality

White House bile yanılıyor olamaz 👍


Sanki Node.js sıfır güvenlik açığı ile çalışan bir sistem gibi yorumlar çok güldürüyor bu tarz yorumlar. Amaca göre programlama dili kullanılır herşey fiyat/fayda üzerine kurulur.

Vibecoderlar tarafından tapılan Node.js' deki şimdiye kadar ortaya çıkan önemli açıklar, yüzlercesi daha var bakabilirsiniz.
Cpanelde olan açığı bile php üzerine yıkarak hiçbir yere varamazsınız vibecoderlar 🤣

1. HTTP İstek Kaçakçılığı ve Ayrıştırma Açıkları (HTTP Request Smuggling / Parsing)


Node.js'in dahili HTTP ayrıştırıcısı (llhttp ve eski http-parser) üzerinde en sık yama alan kategoridir.
  • CVE-2019-15605 / CVE-2020-8201: Transfer-Encoding ve Content-Length başlıklarının hatalı yorumlanması. Ters vekil sunucular (Nginx, AWS ALB vb.) ile Node.js arasındaki ayrıştırma farkı nedeniyle araya sahte HTTP istekleri enjekte edilmesine (Request Smuggling / Cache Poisoning) yol açtı.
  • CVE-2023-30589: Boşluk karakterleri ve satır sonu ayrıştırmasındaki kusurlar nedeniyle proxy bypass açıkları.

2. İzin Modeli ve Korumalı Alan Atlatma (Permission Model Bypass)


Node.js v20 ile deneysel olarak gelen ve dosya sistemi/ağ erişimini kısıtlayan dahili izin modelindeki sızıntılar:
  • CVE-2023-32002 / CVE-2023-32006: Module._load veya fs.open çağrıları üzerinden izin modeli parametrelerini atlatıp yetkisiz dosya okuma/yazma.
  • CVE-2024-21892: Linux process.binding('spawn_sync') ve dahili C++ fonksiyonları çağrılarak izin kısıtlamalarını tamamen delme.

3. Hizmet Reddi Açıkları (Denial of Service - DoS)


Node.js tek iş parçacıklı (single-threaded event loop) mimariye dayandığı için event loop'u kilitleyen açıklar felç edicidir:
  • CVE-2018-12121 (Node.js Slowloris): Çok yavaş gönderilen HTTP başlıklarının sunucu belleğini tüketmesi veya bağlantıları kapatmadan kaynakları tüketmesi.
  • CVE-2023-44487 (HTTP/2 Rapid Reset): HTTP/2 protokolündeki RST_STREAM paketlerinin sürekli gönderilmesiyle CPU tüketiminin %100'e fırlaması (tüm web ekosistemiyle birlikte Node.js HTTP/2 çekirdeğini de etkiledi).
  • CVE-2024-22019: HTTP istek başlıklarının ayrıştırılmasında CPU'nun kilitlenmesine neden olan DoS hatası.

4. Bellek Sızıntısı ve Başlatılmamış Bellek Okuma

  • Node.js new Buffer() Krizi (CVE gerektirmeyen tasarım hatası): Eski Node.js sürümlerinde new Buffer(sayı) çağrısı tahsis edilen belleği sıfırlamıyordu (zero-fill yoktu). Sunucu belleğinde kalan eski şifreler, token'lar veya özel veriler doğrudan yeni bellek bloğuna sızıyordu. Bu nedenle Buffer.alloc() ve Buffer.allocUnsafe() ayrımına gidildi.
  • CVE-2022-32213 / CVE-2022-32214: llhttp katmanında geçersiz karakterlerin bellek sızıntısına ve istek ayrıştırma bozulmalarına yol açması.

5. Komut ve Kod Enjeksiyonu (Remote Code Execution - RCE)

  • CVE-2024-27980: Windows işletim sisteminde child_process.spawn veya exec kullanılırken .bat ya da .cmd dosyalarının bağımsız değişkenlerinin hatalı filtrelenmesi sonucu komut satırı enjeksiyonu (Command Injection).
  • CVE-2023-30581: Kod yürütme sırasında dahili main context prototiplerinin bozulmasıyla kod izolasyonunun aşılması.

6. Sertifika ve Kriptografi Kusurları (OpenSSL / TLS)


Node.js, kriptografik işlemler ve TLS bağlantıları için OpenSSL kütüphanesini gömülü olarak kullanır.
  • CVE-2022-0778: OpenSSL'in geçersiz eliptik eğri (EC) parametrelerini doğrulamaya çalışırken sonsuz döngüye girmesi; TLS bağlantısı kabul eden Node.js sunucularını doğrudan çökertti.
  • CVE-2024-22025: TLS handshake sırasında bellek tüketiminin kontrolsüz artışı.

7. Ekosistem ve Bağımlılık Zinciri Açıkları (npm Supply Chain)


Doğrudan Node.js çekirdeğinde olmasa da Node.js projelerini çökerten en büyük krizler:
  • Prototype Pollution: lodash, extend gibi kütüphanelerdeki __proto__ manipulasyonu ile nesne prototipinin değiştirilip sunucu mantığının bozulması veya RCE elde edilmesi.
  • Tedarik Zinciri Sabotajları (Örn: event-stream, ua-parser-js, node-ipc): npm paketlerinin ele geçirilip cüzdan hırsızlığı veya sistem silme kodlarının milyonlarca projeye sızması.