
CVE-2026-72844 : مثال على إثبات "0 = 1" باستخدام ثغرة في نواة Lean 4.
إثبات 0 = 1 بدون مسلمات عبر تجاوز التحقق من الإسقاطات الاستقرائية المتداخلة.
لا تتحقق نواة Lean 4 من أن البنية المذكورة في تعبير الإسقاط تطابق نوع القيمة التي يجري إسقاطها، كما أن environment::add_inductive في src/kernel/inductive.cpp لم يتحقق من الأنواع للتطبيقات الاستقرائية المتداخلة التي تُستبدل بأنواع مساعدة، لذا فإن وسائطها البارامترية تجاوزت الفحص.
يمكن لبرنامج ميتا يعمل داخل عملية Lean تسجيل استقرائي متداخل خاطئ الأنواع، بحيث يطبّق مُنشئه إسقاط .proj C 0 على قيمة من النوع غير المرتبط W، وتقبل النواة التصريح عبر مسار addDecl المُفحَص العادي بأقصى درجة فحص في النواة. النتيجة هي خلط أنواع ينتج برهانًا على False لا يحمل أي مسلمات، ويمكن اشتقاق أي افتراض — بما في ذلك 0 = 1 — منه.
الاستغلال:
addDecl--trust=0 (أقصى فحص)#print axiomssorry أو unsafeCast أو debug.skipKernelTC أو FFI أو العبث بـ .oleandocker build -t lean-cve-poc .
docker run --rm lean-cve-poc
الإخراج المتوقع على إصدار Lean معرّض للثغرة:
[*] Running ZeroEqOne.lean with --trust=0 ...
'bad' does not depend on any axioms
'boom' does not depend on any axioms
'zero_eq_one' does not depend on any axioms
zero_eq_one : 0 = 1
[!] VULNERABILITY CONFIRMED — CVE-2026-72844
zero_eq_one : 0 = 1
Depends on: no axioms
على إصدار Lean محدّث، ترفض النواة الاستقرائي خاطئ الأنواع ويُبلغ السكربت بأن الإصدار غير معرّض للثغرة.
أي نظام يثق في البراهين المُتحقَّق منها بواسطة نواة Lean باعتبارها حقيقة مطلقة يتأثر بهذه الثغرة. ويشمل ذلك:
السبب الجذري يكمن في معالجة النواة للأنواع الاستقرائية المتداخلة. عند حذف حدوث متداخل I Ds is، يجب على النواة التحقق من أن الوسائط البارامترية Ds تطابق المعاملات المعلنة للاستقرائي. الكود المعرّض للثغرة يفشل في التحقق من أن تعبيرات الإسقاط (.proj) في Ds تشير إلى اسم البنية الصحيح — حيث يُقبل .proj C 0 w حتى عندما w : W و W ≠ C.
وبالاقتران مع تصادم تجزئة (تستخدم النواة مقارنات Expr.hash في فحص المساواة التعريفية)، يسمح ذلك للمهاجم بتسجيل تصريحات يتعارض فيها إسناد الأنواع الداخلي للنواة مع الدلالات الفعلية للمصطلح، مما يؤدي إلى خلط الأنواع وبرهان على False.
| الحقل | القيمة |
|---|
| CVE | CVE-2026-72844 |
| النشرة الأمنية | VulnCheck VCSA |
| تقرير الخطأ | leanprover/lean4#14576 |
| الإصلاح | leanprover/lean4#14577 |
| الإصدارات المتأثرة | Lean 4 ≤ v4.31.0 / nightly ≤ 2026-07-27 |
| أُصلح في | nightly 2026-07-29+ / v4.32.2 |
| CVSS 4.0 | AV:L/AC:L/AT:N/PR:N/UI:P/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N — 6.8 متوسطة |
| CVSS 3.1 | AV:L/AC:L/PR:N/UI:R/S:C/C:N/I:H/A:N — 6.3 متوسطة |
| CWE | CWE-843 (الخلط بين الأنواع) |