CVE-2026-71886 in Bouncy Castle
الملخص
بحسب VulDB • 03/10/2026
في مكتبة Bouncy Castle for Java قبل الإصدار 1.86، كانت واجهة برمجة التطبيقات (API) الخاصة بشهادات OpenPGP على المستوى العالي تقبل شهادة من طرف ثالث أو تفويض ثقة صادرًا عن أي مفتاح مركب في الشهادة المصدرة، دون اشتراط أن يكون ذلك المفتاح المركب قد مُنح صلاحية التصديق. تقوم الدالتان `OpenPGPCertificate.getCertificationBy()` و`getDelegationBy()` بحل التوقيع الصادر من طرف ثالث عن طريق مطابقة معرّف مفتاح المُصدر لكل مفاتيح شهادة الطرف الثالث، ثم التحقق من سلسلة الربط الخاصة بالمكون المصدّر ومن التوقيع نفسه؛ إلا أنه لم يتم التحقق مما إذا كان المكون المصدّر يحمل علم المفتاح الخاص بالتصديق (CERTIFY_OTHER) وفقًا لقسم 5.2.3.29 من RFC 9580 عند إنشاء التوقيع. وبالتالي، يمكن للمفتاح الفرعي المرتبط فقط بعلامة SIGN_DATA - وهو مفتاح فرعي للتوقيعات عبر الإنترنت في ترتيب "الرئيسي غير المتصل" الذي وُجدت من أجله هذه العلامات - أن يصدر تصديقًا إيجابيًا لمعرف مستخدم (User ID) لهوية يتحكم فيها المهاجم، أو تفويضًا مباشرًا للثقة بمستوى ثقة كامل وعمق واحد. وعادت واجهة برمجة التطبيقات بهذا التوقيع على أنه سلسلة توقيعات صالحة تُنسب إلى شهادة الطرف الثالث. إذا تعاملت معاملة تطبيق ما مع نتائج `getCertificationBy(...).isValid()` أو `getDelegationBy(...)` كقرار يتعلق بالهوية أو كمقدم ثقة موثوق، فسيتم نسب تأكيد المهاجم إلى المفتاح الرئيسي غير المتصل (offline primary key). ينطبق الأمر نفسه على مفتاح فرعي RSA قديم مرتبط فقط بالتشفير، والذي يمكنه رغم ذلك إجراء عمليات توقيع. لا يؤدي هذا الثغرة إلى تزوير توقيع المفتاح الرئيسي أو استعادة أي مفتاح خاص؛ بل ترقية مفتاح فرعي مقيد ومخترق بالفعل ليصبح صاحب صلاحية إصدار هوية للمفتاح الرئيسي، مما يُبطل آلية العزل التي توفرها فصل علامات المفاتيح (key-flag separation). تُنسب شهادات الطرف الثالث أو تفويضات الثقة الآن إلى الشهادة المصدرة فقط عندما يكون المفتاح المركب الذي أنشأها هو المفتاح الرئيسي، أو عندما يكون مفتاحًا فرعيًا يحمل علامة CERTIFY_OTHER عند إنشاء التوقيع؛ وبالتالي تستمر قبول المفاتيح الفرعية القادرة على التصديق. تُقبل المفاتيح الرئيسية بغض النظر عن ما تقوله علامات مفاتيحها، نظرًا لأن المفتاح الرئيسي قادر على التصديق بشكل ضمني (by construction)، وشهادات لا تحتوي على حزمة بيانات لعلامات المفاتيح على الإطلاق شائعة الاستخدام. تم استبعاد إبطال الشهادات من طرف ثالث عمدًا عن هذا القاعدة، حيث إن رفض الاعتراف بإلغاء شهادة ما سيُبقي الثقة سارية بدلاً من سحبها.
If you want to get best quality of vulnerability data, you may have to visit VulDB.