· kaynak dev.to (home feed)
İki npm güvenlik bülteni: fast-jwt HMAC karışıklığı ve decompress symlink dizin aşımı için dependency güncellemesi gerekiyor
Bu ay yayımlanan iki npm güvenlik bülteni — fast-jwt'deki CVSS 9.8 puanlı anahtar karışıklığı açığı ve decompress'teki CVSS 9.1 puanlı yol aşımı açığı — yalnızca dependency değişikliğiyle gideriliyor; Node.js güncellemesi bu ikisini çözmüyor.

İki bülten, tek operasyonel ders
Bu ay yayımlanan iki npm güvenlik bülteni, egzotik bileşenler değil sıradan kütüphaneleri hedefliyor. Bir dev.to yazısına göre ilki, imza doğrulama kütüphanesi fast-jwt'deki ciddi bir açık: Kütüphane bir RSA public key'i, sanki simetrik bir HMAC secret'mış gibi kabul edebiliyor. İkincisi ise decompress arşiv çıkarma ailesindeki bir yol aşımı açığı; arşivin dosyaları hedef dizinin dışına yerleştirmesine imkân veriyor. İkisi kod düzeyinde hiçbir şey paylaşmıyor, ama operasyonel olarak aynı sorunlar: her biri bir dependency değiştirilerek çözülüyor ve ikisine de Node.js'un kendisini yükseltmek dokunmuyor.
fast-jwt, bir public key'i HMAC secret olarak ele alıyor
CVSS 9.8 puanlı CVE-2026-107722, yazıda listelendiği üzere fast-jwt 6.2.0 ile 6.3.0 arasındaki sürümleri etkiliyor. Hata, kütüphanenin anahtar malzemesini tanıma biçiminde yatıyor. Bir RSA public key aldığında, girdinin bir PEM bloğuna benzeyip benzemediğini kontrol ediyor. PEM başlığından önce boşluk olmayan herhangi bir içerik görünürse — yorumlar, kontrol karakterleri, zero-width karakterler veya sarmalayıcı metin buna dahil — kontrol başarısız oluyor ve kütüphane değerin tamamını paylaşımlı bir HMAC secret olarak ele alıyor.
Bu, anahtar malzemesini etkileyebilen bir saldırgana bir giriş yolu veriyor: şekillendirebileceği bir anahtar endpoint'i, bir yapılandırma dosyası ya da bir JWKS yanıtı. RSA public key'i sanki bir HMAC secret'mış gibi sunuyor, aynı dizgiyi HMAC anahtarı olarak kullanarak bir token imzalıyor ve doğrulama başarıyla sonuçlanıyor. İmza kontrolü yine de çalışıyor; sadece yanlış algoritma ailesine karşı çalışıyor.
Yazı, düzeltilmiş sürümü 6.3.0 veya sonrası olarak tanımlıyor — ki bu, etkilenen aralığın 6.3.0'da bitmesiyle biraz çelişiyor — ve ayrıca üçüncü taraf bir Çince bildirimin yamanın eksik olduğunu söylediğini not ediyor. Ekipler, kesin düzeltilmiş sürümü satıcı bülteninden teyit etmeli ve bir bulguyu kapatmadan önce anahtar enjeksiyon yolunu kendileri test etmeli.
decompress, bir symlink zinciriyle hedef dizinden kaçıyor
CVSS 9.1 puanlı CVE-2026-101894, decompress paket ailesindeki bir yol aşımı açığı. Bir symlink içeren arşiv, ardından bu symlink üzerinden ilerleyen bir dosya yazımı, içeriğin hedef dizinin dışına yerleşmesine izin veriyor. Yazının belirttiğine göre, açılan içerik sonradan çalıştırılıyorsa veya require ediliyorsa, bu uzaktan kod çalıştırmaya yetiyor.
Daha önemli ayrıntı ise ekosistem bölünmesi. Orijinal decompress paketi bakımsız ve 4.2.1 sürümünde düzeltmesiz durumda. Bakımı sürdürülen fork olan @xmhikosr/decompress ise 10.2.2 ve 11.1.4 sürümlerinde düzeltilmiş. Orijinal pakete çözümlenen bir dependency ağacı, tarayıcıda gerçekte kurulu pakete uymayan bir düzeltme sürümüyle birlikte bir bulgu ortaya çıkarır.
Bir Node.js yükseltmesi burada neden hiçbir şeyi değiştirmiyor
Node.js 22.23.4, 24.22.1 ve 26.12.1, 21 Ekim 2026'da kendi güvenlik düzeltmeleriyle birlikte yayımlandı. Bunlardan birini uygulamak motoru değiştirir. node_modules içeriğini yeniden yazmaz ve lockfile en son üretildiğinde bir transitive dependency'nin neye çözümlendiğini değiştirmez.
Yazının savunduğuna göre bu iki açık, bir dependency denetiminin ters gittiği iki klasik yolu da modelliyor. fast-jwt bir sürüm aralığı sorunu: 6.2.0 ile 6.3.0 arasındaki etkilenen pencere, gözden kaçırılan dar aralıkların tam tipik örneği; bu yüzden çözümlenmiş sürümü değerlendirmeyen bir tarayıcı ya açığı kaçırır ya da her kurulumu işaretler. decompress ise bir kimlik sorunu: tek bülten farklı kaderlere sahip iki paketi kapsıyor ve yalnızca paket adına dayalı otomatik remediation, var olmayan bir düzeltmeyi önermeye devam eder.
Yazıdan pratik adımlar
nTahmin etme, çözümle. Lockfile'daki gerçek çözümlenmiş sürümleri, iç içe kopyalar dahil, npm ls fast-jwt ve npm ls decompress komutlarıyla yazdır; çıktı bir ağaçtır, evet-hayır yanıtı değil.
nJWT kütüphanesini güvenlik açısından kritik olarak ele al ve açıkça pin'le. İmza doğrulama kütüphanesinde geride kalmak, bir biçimlendirme yardımcısında geride kalmaktan farklı bir büyüklükte risktir.
decompress için, herhangi bir remediation talebini kabul etmeden önce gerçekten hangi iki paketten birine bağlı olduğunu belirle. Bakımsız orijinalse, düzeltme bir dependency değişikliğidir — incelemesiyle birlikte bir kod değişikliği — sürüm güncellemesi değil. nBypass'ı doğrudan test et. Başına bir yorum satırı eklenmiş bir anahtar dizgisi oluştur, onu HMAC secret olarak kullanarak bir token imzala ve yamalanmış sürümün bunu reddettiğini doğrula. Negatif testler, bir parser düzeltmesinin gerçekten yerleştiğinin tek gerçek kanıtıdır. nHer runtime yükseltmesinden sonra ikisini de yeniden doğrula; çünkü runtime yükseltmesi onları yerinden oynatmaz ve tüm stack'in taşındığına inanmak kolaydır.
Neden önemli
İki hata da olağanüstü değil; bu eşleşmeyi öğretici kılan, birlikte kuruluşların kötü yönettiği iki yinelenen dependency riski biçimini kapsamaları: tarayıcıların az raporladığı dar bir etkilenen aralık ve tarayıcıların çok raporladığı bir paket kimliği fork'u. Aynı haftadaki Node.js güvenlik sürümleri ikisine de bir şey kazandırmıyor. Mühendislik ekipleri için pratik sonuç şu: runtime yamalamak ve dependency yamalamak ayrı iş akışlarıdır; ilki bir motoru değiştirir, ikincisi lockfile çözümlemelerini okumayı, bakımı sürdürülen fork'ları terk edilmiş orijinallerden ayırt etmeyi ve parser düzeltmelerini bir sürüm dizgisine güvenmek yerine açıklığın gittiğini kanıtlayan testlerle doğrulamayı gerektirir.
- #npm
- #security
- #node-js
- #dependencies
- #vulnerability
İlgili yazılar
- Brotli çözücüsündeki CVE-2026-111497 zafiyeti Node.js'den Python'a, Envoy'a ve ötesine yayılıyor
- CVE-2026-109869: uzak sunucular, yetim kalan undici stream üzerinden Node.js fetch'i çökertebiliyor
- Langflow CVE-2026-105740, kayıtlı kullanıcıların stdio MCP sunucuları üzerinden rastgele bash komutu çalıştırmasına izin veriyordu