Konuyu Okuyanlar: 1 Ziyaretçi

Node.js EOL Sürüm Tuzağı: Node2Shell Sonrası Desteklenen Sürüme Güvenli Geçiş

Node.js EOL Sürüm Tuzağı: Node2Shell Sonrası Desteklenen Sürüme Güvenli Geçiş
[Resim: attachment.php?aid=379]

Selamlar,

Node.js'in 21 Ekim 2026 güvenlik sürümleri (Node2Shell, CVE-2026-111497 dahil) yalnızca 22.x, 24.x ve 26.x hatlarına geldi. Node.js'in kendi uyarısı net: güvenlik sürümü çıktığında EOL (ömrü dolmuş) sürümler her zaman etkilenmiş kabul edilir. OX Security de 25.x, 23.x ve 20.x ile öncesinin düzeltme almayacağını vurguluyor. Bu konu, eski bir Node sürümünde kalmış projeyi güvenli ve tekrarlanabilir şekilde taşımanın pratik adımlarını anlatıyor.

Konuda anlatılacaklar
  1. Hangi sürüm hattındayım?
  2. nvm ile yerel geçiş
  3. .nvmrc ve engines ile sürümü sabitlemek
  4. Docker ve CI tarafı
  5. Geçiş sonrası test kontrol listesi

1. Envanter
Kod:
node -v npm -v # Projede beklenen surum tanimli mi? cat .nvmrc 2>/dev/null; grep -A2 '"engines"' package.json # Sunucuda birden fazla node kurulu mu? which -a node
Kural: tek sayılı hatlar (23, 25) kısa ömürlüdür; üretimde çift sayılı LTS hatlarını (22, 24, 26) tercih edin. Güncel destek takvimi için Node.js'in "Previous Releases" sayfasına bakın.

2. nvm ile yerel geçiş
Kod:
# nvm kurulu varsayiliyor (github.com/nvm-sh/nvm) nvm ls-remote --lts | tail -5 nvm install 24.22.1 nvm use 24.22.1 nvm alias default 24.22.1 node -v # v24.22.1
Native modül kullanan projelerde (bcrypt, sharp, sqlite3) node_modules'u silip yeniden kurun; ABI değiştiği için eski derlenmiş modüller çalışmaz.
Kod:
rm -rf node_modules npm ci

3. Sürümü sabitlemek
Kod:
echo "24.22.1" > .nvmrc
package.json içinde:
Kod:
"engines": { "node": ">=24.22.1 <25" }
.npmrc içine engine-strict=true eklerseniz yanlış sürümde kurulum hata verir. Böylece ekipte biri eski sürümle çalışınca hemen fark edilir.

4. Docker ve CI
Kod:
# Yanlis: yuzen etiket, ne zaman ne gelecegi belirsiz FROM node:20 # Dogru: yamali surum + sabit dagitim tabani FROM node:24.22.1-bookworm-slim
Daha da sıkı kontrol isterseniz imajı digest ile sabitleyin (dün bu konuyu ayrıca işlemiştik). CI'da:
Kod:
# GitHub Actions ornegi - uses: actions/setup-node@v4 with: node-version-file: .nvmrc
Konteynerde eski imajı yeniden başlatmak yetmez; yeniden build edip deploy edin.

5. Geçiş sonrası test
  1. Birim ve entegrasyon testleri yeni sürümde geçiyor mu?
  2. npm audit ve npm outdated çıktısı temiz mi?
  3. Brotli kullanan yollar (Content-Encoding: br kabul eden body parser, fetch ile çekilen yanıtlar) yeni runtime'da test edildi mi?
  4. Üretimde node -v gerçekten yeni sürümü gösteriyor mu? (PM2 veya systemd eski binary'yi tutuyor olabilir.)
Kod:
pm2 restart all --update-env && pm2 describe app | grep "node.js version"

En eski Node sürümünü hangi projede gördünüz ve geçişte en çok ne sorun çıkardı?

Yasal uyarı
Bu yazı bilgilendirme ve savunma amaçlıdır. Anlatılan kontrolleri yalnızca kendi sistemlerinizde veya yazılı izinle yapın. İzinsiz erişim, tarama ve sömürü girişimleri TCK 243-245 kapsamında suçtur. TurkTeam white-hat bir topluluktur; çalıntı veri, hesap, combo/log paylaşımı ve hack hizmeti talepleri forum kurallarına aykırıdır.

Kaynaklar


Ek DosyalarEkran Görüntüleri
   
Cevapla



Hızlı Menü: