Hâlâ Node.js 20 mi Kullanıyorsunuz? 11 Kasım Güvenlik Güncellemesi Sizi Kapsamayacak

Node.js 20 End-of-Life

Node.js 20, 11 Kasım 2026'da hiçbir güncelleme almayacak. Güvenlik sürümleri yalnızca 26.x, 24.x ve 22.x sürümlerini kapsıyor; çünkü Node.js 20, 30 Nisan 2026'da kullanım ömrünün sonuna (End-of-Life) ulaştı. Yayınlanan son yamanız 24 Mart tarihli 20.20.2 sürümüydü. O günden bu yana, 20.x için herhangi bir derleme yapılmadan 33 CVE yayınlandı. Bu hafta 24 veya 26 sürümüne geçin.

Bugün Apidog'u deneyin

Bu CVE'ler, 20 sürümünü dışarıda bırakan üç ayrı güvenlik sürümüyle geldi. Dördüncüsüne ise yalnızca birkaç gün kaldı ve ön duyuru, en kritik açığı desteklenen tüm sürümlerde YÜKSEK (HIGH) olarak derecelendiriyor.

11 Kasım nedir ve Node.js 20 neden kapsam dışı bırakıldı?

Node.js projesi; 11 Kasım 2026 Çarşamba günü veya hemen sonrasında yeni 26.x, 24.x ve 22.x derlemelerini yayınlayacak. Henüz hiçbir CVE detayı kamuoyuyla paylaşılmadı ve derlemeler çıkana kadar da gizli tutulacak. Kasım sürümüne geri sayım rehberimiz çalışma zamanı envanterini ve yama günü komutlarını ele aldığından, bu yazıda bunlara değinmiyoruz.

Node.js projesi artık bakımını yapmadığı için Node.js 20 bu listede yer almıyor. End-of-Life (Kullanım Ömrü Sonu) sayfası bu konuda oldukça net: Yeni güvenlik sürümleri açıkları ortaya çıkardığında, "aynı güvenlik açığı EOL durumundaki sürüm serilerini etkilese bile, bunlar için yeni bir sürüm yayınlanmayacaktır."

Güvenlik bildirimi sizi yakından ilgilendiren bir cümle daha ekliyor: "Bir güvenlik sürümü yayınlandığında, kullanım ömrü sona ermiş (End-of-Life) sürümler her zaman bundan etkilenir."

Node.js 20 şimdiden neleri kaçırdı?

Node.js 20 kullanım ömrünü tamamladığından beri üç güvenlik sürümü yayınlandı. Hiçbirinde 20.x derlemesi yer almadı.

Güvenlik Bildirimi CVE Sayısı Yüksek Orta Düşük Düzeltilen Sürüm
18 Haziran 2026 12 2 6 4 26.3.1, 24.17.0, 22.23.0
29 Temmuz 2026 11 3 5 3 26.5.1, 24.18.1, 22.23.2
21 Ekim 2026 10 4 3 3 26.12.1, 24.22.1, 22.23.4
Toplam 33 9 14 10 20.x derlemesi yok

Bu düzeltmelerin temas ettiği kodlar, bir API sunucusunun gün boyu çalıştırdığı kodların ta kendisidir:

  • TLS ana makine adı (hostname) denetimleri. Hem Haziran hem de Ekim sürümlerinde, bir sertifikanın yanlış ana makine için kabul edilmesine yol açan açıklar düzeltildi.
  • HTTP/2. Temmuz ayındaki yüksek önem dereceli düzeltmeler arasında bir yığın bellek serbest bırakma sonrası kullanım (heap use-after-free) ve uzaktan bellek tükenmesi (remote memory exhaustion) hatası yer alıyor.
  • DNS. Ekim güncellemesi, dns.resolve*() fonksiyonunun ana makine adlarını bir NUL baytında keserek izin verilenler listelerini (allowlist) atlatabilmesi sorununu giderdi.
  • Sıkıştırma. Ekim ayında Brotli kod çözücüsünde uzaktan kod yürütmeyle (RCE) sonuçlanabilecek bir sınır dışı yazma (out-of-bounds write) hatası düzeltildi. Bunu Brotli RCE incelemesi yazımızda ele alıyoruz.

Bu listeyi dikkatle inceleyin. Node.js projesi kullanım ömrü dolmuş sürümleri değerlendirmediğinden, güvenlik bildirimlerinde yalnızca desteklenen sürümlerin adı geçer. Bu hataların bazıları 20 sürümünde bulunmayan kodlarda yer alabilir: örneğin bir Ekim CVE'si, projenin yalnızca 26.x ve 24.x sürümleriyle sınırlandırdığı bir regresyondur. Dolayısıyla Node.js 20'deki her bir CVE'nin dürüst durumu yamasız ve değerlendirilmemiş şeklindedir. Kimse güvende olduğunuzu söylemedi ve kimse bunu sizin için kontrol etmeyecek.

