FixVibe
Covered by FixVibehigh

أمان JWT: مخاطر الرموز المميزة غير المضمونة والتحقق من صحة المطالبة المفقودة

توفر JSON Web Tokens (JWTs) معيارًا لنقل المطالبات، لكن الأمان يعتمد على التحقق الصارم من الصحة. يسمح الفشل في التحقق من التوقيعات أو أوقات انتهاء الصلاحية أو الجماهير المقصودة للمهاجمين بتجاوز المصادقة أو إعادة تشغيل الرموز المميزة.

CWE-347CWE-287CWE-613

تأثير المهاجم

يسمح التحقق غير الصحيح من صحة JWT للمهاجمين بتجاوز آليات المصادقة عن طريق تزوير المطالبات أو إعادة استخدام الرموز المميزة منتهية الصلاحية [S1]. إذا كان الخادم يقبل الرموز المميزة دون توقيع صالح، فيمكن للمهاجم تعديل الحمولة لتصعيد الامتيازات أو انتحال شخصية أي مستخدم [S1]. علاوة على ذلك، فإن الفشل في فرض مطالبة انتهاء الصلاحية (exp) يسمح للمهاجم باستخدام رمز مميز مخترق إلى أجل غير مسمى [S1].

السبب الجذري

رمز ويب JSON (JWT) هو هيكل قائم على JSON يُستخدم لتمثيل المطالبات الموقعة رقميًا أو [S1] المحمية بالتكامل. تنبع حالات الفشل الأمني عادةً من فجوتين أساسيتين في التنفيذ:

  • قبول JWTs غير الآمنة: إذا كانت الخدمة لا تفرض التحقق من التوقيع بشكل صارم، فقد تعالج "JWTs غير الآمنة" حيث يكون التوقيع غائبًا ويتم تعيين الخوارزمية على "لا شيء" [S1]. في هذا السيناريو، يثق الخادم في المطالبات الموجودة في الحمولة دون التحقق من سلامتها [S1].
  • التحقق من صحة المطالبة المفقودة: تحدد المطالبة exp (وقت انتهاء الصلاحية) الوقت الذي يجب ألا يتم فيه قبول JWT لمعالجة [S1] أو بعده. تحدد المطالبة aud (الجمهور) المستلمين المقصودين للرمز المميز [S1]. إذا لم يتم تحديدها، فقد يقبل الخادم الرموز المميزة التي انتهت صلاحيتها أو كانت مخصصة لتطبيق مختلف [S1].

الإصلاحات الخرسانية

  • فرض التوقيعات المشفرة: قم بتكوين التطبيق لرفض أي JWT لا يستخدم خوارزمية توقيع قوية معتمدة مسبقًا (مثل RS256).
  • التحقق من صحة انتهاء الصلاحية: قم بتنفيذ فحص إلزامي للتأكد من أن التاريخ والوقت الحاليين يسبقان الوقت المحدد في مطالبة exp [S1].
  • التحقق من الجمهور: تأكد من أن مطالبة aud تحتوي على قيمة تحدد الخدمة المحلية؛ إذا لم يتم تحديد الخدمة في مطالبة aud، فيجب رفض الرمز المميز [S1].
  • منع إعادة التشغيل: استخدم مطالبة jti (معرف JWT) لتعيين معرف فريد لكل رمز مميز، مما يسمح للخادم بتتبع ورفض الرموز المميزة المعاد استخدامها [S1].

استراتيجية الكشف

يمكن تحديد الثغرات الأمنية في معالجة JWT من خلال تحليل بنية الرمز المميز وسلوك استجابة الخادم:

  • فحص الرأس: التحقق من رأس alg (الخوارزمية) للتأكد من عدم تعيينه على "لا شيء" واستخدام معايير التشفير المتوقعة [S1].
  • التحقق من المطالبة: التأكد من وجود وصحة مطالبات exp (انتهاء الصلاحية) وaud (الجمهور) داخل حمولة JSON [S1].
  • اختبار التحقق من الصحة: اختبار ما إذا كان الخادم يرفض بشكل صحيح الرموز المميزة التي انتهت صلاحيتها وفقًا لمطالبة exp أو أنها مخصصة لجمهور مختلف كما هو محدد بواسطة مطالبة aud [S1].