Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

الخلاصاتاتصالالخصوصية© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
ml-kem-key-recovery — استرداد كامل لمفتاح ML-KEM-1024 من مقارنة جزئية لـ Fujisaki-Okamoto في wolfSSL (CVE-2026-6330 NEON، CVE-2026-10097 AVX2) | Kitploit
أدوات/GitHubGitHub/007bsd/ml-kem-key-recovery
تحليل الثغرات الأمنيةالاستغلالما بعد الاستغلالالتشفيرتحليل الملفات الثنائيةالأوراق والأبحاث
GitHub007bsd/ml-kem-key-recovery

ml-kem-key-recovery

استرداد كامل لمفتاح ML-KEM-1024 من مقارنة جزئية لـ Fujisaki-Okamoto في wolfSSL (CVE-2026-6330 NEON، CVE-2026-10097 AVX2)

عرض المستودع
53منذ شهر واحدلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

استرداد كامل للمفتاح من مقارنة Fujisaki-Okamoto جزئية في wolfSSL ML-KEM

CVE-2026-6330 (NEON) و CVE-2026-10097 (AVX2). تم إصلاحهما في wolfSSL 5.9.2.

نُشر التقرير التقني الكامل في Cryptology ePrint Archive, Paper 2026/1682 (نسخة محلية في paper/). انظر الاستشهاد أدناه.

مقدمة

يقاوم ML-KEM (Kyber، FIPS 203) هجمات النص المشفّر المختار بسبب فحص واحد داخل عملية فك التغليف: يعيد المستقبل تشفير الرسالة التي فكّ تشفيرها للتو ولا يُرجع السر المشترك الحقيقي إلا إذا طابقت النتيجة النص المشفّر المُدخل تمامًا. أي عدم تطابق يُطلق الرفض الضمني، وتُعاد قيمة شبه عشوائية بدلًا من ذلك. هذا الفحص هو تحويل Fujisaki-Okamoto، البوابة الوحيدة التي تفصل مخطط IND-CCA2 عن مخطط IND-CPA القابل للتلاعب الكامن تحته.

نفّذت wolfSSL تلك المقارنة بلغة SIMD المكتوبة يدويًا، وعلى خلفيتين اثنتين قارنت جزءًا من النص المشفّر فقط. على ARM64 NEON قارنت نحو النصف، وهو ما اكتشفه وأبلغ عنه Nicholas Carlini (Wikipedia) (CVE-2026-6330). وعلى x86-64 AVX2 قارنت 1536 من أصل 1568 بايت في ML-KEM-1024 (CVE-2026-10097).

على أي من الخلفيتين يُقبل نص مشفّر مُتلاعب به على أنه أصلي، وهو ما أُبلغ عنه كإضعاف لأمان IND-CCA2. يُظهر هذا التقرير أن العيب يمتد أبعد من ذلك، على كلتا الخلفيتين. البايتات التي يتخطاها الفحص تُسرّب ضوضاء فك التشفير الخاصة بعملية فك التغليف، وتلك الضوضاء دالة خطية للمفتاح السري، لذا يمكن استرداد المفتاح عبر انحدار المربعات الصغرى. إنها ليست مسألة شبكية، وليست هجوم عدم تطابق المفتاح الكلاسيكي: على خلفية AVX2 يتحقق العيب من كامل u، لذا تُرفض النصوص المشفّرة ذات u المختار التي تتطلبها تلك الهجمات. بدلًا من ذلك، يسترد انحدار ضوضاء فك التشفير المفتاح من معاملات v غير المفحوصة. يُسترد المفتاح الخاص الكامل لـ ML-KEM-1024 من البداية إلى النهاية مقابل الملف التنفيذي المصاب الحيّ على كل من خلفيتي AVX2 وNEON.

يحتاج الهجوم إلى مفتاح ML-KEM مُعاد استخدامه: مستلمو HPKE، أو KEMTLS، أو المفاتيح المثبّتة والمضمّنة. أما حصة المفتاح المؤقتة في TLS 1.3 الهجينة فتستخدم مفتاحًا جديدًا لكل مصافحة ولا يمكن استرداد مفتاحها بهذه الطريقة؛ هناك يكون العيب مجرد كسر تمييزي. كلا العيبين مُصلحان وعلنيان، وهذا تقرير ما بعد الإفصاح.

الحالتان

NEON (CVE-2026-6330)AVX2 (CVE-2026-10097)
الخلفيةARM64 NEONx86-64 AVX2
العيبيقارن نحو نصف النص المشفّريقارن 1536 من أصل 1568 بايت
مُبلّغ عن الخطأNicholas Carlini (Anthropic)007bsd
خطورة CVEمتوسطة (CVSS 4.0 6.3، CWE-327)عالية (CVSS 4.0 8.3، CWE-697)
استرداد المفتاح، النموذجكامل (~500 ct)كامل (~1300 ct)
استرداد المفتاح، الملف التنفيذي الحيّ98.5% @ 600 ct (محاكاة QEMU)98.1% @ 350 ct (أصلي)
الإصلاحPR #10192PR #10430