Hata zincirleri durumu daha da vahim hale getiriyor. Ekim ayındaki DNS düzeltmesi bir Haziran düzeltmesini tamamlıyor; Temmuz ayındaki bir düzeltme ise bir diğer Haziran düzeltmesinin üzerine inşa ediliyor. Sonraki her yama, sizde bulunmayan bir yamanın devamı niteliğindedir.

Timeline of Node.js 20: last build on March 24, 2026, End-of-Life on April 30, then security releases on June 18, July 29 and October 21 with no 20.x fix, and the November 11 release still pending

"Ama hâlâ çalışıyor"

Çalışıyor. Asıl sorun da bu zaten.

Kullanım ömrü dolmuş bir çalışma zamanı aniden hata verip çökmez. node -v aynı sürümü yazdırır, testleriniz geçer ve panolarınız yeşil kalmaya devam eder. Risk ise gözünüzün üzerinde olmadığı yerlerde ortaya çıkar:

  • Yamanın kendisi bir yol haritasıdır. Düzeltmeler, güvenlik bildirimleri ve commit'ler eşzamanlı olarak herkese açık hale gelir; böylece herkes desteklenen bir sürümde tam olarak neyin değiştiğini görüp aynı kodun 20 sürümünde var olup olmadığını inceleyebilir.
  • Kullandığınız platform dağıtıma izin vermeye devam edebilir. AWS Lambda, 30 Nisan 2026'da nodejs20.x sürümünü kullanım dışı (deprecated) olarak işaretledi; ancak 29 Temmuz 2027'ye kadar yeni fonksiyon oluşturmayı, 31 Ağustos 2027'ye kadar da güncellemeleri engellemeyecek.
  • Paketler ve güvenlik denetimleri yoluna devam eder. Node.js projesi; popüler paketlerin zamanla kullanım ömrü bitmiş sürümlere desteği kestiği ve birçok sektör denetiminin bakımı yapılmayan çalışma zamanlarını kesinlikle yasakladığı konusunda uyarıyor.

Hedefinizi belirleyin: 22 değil, Node.js 24 veya 26

En kısa ve zahmetsiz yolu arıyorsanız bu hafta 24 sürümüne geçin. Kaldırılan özellikleri şimdiden göğüsleyebiliyorsanız ve en uzun vadeli desteği istiyorsanız 26 sürümünü seçin. 22 sürümünü ise doğrudan atlayın: Kasım ayı düzeltmesini alıyor olsa da desteği altı aydan kısa bir süre sonra, 30 Nisan 2027'de sona eriyor; yani bahar geldiğinde aynı göç sürecini tekrarlamak zorunda kalırsınız.

Sürüm Serisi Durum 5 Kasım İtibarıyla En Güncel Destek Bitişi En Uygun Senaryo
26.x "Lithium" 28 Ekim 2026'dan beri Aktif LTS 26.13.0 30 Nis 2029 Şu an baştan sona yeniden test edebileceğiniz servisler
24.x "Krypton" 20 Ekim 2026'dan beri Bakım (Maintenance) LTS 24.22.2 30 Nis 2028 20 sürümünden en hızlı ve güvenli çıkış yolu
22.x "Jod" Bakım (Maintenance) LTS 22.23.4 30 Nis 2027 Bugün göç etmeye değmez

Tarihler Node.js sürüm takviminden alınmıştır. Kararınızı kesinleştirmeden önce altyapı platformunuzu kontrol edin. Örneğin Lambda üzerinde Node.js 26 çalışma zamanı genel önizlemede (public preview) olup Lambda SLA kapsamına dahil değildir; bu nedenle şu anda canlı ortamlar için orada 24 sürümü daha güvenli bir hedeftir.

Bar chart of Node.js support windows from November 2026: 22.x ends April 30, 2027, 24.x ends April 30, 2028, and 26.x ends April 30, 2029

Göç adımları ve nelerin bozulabileceği

Bu tablodaki tüm bilgiler 22.0.0, 24.0.0, 25.0.0 ve 26.0.0 sürümlerinin resmi sürüm notlarından ve v22'den v24'e geçiş rehberinden derlenmiştir. Bu liste tüm değişiklik günlüğü değil, API servislerine odaklanan özet bir listedir.

