‹ بازگشت به کتابخانه‌ی رایت‌آپ‌ها
JWT Misconfiguration شدت: بحرانی

دور زدن امضای RS256 با تغییر الگوریتم به HS256 (Key Confusion)

وقتی کلید عمومی RSA که برای تایید امضا استفاده می‌شود، به‌اشتباه به‌عنوان رمز مشترک HMAC هم پذیرفته می‌شود.

نویسنده: تیم PentesterHub

در یک سیستم RS256، سرور با کلید عمومی امضا را تایید می‌کند (کلید خصوصی فقط نزد صادرکننده است). اگر کتابخانه به‌جای ثابت‌کردن الگوریتم تایید، آن را از هدر توکن بخواند، مهاجم می‌تواند هدر alg را به HS256 تغییر دهد و از همان کلید عمومی (که معمولاً در دسترس عموم است) به‌عنوان رمز مشترک HMAC برای امضای یک توکن جعلی استفاده کند — و سرور چون روی حالت HS256 سوئیچ کرده، همان کلید را برای تایید HMAC به‌کار می‌برد و توکن جعلی را معتبر می‌داند.

راه‌حل

الگوریتم تایید باید ثابت و از‌پیش‌تعیین‌شده باشد و هرگز بر اساس هدر توکن ورودی انتخاب نشود؛ استفاده از کتابخانه‌های استاندارد و به‌روز که این نوع key confusion را مسدود می‌کنند.

تمرین عملی در آزمایشگاه‌های JWT Misconfiguration ›