
تحقّق من بيئات تشغيل Java وأصلحها لمعالجة CVE-2026-91403 (الوسطاء المخترقون في eMudhra) على Windows وmacOS — بموافقة أولاً، دون تبعيات، ودون اتصال بالشبكة.
أداة معالجة مؤقتة بأسلوب قائمة الحظر لثغرة شهادات Java (CVE-2026-91403) — Windows / macOS
تبحث عن جميع نسخ Java المثبّتة على جهاز الكمبيوتر (مشغّل Minecraft، ومشغّلات المودات، وأدوات التطوير، وJDK المثبّتة يدويًا)، وتتحقق مما إذا كان الإجراء المؤقت الذي أوصى به OpenJDK (إضافة الشهادات الـ16 المعنية إلى قائمة الحظر) مطبّقًا أم لا. وإذا وافق المستخدم، تضيف العناصر الناقصة. وعند الاختيار، تشغّل كل نسخة Java فعليًا لتفحص ما إذا كانت الشهادات المتنكّرة مرفوضة فعلًا.
هذه الأداة ليست حلًا كاملًا. فهي لا تحدّث Java، ولا تصلح مخزن الثقة (cacerts)، ولا تفعّل فحص إبطال الشهادات. الحل الجذري هو تحديث Java والمشغّلات إلى إصدارات مصحّحة. لمزيد من التفاصيل، يُرجى قراءة 3. حدود هذه الأداة.
صُنعت باستخدام مكتبة Rust القياسية فقط دون أي مكتبات خارجية، لذا يكفي قراءة مجلدَي src/ وprobe/ للتحقق من كل ما تفعله.
English: see English below.
في أكتوبر 2026، اتضح أن المفاتيح الخاصة لـ8 شهادات وسيطة الصادرة عن جهة إصدار الشهادات eMudhra يمكن لأي شخص معرفتها. وإذا أضفنا الشهادات التي وقّعتها Sectigo "AAA Certificate Services" بتوقيع متقاطع باستخدام المفتاح نفسه، يصبح المجموع 16 شهادة.
ولأن نسخ Java غير المصحّحة تثق بهذه الشهادات، فإنه إذا كان المهاجم على الشبكة نفسها (مثل Wi-Fi عام) يمكنه إنشاء شهادة مزيفة تنتحل أي موقع وستقبلها Java على أنها حقيقية. فعلى سبيل المثال، يمكنه انتحال خادم تسجيل الدخول (الجلسة) في Minecraft أو خادم تنزيل المودات.
الإجراء الذي أوصى به OpenJDK هو أحد الخيارات الثلاثة التالية.
| الإجراء الرسمي | هذه الأداة |
|---|---|
| تحديث Java إلى إصدار مصحّح (وفقًا لـ Oracle/OpenJDK: 25.0.5.0.2، 21.0.13.0.2، 17.0.21.0.2، 11.0.33.0.2، 8u511 أو أحدث) | ❌ لا تفعل (إرشاد فقط) |
حظر الشهادات المعنية عبر blocked.certs (في Java 8: blacklisted.certs) | ✅ إضافة 16 شهادة |
تفعيل فحص إبطال الشهادات (-Dcom.sun.net.ssl.checkRevocation=true -Dcom.sun.security.enableCRLDP=true) | ❌ لا تفعل (السبب) |
مراجع
impacted-intermediates.json)| المرحلة | المحتوى | الإنترنت |
|---|---|---|
| فحص الملفات | يقرأ لكل Java تم العثور عليه ملف lib/security/blocked.certs (وفي Java 8: blacklisted.certs) وملف release، ويتحقق مما إذا كانت الشهادات الـ16 موجودة في قائمة الحظر. | لا يُستخدم |
| فحص الاتصال الفعلي (اختياري) | يشغّل كل Java فعليًا ويحاول الاتصال بموقعي اختبار وبخادم جلسات Mojang، ويتحقق مما إذا كانت الشهادة المزيفة مرفوضة. بالتفصيل | هذه المرحلة فقط تستخدمه |
| إضافة قائمة الحظر | يضيف في نهاية الملف بصمات الشهادات الناقصة فقط. لا يحذف الأسطر الموجودة أو يعدّلها، ويُنشئ نسخة احتياطية من الأصل باسم blocked.certs.bak-cve-2026-91403. وبعد الإضافة يعيد قراءة الملف للتحقق. | لا يُستخدم |
| التراجع | ينسخ النسخة الاحتياطية إلى مكانها الأصلي. | لا يُستخدم |
Y قبل كل من الفحص، وفحص الاتصال الفعلي، وإضافة قائمة الحظر، واستخدام صلاحيات المسؤول للمتابعة. أي إدخال آخر يعني "لا".%LOCALAPPDATA%\JavaFix، وفي macOS ضمن ~/Library/Logs/JavaFix ما تم فحصه وتغييره.cacerts). حذف شهادات الجذر قد يؤدي إلى حظر مواقع سليمة أيضًا، لذا لا تُمَس.
(مثال: Sectigo "AAA Certificate Services" هي شهادة جذر تستخدمها مواقع سليمة كثيرة.)نزّل الملف المناسب لنظام التشغيل من صفحة Releases.
| نظام التشغيل | الملف |
|---|---|
| Windows (معظم أجهزة الكمبيوتر) | javafix-windows-x64.exe |
| Windows (أجهزة الحاسوب المحمولة ARM) | javafix-windows-arm64.exe |
| macOS (Intel / Apple Silicon مشترك) | javafix-macos-universal.zip |
للتحقق من أن الملف الذي نزّلته هو الأصل، قارن قيمته مع القيمة في SHA256SUMS.
certutil -hashfile javafix-windows-x64.exe SHA256 (Windows)
shasum -a 256 javafix-macos-universal.zip (macOS)
Windows
javafix-windows-x64.exe.macOS
javafix-macos-universal.zip وفك ضغطه (يقوم Safari بفك الضغط تلقائيًا). سيُنشأ مجلد javafix-macos.javafix.command داخل المجلد، وسيُفتح الطرفية ويبدأ التشغيل.javafix.command.للتشغيل مباشرة من الطرفية:
cd ~/Downloads/javafix-macos
xattr -d com.apple.quarantine javafix.command
./javafix.command
ملف
javafix-macos-universalغير المضغوط فيv0.1.0يفقد صلاحية التنفيذ عند تنزيله، لذا عند النقر المزدوج عليه يعرض محرر النصوص خطأ "تشفير النص Unicode (UTF-8) غير مطبّق". بدءًا منv0.1.1نوزّعه كملف zip.