Gelen Sürüm Değişiklik Kimi Etkiler
22 import ... assert { type: 'json' } kaldırıldı; yerine with kullanın JSON içe aktaran ESM kodları
22 crypto.createCipher() ve createDecipher() kaldırıldı Eski şifreleme kodları
23 ve 24 Önceden derlenmiş 32-bit Windows veya 32-bit armv7 Linux ikili dosyaları sunulmuyor; minimum macOS 13.5 Eski sunucular ve uç (edge) cihazlar
24 Güvenlik seviyesi 2'de OpenSSL 3.5: 2048 bit altındaki RSA, DSA ve DH anahtarları, 224 bit altındaki ECC anahtarları ve RC4 yasaklandı mTLS ve eski upstream servisler
24 tls.createSecurePair kaldırıldı; url.parse() çalışma zamanında kullanım dışı bırakıldı Eski ağ kodları
24 Daha sıkı fetch() uyumluluğu, AbortSignal doğrulaması; stream ve pipe hataları artık hata fırlatıyor HTTP istemcileri, vekil sunucular (proxy)
24 V8 13.6; eklentiler (addons) C++20 gerektirebilir Yerel modüller (native modules)
25 (hedef 26 ise) SlowBuffer ile fs.F_OK, R_OK, W_OK, X_OK kaldırıldı; Corepack artık birlikte gelmiyor Eski yardımcı araçlar, Corepack üzerinden Yarn veya pnpm
25 (hedef 26 ise) TLS servername olarak IP adresi kullanımı kullanım ömrü sonuna taşındı IP ile bağlanan istemciler
26 _stream_* modülleri ve writeHeader() kaldırıldı; module.register() çalışma zamanında kullanım dışı bırakıldı; Undici 8 Eski stream kodları, özel yükleyiciler (custom loaders)

En çok can yakabilecek olan, sessizce gelen OpenSSL satırıdır. Kodunuzda hiçbir değişiklik olmasa bile, eski bir iş ortağının sistemiyle yapılan el sıkışma (handshake) çalışma zamanında başarısız olur.

Ayrı bir dalda (branch); .nvmrc, engines, Dockerfile ve CI yapılandırmanızı hedef sürüme güncelleyin (temiz bir makine için Node.js kurulum rehberinden yararlanabilirsiniz). Ardından yerel modüllerin yeniden derlenmesi için bağımlılıkları sıfırdan yükleyin, kaldırılan API'leri tarayın, resmi codemod'ları çalıştırın ve servisi kullanım dışı (deprecation) izleme açık şekilde başlatın:

nvm install 24 && nvm use 24 rm -rf node_modules && npm ci grep -rnE "assert \{ *type|createCipher\(|createDecipher\(|url\.parse\(|fs\.[FRWX]_OK|SlowBuffer|createSecurePair|_stream_[a-z]+|module\.register\(" \ --include="*.js" --include="*.mjs" --include="*.ts" --exclude-dir=node_modules . npx codemod run @nodejs/import-assertions-to-attributes npx codemod run @nodejs/crypto-createcipheriv-migration npx codemod run @nodejs/tls-create-secure-pair-to-tls-socket npx codemod run @nodejs/fs-access-mode-constants NODE_OPTIONS="--trace-deprecation" npm start 

Codemod çıktılarını elle gözden geçirin. createCipher için üretilen kod konusunda durum açıktır: Oluşturulan kod, eski API ile şifrelenmiş verileri çözemez; dolayısıyla böyle bir veriniz varsa veri göçü planlayın.

Node.js sitesinde henüz 24'ten 26'ya geçiş rehberi bulunmuyor; bu nedenle bu geçiş için 25.0.0 ve 26.0.0 sürüm notlarını kullanın.

API'nin yeni sürümde aynı davrandığını doğrulayın

Birim testleri, yeni bir TLS yığınının ve HTTP istemcisinin gerçek trafikte nasıl davranacağını göstermez. İki veya üç ana sürüm birden atlarken çalışan servisin öncesi ve sonrasını karşılaştırmak istersiniz; bu da kodlama asistanınız (coding agent) için biçilmiş bir kaftandır.

Apidog CLI; Claude Code, Codex veya Cursor'ın terminal üzerinden Apidog test senaryolarınızı çalıştırmasını sağlar. Bir defaya mahsus kurun:

npm install -g apidog-cli@latest apidog login --with-token <YOUR_TOKEN> npx -y skills add https://apidog.com # pick your agent when prompted 

Ardından asistanınıza şu komutu (prompt) verin:

My service runs on Node.js 20 in staging. Run Apidog test suite <suiteId> in project <projectId> against environment <envId> and save reports to reports/node20. When I redeploy on Node.js 24, run the same suite into reports/node24. List every request whose status, body, or TLS behavior changed. Then read the service logs for deprecation warnings and check each failure against the 22, 24, and 25 release notes: removed APIs, changed defaults, stricter fetch and AbortSignal handling, OpenSSL key size rejections. 

Asistan, göçün her iki aşamasında da aynı test paketini çalıştırır:

apidog run --test-suite <suiteId> --project <projectId> -e <envId> \ -r cli,junit --out-dir reports/node20 # redeploy the service on the target line, restart it apidog run --test-suite <suiteId> --project <projectId> -e <envId> \ -r cli,junit --out-dir reports/node24 

