
إثبات مفهوم بلغة بايثون يوضح تجاوز المصادقة في pac4j JWT من خلال صياغة رمز JWE يحتوي على JWT داخلي غير موقّع، مما يسمح بتصعيد الامتيازات دون الحاجة إلى مفتاح خاص.
إثبات مفهوم بلغة بايثون لثغرة CVE‑2026‑29000، وهي تجاوز مصادقة حرج يؤثر على التطبيقات التي تستخدم وحدة pac4j JWT.
تسمح الثغرة للمهاجمين بالمصادقة كمستخدمين عشوائيين عن طريق إرسال رمز JWE خبيث يحتوي على PlainJWT غير موقّع (alg: none).
قد تستخدم تطبيقات pac4j تدفق الرموز التالي:
/api/auth/loginبسبب المعالجة غير الصحيحة لمنطق تحليل JWT، عندما يكون الرمز الداخلي PlainJWT (رمز غير موقّع):
toSignedJWT() قيمة nullوهذا يسمح للمهاجم بـ:
يمكن للمهاجم:
لا يلزم وجود مفتاح خاص — فقط المفتاح العام المكشوف عبر JWKS.
توفر هذه المستودعات إثبات مفهوم بلغة بايثون يقوم بـ:
Python 3.x
قم بتثبيت التبعيات:
pip install jwcrypto requests
python3 poc.py \
--jwks http://target:8080/api/auth/jwks \
--user admin \
--role ROLE_ADMIN
مثال على المخرجات:
=== Malicious JWE Token ===
eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJlbmMiOiJBMTI4R0NNIiwiY3R5IjoiSldUIn0...
استخدمه كالتالي:
Authorization: Bearer <TOKEN>
هذا المستودع مقدم لأغراض تعليمية وبحثية فقط. لا تستخدم هذا الكود ضد الأنظمة دون الحصول على إذن مناسب.
Ali Hussainzada باحث في أمن التطبيقات | صائد ثغرات