تخطَّ إلى المحتوى

JWE Signature Bypass

الثقة برمز JWE مفكوك دون توقيع JWE Signature Bypass

ثغرة تحدث عندما يعالج الخادم رمز JWE (مشفَّرًا) ويثق بمحتواه بعد فكّ تشفيره مباشرة دون التحقّق من أن هذا المحتوى موقَّع فعلًا — ففكّ التشفير والتحقّق من التوقيع عمليتان مستقلّتان، ونجاح الأولى لا يضمن الثانية.

JWE (JSON Web Encryption) معيار يشفّر محتوى رمز كامل، بخلاف JWT/JWS العادي الذي يوقِّعه فقط دون تشفيره. حين يستخدم تطبيق JWE لتغليف JWT، يحتاج مساران مستقلّان بعد الاستلام: فكّ التشفير (بالمفتاح الخاصّ)، ثم التحقّق من توقيع المحتوى الداخلي. لو نفَّذ الخادم الخطوة الأولى فقط وتعامل مع الناتج كموثوق تلقائيًّا، يستطيع أي طرف يملك المفتاح **العام** فقط (متاح علنًا غالبًا) تغليف رمز غير موقَّع بادّعاءات مزيَّفة داخل JWE، فيفكّه الخادم ويثق به دون أي تحقّق توقيع حقيقي.

ثغرة بهذا النمط بالضبط (CVE-2026-29000) أثّرت على مكتبة أمان جافا شهيرة (pac4j-jwt، النسخ الأقدم من 4.5.9/5.7.9/6.3.3) بدرجة خطورة قصوى (CVSS 10.0) — سمحت بتزوير هوية أي مستخدم بمعرفة مفتاحه العام فقط.

الصياغة

decrypt(JWE) → استخدام الناتج مباشرة  // ❌ بلا خطوة verify() صريحة على المحتوى الداخلي

📄 مثال

// ✅ آمن: خطوتان منفصلتان وصريحتان دائمًا — لا تُنهِ المعالجة عند نجاح فكّ التشفير فقط
const decryptedPayload = decryptJWE(token, privateKey);

// تحقّق من توقيع المحتوى الداخلي كأي JWT مستقلّ، بخوارزمية مفروضة صراحة
const verifiedClaims = jwt.verify(decryptedPayload, publicKey, {
  algorithms: ["RS256"], // نفس فرض الخوارزمية المستخدَم لأي JWT عادي
});
// لا تثق بادّعاءات verifiedClaims قبل نجاح هذه الخطوة الثانية بالتحديد

أهم النقاط

النقطةالوظيفة
JWEمعيار تشفير محتوى الرمز بالكامل — يضمن السرّية، لا التوثّق من عدم التعديل
JWS / JWT عاديمعيار توقيع المحتوى — يضمن عدم التعديل والتحقّق من المصدر، لا السرّية
المفتاح العاميكفي لتشفير رمز JWE موجَّه للخادم — متاح علنًا غالبًا عبر JWKS، فلا يحمي وحده من التزوير

💡 نصائح عملية

  • لو غلّفت JWT بـ JWE، اعتبرها طبقتين مستقلّتين تمامًا بمساري تحقّق منفصلين — لا تفترض أن نجاح إحداهما يكفي للأخرى

⚠️ أخطاء شائعة

  • اعتبار 'الرمز مشفَّر إذن هو آمن' — التشفير يحمي السرّية فقط، والتحقّق من التوقيع مسار منفصل يجب تنفيذه صراحة دائمًا

خصائص ذات صلة

🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار CYBERSECURITY الكامل بالعربي.