Karşılaştırmanın sağlıklı ve güvenilir olmasını sağlayan iki kritik nokta vardır:

  • Asla -k parametresini kullanmayın. Bu bayrak SSL doğrulamasını devre dışı bırakır ve tam da aradığınız TLS hatalarını gizler.
  • Servisinizin upstream sistemlere yaptığı çağrıları da dahil edin. Bir OpenSSL reddi, eski iş ortağı sistemine bağımlı bir uç noktada API hatası olarak kendini gösterir; bu yüzden sadece /health kontrolünü değil, bu yolları da test edin.

Göç başarıyla tamamlandıktan sonra bu adımı CI/CD ardışık düzeninizde (pipeline) tutmaya devam edin. İş akışının ayrıntılarını Apidog CLI CI/CD rehberinde, asistan kurulumunu ise Claude Code adım adım kullanım kılavuzunda bulabilirsiniz.

Bu hafta geçiş yapamıyorsanız

Yamalanmış özel derlemeler satın alın. Node.js End-of-Life sayfası, OpenJS Ekosistem Sürdürülebilirlik Programı kapsamında üç iş ortağını listeler. HeroDevs güvenlik yamalarıyla Never-Ending Support sunar. TuxCare'in Endless Lifecycle Support hizmeti kullanım ömrü bitmiş sürümler için düzeltmeleri geriye dönük uygular. NodeSource ise yükseltme değerlendirmeleri ve destek sağlar. Proje bunu geçici bir çözüm olarak nitelendiriyor ve gerçekten de öyle.

Sürece erişebilecek alanı daraltın. Bu adımlar yukarıdaki hata türlerine maruz kalma riskinizi azaltır; ancak hiçbir şeyi kökünden düzeltmez:

  • TLS ve HTTP/2 sonlandırmasını güncel ve bakımı yapılan bir ters vekil sunucuda (proxy) veya yük dengeleyicide (load balancer) yapın ve özel bir ağ üzerinden Node.js ile yalın HTTP/1.1 üzerinden iletişim kurun.
  • Hem gelen isteklerde hem de dışarıdan çekilen içeriklerde güvenilmeyen kaynaklardan gelen Brotli sıkıştırmasını açmayı durdurun.
  • Herhangi bir izin verilenler listesi kontrolünden veya giden çağrıdan önce NUL baytı içeren veya standart dışı IP yazımlarına sahip ana makine adlarını reddedin.
  • Servisi izole edin: en az yetki ilkesine (least-privilege) sahip kimlik bilgileri, sınırlandırılmış giden trafik (egress) ve yamalanmış servislerle paylaşılmayan gizli anahtarlar (secrets).

Riski kayıt altına alın. Bu durumun "geçici" olarak kalmaması için bir sorumlu, net bir göç tarihi ve telafi edici kontroller belirleyin.

Sıkça Sorulan Sorular

Node.js 20 hâlâ destekleniyor mu? Hayır. 30 Nisan 2026'da kullanım ömrünü (End-of-Life) tamamladı. Son derleme 24 Mart 2026 tarihli 20.20.2 sürümüdür ve proje yeni bir derleme yayınlamayacaktır.

Node.js 20, 11 Kasım'daki güvenlik açıklarına karşı savunmasız mı? Henüz hiçbir CVE detayı kamuoyuyla paylaşılmadığı için hangilerinin geçerli olduğunu kimse kesin olarak söyleyemez. Ancak güvenlik bildirimi, yeni bir güvenlik sürümü çıktığında kullanım ömrü bitmiş sürümlerin her zaman etkilendiğini ve projenin bunları artık ayrı ayrı değerlendirmediğini belirtmektedir.

Bunun yerine Node.js 22 sürümüne yükseltmeli miyim? Hayır. En küçük sürüm sıçraması bu olsa da, desteği 30 Nisan 2027'de sona eriyor. 24 sürümüne geçmek size bir yıl daha destek kazandırır; 26 sürümü ise iki yıl kazandırır.

Node.js 24 mü yoksa 26 mı? Bu hafta acil bir çıkış yoluna ihtiyacınız varsa veya kullandığınız platform henüz 26 sürümünü tam olarak desteklemiyorsa 24'ü seçin. Her şeyi hemen baştan test edebilecek durumdaysanız, desteği 30 Nisan 2029'a kadar sürecek olan 26 sürümünü tercih edin.

Node.js 25 kullanıyorum. Bu durum benim için de geçerli mi? Evet. Node.js 25, son derlemesi olan 25.9.0 ile birlikte 1 Haziran 2026'da kullanım ömrünü tamamladı. Kasım ayındaki düzeltmeleri o da almayacak ve 26 sürümüne geçmek yalnızca bir ana sürüm uzağınızda.