Node.js tarafında 2026'da üç önemli değişiklik var: Node 20'nin desteği sona erdi, sürüm modeli değişiyor ve izin modeli (permission model) üretimde kullanılabilir hale geldi. Kısaca ne yapmanız gerektiği:
1. Node 20 artık güvenlik yaması almıyor
Node 20'nin destek süresi 30 Nisan 2026'da bitti. Bu tarihten sonra çıkan güvenlik açıkları Node 20 için düzeltilmiyor; örneğin Haziran 2026 güvenlik sürümü yalnızca aktif sürüm hatlarını kapsıyordu. Ağustos 2026 itibarıyla durum:
| Sürüm | Durum | Destek sonu |
|---|---|---|
| Node 22 | Bakım LTS (yalnızca güvenlik ve kritik düzeltmeler) | 30 Nisan 2027 |
| Node 24 | Aktif LTS | 30 Nisan 2028 |
| Node 26 | Current (5 Mayıs 2026'da çıktı) | 30 Nisan 2029 |
Sunucularınızda node -v çıktısı v20 ile başlıyorsa Node 24'e geçişi planlayın.
2. Yıllık sürüm modeli
- Node 27'den itibaren yılda iki yerine bir ana sürüm çıkacak (her nisan), ekim ayında LTS'ye geçecek.
- Tek/çift sürüm ayrımı kalkıyor: her sürüm LTS olacak.
- Sürüm numarası, ilk yayın yılını gösterecek: Node 27'nin alfası Ekim 2026'da başlıyor, 27.0.0 Nisan 2027'de çıkacak.
- Her sürüm toplam 36 ay destek alacak; Node 26 eski modelle çıkan son sürüm.
Pratik sonuç: yükseltme takvimini yılda bir, nisan-ekim aralığına göre planlayabilirsiniz.
3. İzin modeliyle uygulamayı sınırlamak
Tedarik zinciri saldırılarında zararlı paket, uygulamanızın tüm yetkileriyle çalışır. İzin modeli, sürecin hangi dosyalara ve ağa erişebileceğini sınırlıyor. Önce denetim modunda neye ihtiyaç olduğunu görün:
# Hangi izinlere ihtiyaç duyulduğunu kaydet, engelleme
node --permission-audit app.js
# Ardından izinleri daraltarak çalıştır
node --permission \
--allow-fs-read=/srv/app \
--allow-fs-write=/srv/app/uploads \
app.js
Bayrak adları sürümden sürüme değişebildiği için kendi Node sürümünüzün permissions belgesine bakın.
OpenJS'nin Q2 2026 güvenlik özeti iki öneri daha veriyor:
- Uygulama açıldıktan sonra artık gerekmeyen izinleri izin modelinin
permission.drop()fonksiyonuyla bırakın; örneğin yalnızca açılışta dosya okuyan bir servis sonra bu izni bırakabilir. - Kurulum betiklerini engellemek tek başına yeterli değil; çalışma zamanı izin sınırlaması da gerekli.
Bonus: bir bağımlılığı daha az
Node 26 ile gelen yerleşik Temporal API, tarih işlemleri için üçüncü taraf kütüphane ihtiyacını azaltıyor. Bu yıl date-fns'in de tedarik zinciri saldırısından etkilendiği düşünülürse, her kaldırılan bağımlılık saldırı yüzeyini küçültüyor.
const teslim = Temporal.Now.plainDateISO().add({ days: 14 });
console.log(teslim.toString()); // örn. 2026-11-02
Üretimde izin modelini kullanan var mı? Hangi kütüphanelerle sorun yaşadığınızı paylaşırsanız uyumluluk listesi çıkarabiliriz.