"live" هو النتيجة المُبرهَنة على الملف الثنائي الحقيقي: تحتاج NEON إلى عدد أكبر من النصوص المشفّرة (600 مقابل 350) لأن قياسها لكل معامل أكثر ضجيجًا بكثير (حوالي 4 أضعاف). أما "model" فهو فحص خالٍ من الضجيج يتحقق من أن الانحدار يستعيد المفتاح الكامل (جميع المعاملات الـ 2048، بنسبة 100%)؛ ويُحدَّد عدد النصوص المشفّرة فيه بعدد المعادلات التي ينتجها كل نص مشفّر، لا بمستوى الضجيج، لذا فهو غير قابل للمقارنة بالرقم الفعلي ولا يعكس صعوبة الهجوم.

وُجد كلا العيبين بشكل مستقل ضمن نافذة الإصدار نفسها من wolfSSL وتم إصلاحهما معًا في 5.9.2 (راجع صفحة wolfSSL لثغرات الأمان للاطلاع على مُدخلي CVE كليهما). وُثِّق عيب NEON لدى Carlini على أنه إضعاف لخاصية IND-CCA2، أما عيب AVX2 فقد صُنِّف بمعرّف CVE على أنه استرجاع للمفتاح. هجوم انحدار ضجيج فك التشفير في هذا المستودع يستعيد المفتاح على كلا الخلفيتين. التفاصيل الخاصة بكل خلفية موجودة في neon-cve-2026-6330/ وavx2-cve-2026-10097/.

الأسئلة الشائعة

ما هي الثغرة؟

مقارنة غير مكتملة في فحص الرفض الضمني (implicit-rejection) الخاص بـ ML-KEM في wolfSSL، موجودة في خلفيتين من خلفيات التجميع SIMD. فقد قارنت أقل من جميع بايتات النص المشفّر، لذا يقبل فك التغليف (decapsulation) نصوصًا مشفّرة ترفضها أي تطبيقات صحيحة. وتحوّل البايتات غير المفحوصة عملية فك التغليف إلى أوراكل (oracle) لضجيج فك التشفير، وهذا كافٍ لاستعادة المفتاح الخاص عندما يُعاد استخدام المفتاح.

هل أنا متأثر؟

أنت متأثر إذا استخدمت wolfSSL مع ML-KEM في بناء يتضمن تجميع SIMD المصاب: AVX2 (x86-64) في الإصدارات 5.7.0-5.9.1، أو ARM64 NEON في الإصدارات 5.7.4-5.9.1. كما يتطلب هجوم استرجاع المفتاح إعادة استخدام المفتاح الخاص بـ ML-KEM عبر عمليات فك التغليف، كما هو الحال مع مستلمي HPKE، أو KEMTLS، أو مفتاح مثبَّت أو مضمَّن. أما مشاركة المفتاح الهجينة المؤقتة في TLS 1.3 فتستخدم مفتاحًا جديدًا لكل مصافحة ولا يمكن استرجاع مفتاحها؛ وهناك يكون العيب مجرد كسر تمييزي (distinguishing break). الإصلاح موجود في wolfSSL 5.9.2.

ماذا يمكن للمهاجم أن يفعل؟

استعادة المفتاح السري الكامل لـ ML-KEM-1024 على أي من الخلفيتين، عبر إرسال استعلامات فك تغليف مصمَّمة ومراقبة، لكل استعلام، ما إذا كان السر الحقيقي أو قيمة رفض هي التي تُعاد. وبالنسبة للملفات الثنائية الفعلية، استعاد هذا الهجوم المفتاح بما يقارب 10^5 إلى 10^6 استعلام فك تغليف.

كيف يعمل الهجوم؟

خُذ معاملًا واحدًا من معاملات النص المشفّر في المنطقة غير المفحوصة. تُحدَّد بتّه من النص الصريح عبر التقريب، m'_j = Compress_1(v_j - (s^T u)_j). ولأن تلك البايتات لا تُقارَن، فإن مسح القيمة المضغوطة لـ v_j ومراقبة مخرج فك التغليف الوحيد الذي يتغير يحدّد حدًّا للتقريب، وموضع هذا الحد يقيس ضجيج فك التشفير δ_j بدقة تبلغ نحو ±q/64. ومن حيث السر (s, e) والعشوائية المستخدمة في التشفير التي اختارها المهاجم:

δ_j = ( e^T y - s^T(e1 + c_u) + e2 + c_v )_j        (verified exact; small; never wraps mod q)

تلك معادلة خطية في السر ذي المعاملات الـ 2048 (s, e)، بمعاملات يعرفها المهاجم. كل نص مشفّر يعطي معادلة واحدة من هذا النوع لكل معامل غير مُتحقَّق منه. وتكديس ما يكفي من النصوص المشفّرة وحل المعادلات الطبيعية يستعيد المفتاح بأكمله، وتُثبَّت المعاملات القليلة الأخيرة بواسطة علاقة المفتاح العام e = t - A·s ∈ CBD(η). إنها مسألة المربعات الصغرى العادية، وليست مسألة شبكية.

تختلف الواجهتان الخلفيتان في مقدار ما تسرّبانه. تترك NEON نحو 50% من النص المشفّر دون تحقق (125 معاملًا في ثلاث نطاقات)، مقابل نحو 2% لـ AVX2 (51 معاملًا في نطاق واحد). لا تزال NEON تحتاج إلى مزيد من النصوص المشفّرة، لأن بايتاتها غير المتحقَّق منها غير متجاورة وقياسها لكل معامل أكثر ضجيجًا، لذا فإن تسريب المزيد لا يجعل الاستعادة أسهل هنا.

لماذا لا تنطبق هجمات استعادة مفتاح ML-KEM المعتادة؟

تنزيل الأداة