· kaynak dev.to (home feed)
CVE-2026-18500: @fastify/jwt global secret, route bazlı doğrulama anahtarlarının yerine geçebilir
10.2.2 öncesi @fastify/jwt sürümlerindeki bir anahtar ezme hatası, global secret ile imzalanmış token'ların farklı bir anahtar gerektiren route'larda doğrulamadan geçmesine izin verebiliyor. NVD, sorunu 8.1 puanla yüksek önem derecesinde değerlendiriyor.

Ne yaşandı
CVE-2026-18500 olarak takip edilen bir zafiyet, Fastify Node.js framework'ünün JWT eklentisi olan @fastify/jwt'nin 10.2.2 öncesi tüm sürümlerini etkiliyor. HOL tarafından dev.to üzerinde yayımlanan bir güvenlik yazısına göre hata bir yetkilendirme atlatma sorunu: kendi doğrulama anahtarını eklentiye açıkça veren route'larda, bu anahtar sessizce global olarak yapılandırılmış secret ile değiştirilebiliyor.
National Vulnerability Database, sorunu CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N vektörü üzerinden 8.1 puanla, yüksek önem derecesi aralığında değerlendiriyor. Pratikte istismar ağ üzerinden gerçekleşiyor, saldırı karmaşıklığı düşük ve başarılı bir kötüye kullanım hem gizlilik hem bütünlük üzerinde yüksek etki yaratıyor; kullanılabilirlik ise etkilenmiyor. Temel zayıflık, kriptografik imzanın hatalı doğrulanması anlamına gelen CWE-347 olarak kaydedilmiş. dev.to yazısı, okuyucuları ana danışma belgesi olarak GitHub Security Advisory GHSA-j4cx-787j-xjqg'ye yönlendiriyor.
Atlatma nasıl çalışıyor
Varsayılan olarak @fastify/jwt, gelen token'ları eklenti kaydedilirken yapılandırılan tek bir secret ile doğrular. Bazı dağıtımlar bundan daha fazla ayrıntı seviyesine ihtiyaç duyar; bu yüzden API, bir route'un request.jwtVerify({ key }) çağırıp global anahtardan farklı bir anahtar talep etmesine izin veriyor — örneğin kullanıcı, admin, tenant ve servis token'ları ayrı ayrı imzalandığında.
Hata, eklentinin seçenekleri birleştirme biçiminde yatıyor. Yazının anlattığına göre birleştirme işlemi global anahtarı istek başına anahtardan sonra uyguluyor; bu da global secret'ın öncelik kazanması ve route'un kullanmayı amaçladığı anahtarın üzerine yazılması anlamına geliyor.
Sonuç, yetkilendirme alanları arasındaki amaçlanan ayrımın çökmesi. Farklı bir anahtardan gelen token'ları kabul etmek üzere tasarlanmış bir route, global secret ile imzalanmış bir token'ı sorunsuz şekilde doğruluyor ve başka bir alana ait olmasına rağmen onu meşru sayıyor.
Nasıl düzeltilir
Çözüm, 10.2.2 veya daha yeni bir sürüme geçmek. Yazıda üç büyük paket yöneticisi için komutlar listeleniyor:
- npm:
npm install @fastify/[email protected] - pnpm:
pnpm up @fastify/[email protected] - Yarn:
yarn add @fastify/[email protected]
Yamalama tek başına, gerçekten farklı anahtarlara dayanan ekipler için hikayenin tamamı değil. Yazıda, global anahtarla imzalanmış token'ların farklı bir doğrulama anahtarı yapılandırmış route'lara ulaştığına dair izler için kimlik doğrulama kayıtlarının incelenmesi öneriliyor. Böyle bir kanıt varsa, etkilenen imzalama anahtarları döndürülmeli ve açığa çıkan tüm token'lar geçersiz kılınmalı.
Yalnızca tek bir global secret yapılandırmış uygulamalar, ezilecek ikinci bir anahtar bulunmadığı için alanlar arası senaryoya karşı daha az risk altında; yine de etkilenen sürümlerin tüm kullanıcıları için güvenli varsayılan, sürüm yükseltmesi olmaya devam ediyor.
Neden önemli
Yetkilendirme alanı başına imzalama anahtarları yaygın bir izolasyon tekniğidir: varsayım, bir alan için üretilmiş bir token'ın başka bir alandaki doğrulamayı karşılayamayacağıdır. Birleştirme sırası global anahtarı sessizce devreye soktuğunda, bu varsayım hatasız, uyarısız ve değişimi işaret eden tek bir log kaydı olmadan çöker. Daha düşük yetkili bir alandaki geçerli ve doğru imzalanmış bir token, bu nedenle daha güçlü bir anahtarla korunması amaçlanan bir route'tan rahatça geçebilir.
8.1'lik CVSS puanı, sessiz doğrulama atlatmalarının ne kadar yıkıcı olabileceğini yansıtıyor: kullanıcı etkileşimi yok, özel koşul yok ve gizlilik ile bütünlüğün doğrudan ihlali var. Bu aynı zamanda, güvenliğe duyarlı kod yollarındaki seçenek birleştirmenin, kriptografinin kendisi kadar titizlikle incelenmeyi hak ettiğinin bir hatırlatıcısı.
Dikkat edilmesi gereken bir uyarı: buradaki teknik ayrıntılar tek bir topluluk yazısından geliyor. Ekipler, iş planlamadan önce ayrıntıları GitHub danışma belgesi ve kendi paket lockfile'larıyla karşılaştırarak doğrulamalı.
Olumlu tarafta, düzeltme rutin bir bağımlılık yükseltmesi ve raporda yapılandırma geçişi gerektiren bir durum tanımlanmıyor; bu da koruduğu erişimle kıyaslandığında ucuz bir yama olduğunu gösteriyor.
- #security
- #jwt
- #fastify
- #node-js
- #vulnerability