یک آسیبپذیری بحرانی با شناسهی CVE-2025-59936 و شدت 9.4 در بستهی npm get-jwks شناسایی شده است که در نسخههای ≤ 11.0.1 وجود دارد.
در طراحی آسیبپذیر، کلیدهای JWKS پس از بازیابی در یک کش مشترک ذخیره میشوند و بررسی issuer تنها پس از برداشت یا استفاده از کلید انجام میگیرد. این ترتیب باعث میشود مهاجم بتواند با مسمومسازی کش (Cache Poisoning)، کلیدهای عمومی جعلی را ثبت کند و سپس توکنهایی با iss متفاوت را معتبر جلوه دهد.
پیامد فنی این نقص، دور زدن اعتبارسنجی issuer و امکان جعل امضای JWT است که میتواند منجر به دسترسی غیرمجاز به APIها و منابع حساس شود.
نگهدارندهی بسته نسخهی اصلاحشدهی 11.0.2 را منتشر کرده است. اقدام فوری و حیاتی، ارتقای بسته به نسخهی 11.0.2 است. در صورت تأخیر در ارتقا، میتوان با بررسی صریح issuer پیش از استفاده از هر کلید کششده یا Namespace کردن کش بر اساس issuer/jwks_uri، ریسک را کاهش داد.
توصیههای بلندمدت شامل محدودسازی منابع JWKS مورد اعتماد، تعیین TTL مناسب برای کش، جلوگیری از Race Conditionها و افزودن تستهای واحد و یکپارچه برای شبیهسازی سناریوی Cache Poisoning است.
محصولات تحتتأثیر
- اپلیکیشنها و سرویسهای Node.js که از بستهی get-jwks نسخه ≤ 11.0.1 استفاده میکنند.
- API Gatewayهایی که برای اعتبارسنجی JWT به get-jwks متکی هستند.
- سرویسهای احراز هویت و ورود (Authentication Services) که JWT را بررسی میکنند.
- میکروسرویسها و Backendهای مبتنی بر JWT در معماری ابری یا توزیعشده.
- هر محصول یا نرمافزار ثالثی که بهطور مستقیم یا غیرمستقیم از کتابخانهی get-jwks استفاده کرده باشد.
توصیههای امنیتی
- ارتقای فوری بسته به نسخهی امن 11.0.2 یا بالاتر.
- بررسی issuer پیش از استفاده از کلید کششده، در صورت اجبار به استفاده از نسخههای قدیمی.
- جدا کردن فضای کش بر اساس issuer یا jwks_uri برای جلوگیری از بازاستفادهی کلیدها.
- محدود کردن منابع JWKS و تعریف Allowlist از دامنههای مورد اعتماد.
- تعیین TTL کوتاه برای کش تا کلیدهای مسموم مدتزمان طولانی باقی نمانند.
- مانیتورینگ و بررسی لاگها جهت شناسایی درخواستهای غیرعادی یا استفاده از کلیدهای تکراری.
- اجرای تستهای امنیتی شامل شبیهسازی حملهی Cache Poisoning در فرآیند CI/CD.
منبع خبر:
- 119