Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

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

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)

عرض المستودع
1منذ 25 أياملم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

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

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

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

مقدمة

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

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

NEON
Nicholas Carlini
Wikipedia
CVE-2026-6330
AVX2
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

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

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

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

ما هي الثغرة؟

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

هل أنا متأثر؟

أنت متأثر إذا استخدمت 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 تستخدم مفتاحًا جديدًا لكل مصافحة ولا يمكن استرداد مفتاحها؛ هناك الخلل مجرد كسر تمييزي. الإصلاح في 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) وعشوائية التشفير التي اختارها المهاجم:

root@kitploit:~
δ_j = ( e^T y - s^T(e1 + c_u) + e2 + c_v )_j        (تم التحقق منه بدقة؛ صغير؛ لا يلتف أبدًا mod q)

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

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

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

هجمات فحص النص العادي وعدم تطابق المفتاح (Ravi et al. 2020, Qin et al. 2021, Băetu et al. 2019) تسترد المفتاح في بضعة آلاف من الاستعلامات بتقديم نصوص مشفرة ذات u متناثر يختاره المهاجم لعزل معامل سري واحد لكل استعلام. خلل AVX2 يرفضها جميعًا: يتخطى فقط 32 بايتًا من v ويتحقق من كل u، لذا على الثنائي الحي، النص المشفر ذو u المتناثر مرفوض وقلب بت واحد من u مرفوض 30 مرة من 30. خلل NEON أوسع، تاركًا حوالي نصف u غير مُفحَص أيضًا، لذا تلك الحجة خاصة بـ AVX2؛ لكن الهجوم لا يعتمد عليها. انحدار ضجيج فك التشفير يسترد المفتاح من معاملات v غير المُفحَصة على كلتا المنصتين، ناجيًا من جزء الفحص الذي يتركه كل خلل سليمًا.

