
ماسح ضوئي دون اتصال يخبرك أيٌّ من ثغرات Bouncy Castle لعام 2026 تنطبق عليك فعليًا - عبر BC وBC-LTS وBC-FJA (FIPS)، والتي لا تتشارك مخطط إصدارات موحّدًا. CVE-2026-58062 / CVE-2026-8763 / CVE-2026-59650 / CVE-2026-59638
افحص دون اتصال أيّ من ثغرات CVE لعام 2026 الخاصة بـ Bouncy Castle تؤثر على تطبيق Java لديك. بدون أي تبعيات، ملف jar واحد، دون اتصال بالشبكة، ودون رفع أي بيانات.
java -jar bc-check.jar ./app.jar
java -jar bc-check.jar --gav bcprov-lts8on:2.73.5 --detail
جميع أوصاف CVE الرسمية مكتوبة بجملة واحدة موحّدة:
Bouncy Castle for Java before 1.85
لكن بين المستخدمين الفعليين، هناك خطّان من المنتجات لا تبدو أرقام إصداراتهما بهذا الشكل على الإطلاق:
| خط المنتج | شكل الـ artifact | شكل رقم الإصدار | هل «before 1.85» مفيد له |
|---|---|---|---|
| BC (النسخة العادية) | bcprov-jdk18on | 1.81 | ✅ مفيد |
| BC-LTS (نسخة الدعم طويل الأمد) | bcprov-lts8on | 2.73.5 | ❌ لا يمكن الحكم إطلاقاً |
| BC-FJA (نسخة معتمدة FIPS) | bc-fips / bctls-fips … | 1.0.2.5 / 2.0.1 / 2.1.2 | ❌ لا يمكن الحكم إطلاقاً |
الإصدارات المُصلحة للخطوط الثلاثة هي 1.85 و2.73.12 ومجموعة أرقام إصدار خاصة بكل واحد من 7 artifacts من FIPS. إنها ليست على المحور الرقمي نفسه، ومقارنتها ببعضها لا معنى لها.
CVE-2026-8149 لا يؤثر إطلاقاً على خط BC، بل يؤثر فقط على BC-LTS 2.73.0–2.73.10.
من يراقب رقم الإصدار «1.85» لن يكتشفه أبداً.CVE-2026-59650 لا يؤثر إطلاقاً على نسخة FIPS. الإبلاغ عنه وفق «before 1.85» إنذار كاذب.CVE-2026-59638 على جانب FIPS يجب فحص الـ artifact bctls-fips وليس bc-fips ——
فقد انتقل من نواة التشفير إلى وحدة TLS. من يراقب bc-fips فقط لن يجده.CVE-2026-58062 و58060 أدرجت الجهات الرسمية فقط 2.0.2 و2.1.3 من bc-fips، دون 1.0.x ——
أي أن خط 1.0.x غير متأثر. بينما أدرج CVE-2026-8763 الإصدار 1.0.2.7، فيكون 1.0.x متأثراً.
نفس الـ artifact ونفس الإصدار، لكن CVE مختلفة تعطي إجابات مختلفة.وهناك أيضاً 10 CVE لها إصدار بداية التأثر (from 1.61 وfrom 1.66 وfrom 1.73 مختلفة)،
وليست «كل الإصدارات متأثرة»؛ كما أن 4 CVE قديمة إصداراتها المُصلحة هي إصدارات فرعية مثل 1.80.2 / 1.81.1 / 1.84،
ونطاقات التأثر منفصلة (1.74–1.80.1، 1.81، 1.82–1.83).
لنفترض أنك قرأت جميع الإعلانات وتعرف كل الإجابات، فأنت ما زلت لا تستطيع الفحص —— لأن الإجابة ليست رقم إصدار واحد، بل جدول ثلاثي الأبعاد «خط المنتج × artifact × CVE».
تصحيح (2026-10-12): كان هذا القسم يذكر سابقاً أن «4 CVE من فئة CVSS critical كلها
unreviewedولا يراها Dependabot». وقد تمت مراجعةCVE-2026-8763من قبل GitHub وإدراجه مع معلومات الحزم في 2026-09-18، فأصبح Dependabot وOSV يريانه الآن. أما الـ 3 الأخرى فما زالت غير مرئية. فيما يلي النسخة المعدّلة وفق القياس الفعلي بتاريخ 2026-10-12.
من بين 4 CVE من فئة CVSS critical، لا تزال 3 حالتها في GitHub Advisory هي unreviewed،
وقائمة الحزم المتأثرة فارغة (عدد الحزم 0). فبدون اسم حزمة لا يمكن مطابقة شجرة التبعيات ——
فهي لا تدخل OSV، ولا ينبّه Dependabot، ولا تستطيع أدوات SCA اكتشافها عند فحص قوائم التبعيات.
عند الاستعلام عن org.bouncycastle:bcprov-jdk18on:1.81 في OSV (2026-10-12)، تظهر 4 نتائج:
CVE-2025-14813 وCVE-2026-0636 وCVE-2026-13506 وCVE-2026-8763 ——
ولا تظهر أي واحدة من الـ 3 critical الأخرى.
⚠️ للتوضيح: ليس المقصود أن «Dependabot لا يرى أي ثغرة في BC» —— فـ
CVE-2026-0636من المجموعة نفسها هو reviewed وله معلومات حزم وينبّه بشكل طبيعي. غير المرئية هي هذه الـ 3 critical المعلَّمة بـunreviewedفي الجدول أدناه.
| CVE | GHSA | الحالة (2026-10-12) | عدد الحزم |
|---|---|---|---|
| CVE-2026-58062 | GHSA-j295-77c3-9frf | unreviewed | 0 |
| CVE-2026-8763 | GHSA-9pwp-9qqc-pr26 | reviewed (منذ 2026-09-18) | 6 |
| CVE-2026-59650 | GHSA-ghgq-7g74-28wp | unreviewed | 0 |
| CVE-2026-59638 | GHSA-8rxj-3p7p-rq39 | unreviewed | 0 |
الإصدارات المُصلحة التي سجّلتها قاعدة البيانات العامة لـ CVE-2026-8763 هي bcprov-jdk18on / bcprov-jdk15to18 1.85،
وbcprov-lts8on 2.73.12، وbc-fips 1.0.2.7 / 2.0.2 / 2.1.3، وهي متوافقة مع جدول الحكم في هذه الأداة.
java -jar bc-check.jar <路径> [更多路径...] [选项]
java -jar bc-check.jar --gav <坐标>
يمكن أن يكون المسار ملف jar / war (بما في ذلك Spring Boot fat-JAR، ويُفكَّك تلقائيًا طبقةً بطبقة)، أو مجلدًا (بشكل تكراري).
| الخيار | الوصف |
|---|---|
--gav <الإحداثيات> | دون فحص الملفات، يحدد إحداثيةً مباشرةً، مثل bcprov-lts8on:2.73.5 |
-d, --detail | يسرد كل CVE مطابق مع النص الرسمي الأصلي |
--json | يُخرج JSON، لتسهيل ربطه بخط الإنتاج (دائمًا UTF-8) |
--utf8 / --gbk | يفرض الترميز عند ظهور أحرف صينية مشوّهة في الطرفية |
--no-color | يُعطّل الإخراج الملوّن |
رموز الخروج: 0 = لا تطابق؛ 1 = تطابق CVE؛ 2 = خطأ في الاستخدام. يمكن استخدامه مباشرةً كبوابة CI.
[CRITICAL] bcprov-lts8on 2.73.5 BC-LTS 线
位置 :app.jar!/BOOT-INF/lib/bcprov-lts8on-2.73.5.jar
来源 :jar 内 MANIFEST
结论 :命中 29 条 CVE,其中 CVSS critical 4 条
降噪 :其中 13 条按官方 FIPS 侧点名的 artifact 反推,大概率出在 bcpkix / bcpg / bctls 模块。
⚠️ 这是推断不是官方结论,仅供排优先级。
处置 :升级到 2.73.12(BC-LTS 线)
في الغالبية العظمى من الحالات، لا تكون أنت من أضفت BC بنفسك، بل جرّته إليك التبعيات الانتقالية —— فـ TLS والتحقق من الشهادات وJWT وتوقيع PDF وPGP كلها تجلبه. لذلك لا تنظر هذه الأداة إلى pom، بل إلى النواتج الفعلية فقط:
Bundle-SymbolicName + Bundle-Version في META-INF/MANIFEST.MF (المسار الرئيسي)META-INF/maven/org.bouncycastle/*/pom.properties (غير موجود في jar الرسمي، بل في المعاد تجميعه فقط)org/bouncycastle/ فقط دون التعرف على الإحداثيات → يُبلَّغ بـ UNKNOWN مع تنبيه للتحقق يدويًاالحالة الرابعة هي حالة shade داخل jar المضيف، حيث لا يراها mvn dependency:tree ولا SCA،
لكن هذه الأداة ستخبرك على الأقل «هناك BC هنا، لكنني لا أتعرف على الإصدار»، بدلًا من إغفالها بصمت.
عند إعادة تسمية jar (وهو أمر شائع عند إعادة نشر المستودعات الداخلية)، لا يُتعرف على اسم الملف، لكن MANIFEST يظل قابلًا للتعرف.
كلها تأتي من الصفحات الفرعية لكل CVE من 37 ثغرة CVE لعام 2026 على wiki الرسمي github.com/bcgit/bc-java
(النص الأصلي لـ Issue affecting / Fixed versions)، وليست نقلًا من مصدر ثانوي ولا مقالات تجميعية.
tools/data/bc_cves.jsontools/gen_rules.py إلى CveTable.java، دون نسخ يدويإعادة التوليد: python tools/gen_rules.py
تغطي هذه الأداة 37 ثغرة CVE لعام 2026 على wiki الرسمي فقط. ثغرات Bouncy Castle السابقة لعام 2026 خارج النطاق —— معظمها دخل OSV بالفعل، ويمكن لـ Dependabot / SCA العثور عليها، ولا تعيد هذه الأداة اختراع العجلة.
مثال محدد: org.bouncycastle:bcprov-jdk18on:1.81 يمكن العثور عليه في OSV عبر
CVE-2025-14813 وCVE-2026-0636 —— الأولى غير مغطاة بهذه الأداة (لعام 2025)،
والثانية مغطاة. لذا فإن تقرير هذه الأداة بـ OK يعني «غير متأثر بهذه الدفعة لعام 2026»،
وليس «Bouncy Castle لديك سليم تمامًا». يجب النظر إلى الاثنين معًا، لا الاختيار بينهما.