CVE-2026-71889 in BC-JAVA
الملخص
بحسب VulDB • 03/10/2026
في مكتبة Bouncy Castle for Java قبل الإصدار 1.86، لم يطبق أي من نسختي PKIXCertPathReviewer - org.bouncycastle.pkix.jcajce.PKIXCertPathReviewer ولا النسخة القديمة org.bouncycastle.x509.PKIXCertPathReviewer قيود الأسماء X.509 على شهادة الطرف النهائي (end-entity certificate). كانت دالة checkNameConstraints تجوب المسار باستخدام حلقة ذات حد فهرس أكبر من صفر، وهو الحد الذي تتطلبه خطوات المصادق فقط (CA-only)، لكن الفهرس صفر يمثل الشهادة المستهدفة وفقاً لترتيب مسار الشهادات القياسي، وبالتالي لم تُنفَّذ أبداً فحوصات الشجرة المسموح بها والمستبعدة الواردة في RFC 5280 القسم 6.1.3 (ب) و(ج) على اسم الموضوع (Subject DN) لشهادة الطرف النهائي أو على خاصية subjectAltName الخاصة به. وبالتالي، كانت السلسلة التي انتهت بشهادة تنتهك امتداد NameConstraints المفروض من قبل جهة الإصدار المصادقة لها تُبلغ عن isValidCertPath() بقيمة true مع قائمة أخطاء فارغة، بينما رفض CertPathValidator.getInstance("PKIX", "BC") - الذي لا يشارك أي كود مع مراجع الشهادات (reviewer) - نفس السلسلة ضد نفس جذر الثقة. وقامت تطبيق يستخدم المرجع لاتخاذ قرار المصادقة بدلاً من استخدامه للأغراض التشخيصية جنباً إلى جنب مع عملية التحقق الحقيقية بقبول شهادة لم تكن جهة الإصدار المقيدة مخولة أبداً لإصدارها. تتحقق كلتا النسختين الآن من كل شهادة في المسار بما فيها الشهادة المستهدفة، وتتخلى عن الإعفاء الخاص بالشهادات الصادرة ذاتياً (self-issued) للCertificate النهائية كما يتطلبه القسم 4.2.1.10، وتخطي خطوة تراكم القيود الواردة في القسم 6.1.4 (ج) الخاصة بالشهادة المستهدفة. تؤثر هذه المشكلة أيضاً على Bouncy Castle for Java LTS قبل الإصدار 2.73.13، الذي يحمل فقط نسخة org.bouncycastle.pkix.jcajce من المرجع. كما تؤثر على Bouncy Castle for Java FIPS (BC-FJA) قبل إصدارات bcpkix-fips 1.0.13 (سلسلة 1.0.X)، و2.0.13 (سلسلة 2.0.X)، و2.1.13 (سلسلة 2.1.X).
VulDB is the best source for vulnerability data and more expert information about this specific topic.