السابقة ذات الصلة، إذن، ليست هجمات عدم تطابق المفتاح تلك بل هجمات فشل فك التشفير (D'Anvers et al. 2019, ref 6). تستغل نفس حد ضجيج فك التشفير، وهو دالة خطية للسر، لكن فقط عبر الحدث النادر لعبور ذلك الحد لحد فك التشفير والتسبب في فشل فك التشفير، لذا الاسترداد هناك إحصائي ويحتاج نصوصًا مشفرة أكثر بكثير. المقارنة غير المكتملة بدلاً من ذلك تجعل ذلك الحد نفسه قابلًا للقياس مباشرة، إلى حوالي ±q/64، لذا لا حاجة لفشل والهجوم ينهار إلى انحدار المربعات الصغرى العادي أعلاه.

كيف تم إثباته؟

في نموذج مرجعي دقيق (kyber-py) لكلتا المنصتين، الهوية أعلاه مُتحقق منها بدقة والانحدار يسترد جميع المعاملات السرية الـ 2048. ضد ثنائيات wolfSSL الحية قبل الإصلاح، بمهاجمة مفتاح مُصدَّر مُعاد استخدامه، كل منصة اختبار تشغّل فحصًا ذاتيًا ضد مفتاح الحقيقة الأرضية المُصدَّر من النبيئة قبل أن تُبلغ عن أي رقم:

  • AVX2 (x86-64 أصلي): 65.5% (100 ct)، 87.8% (200 ct)، 96.9% (350 ct)، ليصل إلى 98.0% من السر الكامل (s, e) عند 400 نص مشفر. السر s وحده هو 1005/1024 = 98.1% عند 350 ct، الرقم المسجل في CVE.
  • NEON (ARM64 تحت محاكاة QEMU): 45.7% (50 ct)، 85.2% (200 ct)، ليصل إلى 2018/2048 = 98.5% من السر الكامل (s, e) عند 600 نص مشفر، مع تقارب خطأ الحل بشكل رتيب نحو الدقة.

المفتاح المسترد هو زوج المفاتيح المولّد من wolfSSL الذي تُصدّره النبيئة، والهجوم يعمل ضد تجميع SIMD بالشكل المُوزَّع وليس نموذجًا له. سجلات كاملة: avx2-cve-2026-10097/live_recover_avx2.out، neon-cve-2026-6330/live_recover_neon.out.

كيف أصلحه؟

قم بالترقية إلى wolfSSL 5.9.2 أو أحدث (PR #10430 لـ AVX2، PR #10192 لـ NEON).

ما مدى خطورته؟

عالية، وإن لم تكن كارثية. يتطلب مفتاحًا مُعاد استخدامه، ونبيئة قبول/رفض، وعددًا كبيرًا لكنه عملي من الاستعلامات. إنها ليست قناة جانبية: لا يوجد توقيت أو قياس طاقة، فقط خلل منطقي في مقارنة. لا تؤثر على التنفيذات الصحيحة أو معيار ML-KEM نفسه. للمقارنة، تسريب توقيت ناتج عن المترجم في فك تغليف ML-KEM في liboqs (CVE-2024-36405)، وهي مسألة استرداد كامل للمفتاح السري ذات صلة من موجة 2024 من تسريبات توقيت ML-KEM إلى جانب KyberSlash، صُنفت بـ CVSS 7.5 من NIST.

إعادة الإنتاج

كود الهجوم لكل منصة، والتحليل، وخطوات إعادة الإنتاج موجودة في avx2-cve-2026-10097/ و neon-cve-2026-6330/.

الاعتمادات

يوثق هذا المستودع اكتشافين شقيقين من نفس نافذة إصدار wolfSSL، وهجومًا واحدًا يكسر كليهما.

  • خلل NEON، CVE-2026-6330، تم العثور عليه والإبلاغ عنه بواسطة Nicholas Carlini (الموقع، Wikipedia)، باحث في Anthropic، وتم توثيقه كإضعاف IND-CCA2.
  • خلل AVX2، CVE-2026-10097، وهجوم استرداد مفتاح ضجيج فك التشفير المُثبت على كلتا المنصتين، من إعداد 007bsd.

المراجع

  1. wolfSSL. CVE-2026-6330 (NEON, N. Carlini) · NVD · PR #10192.
  2. wolfSSL. CVE-2026-10097 (AVX2) · NVD · PR #10430.
  3. P. Ravi, S. S. Roy, A. Chattopadhyay, S. Bhasin. Generic Side-channel Attacks on CCA-secure lattice-based PKE and KEMs. TCHES 2020(3). ePrint 2019/948.
  4. Y. Qin, C. Cheng, X. Zhang, Y. Pan, L. Hu, J. Ding. A Systematic Approach and Analysis of Key Mismatch Attacks on Lattice-Based NIST Candidate KEMs. ASIACRYPT 2021. ePrint 2021/123.
  5. C. Băetu, F. B. Durak, L. Huguenin-Dumittan, A. Talayhan, S. Vaudenay. Misuse Attacks on Post-Quantum Cryptosystems. EUROCRYPT 2019. ePrint 2019/525.
  6. J.-P. D'Anvers, Q. Guo, T. Johansson, A. Nilsson, F. Vercauteren, I. Verbauwhede. Decryption Failure Attacks on IND-CCA Secure Lattice-Based Schemes. PKC 2019. IACR PDF.
  7. NIST. FIPS 203: Module-Lattice-Based Key-Encapsulation Mechanism Standard.
  8. تسريب توقيت ML-KEM الناتج عن المترجم في liboqs. CVE-2024-36405 (NIST CVSS 7.5). متميز عن KyberSlash لكنه متزامن معه (توقيت قسمة يعتمد على السر)، D. J. Bernstein et al., ePrint 2024/1049.
  9. G. Pope. kyber-py: تنفيذ نقي بلغة Python لـ ML-KEM (FIPS 203). GitHub (MIT OR Apache-2.0). مستخدم هنا كنموذج مرجعي لهوية ضجيج فك التشفير ومحاكاة الاسترداد.

الإفصاح

تم الإبلاغ عن كلتا المسألتين بشكل خاص، وإصلاحهما، وتعيين CVEs لهما قبل هذا التقرير. تم الإصلاح في wolfSSL 5.9.2.

Citation

التقرير الكامل منشور كـ Cryptology ePrint Archive, Paper 2026/1682 (نسخة محلية: paper/).

root@kitploit:~
@misc{cryptoeprint:2026/1682,
      author = {Bhabani Sankar Das},
      title = {Incomplete Ciphertext Comparison in {ML}-{KEM}: From an {IND}-{CCA2} Break to Key Recovery},
      howpublished = {Cryptology {ePrint} Archive, Paper 2026/1682},
      year = {2026},
      url = {https://eprint.iacr.org/2026/1682}
}
تنزيل الأداة