Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
lean-cve-poc — CVE-2026-72844 : Esempio di dimostrazione di "0 = 1" utilizzando una vulnerabilità nel kernel di Lean 4. | Kitploit
Strumenti/GitHubGitHub/endrazine/lean-cve-poc
Analisi delle VulnerabilitàExploitApprendimento e Formazione
GitHubendrazine/lean-cve-poc

lean-cve-poc

CVE-2026-72844 : Esempio di dimostrazione di "0 = 1" utilizzando una vulnerabilità nel kernel di Lean 4.

Vedi Repository
2312 giorni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2026-72844: Bug di solidità del kernel di Lean 4

Dimostrare 0 = 1 senza assiomi tramite bypass della validazione delle proiezioni induttive annidate.

Scarica lo strumento
FieldValue
CVECVE-2026-72844
AdvisoryVulnCheck VCSA
Bug reportleanprover/lean4#14576
Fixleanprover/lean4#14577
AffectedLean 4 ≤ v4.31.0 / nightly ≤ 2026-07-27
Fixed innightly 2026-07-29+ / v4.32.2
CVSS 4.0AV:L/AC:L/AT:N/PR:N/UI:P/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N — 6.8 MEDIO
CVSS 3.1AV:L/AC:L/PR:N/UI:R/S:C/C:N/I:H/A:N — 6.3 MEDIO
CWECWE-843 (Confusione di tipo)

Riepilogo della vulnerabilità

Il kernel di Lean 4 non verifica che la struttura nominata in un'espressione di proiezione corrisponda al tipo del valore su cui viene effettuata la proiezione, e environment::add_inductive in src/kernel/inductive.cpp non eseguiva il controllo di tipo sulle applicazioni induttive annidate che vengono sostituite da tipi ausiliari, quindi i loro argomenti parametrici sfuggivano al controllo.

Un metaprogramma in esecuzione nel processo Lean può registrare un tipo induttivo annidato mal tipizzato il cui costruttore applica una proiezione .proj C 0 a un valore del tipo non correlato W, e il kernel accetta la dichiarazione tramite il normale percorso controllato addDecl al massimo livello di controllo del kernel. Il risultato è una confusione di tipo che produce una dimostrazione di False senza assiomi, dalla quale è possibile derivare qualsiasi proposizione, inclusa 0 = 1.

L'exploit:

  • Usa esclusivamente il percorso del kernel addDecl controllato
  • Viene eseguito con --trust=0 (controllo massimo)
  • Non riporta alcun assioma tramite #print axioms
  • Non usa sorry, unsafeCast, debug.skipKernelTC, FFI o manomissione di .olean

Utilizzo

root@kitploit:~
docker build -t lean-cve-poc .
docker run --rm lean-cve-poc

Output atteso su una versione vulnerabile di Lean:

root@kitploit:~
[*] 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

Su una versione corretta di Lean, il kernel rifiuta il tipo induttivo mal tipizzato e lo script segnala che la versione non è vulnerabile.

Impatto

Qualsiasi sistema che consideri le dimostrazioni verificate dal kernel di Lean come verità di riferimento è interessato. Ciò include:

  • Software verificato formalmente: compilatori, librerie crittografiche, smart contract, avionica, automotive — qualsiasi caso di sicurezza basato su una dimostrazione Lean non è valido se realizzato con una versione vulnerabile.
  • Proof-carrying code: una dipendenza dannosa in un pacchetto Lake può introdurre silenziosamente dichiarazioni non valide (unsound) che il codice a valle utilizza.
  • Checker indipendenti: è stato dimostrato che la stessa classe di bug bypassa anche il type checker indipendente Nanoda.

Dettagli tecnici

La causa principale risiede nella gestione da parte del kernel dei tipi induttivi annidati. Quando si elimina un'occorrenza annidata I Ds is, il kernel deve verificare che gli argomenti parametrici Ds corrispondano ai parametri dichiarati del tipo induttivo. Il codice vulnerabile non controlla che le espressioni di proiezione (.proj) in Ds facciano riferimento al nome della struttura corretto — un .proj C 0 w viene accettato anche quando w : W e W ≠ C.

Combinato con una collisione di hash (il kernel usa confronti Expr.hash nel suo controllo di uguaglianza definizionale), ciò consente a un attaccante di registrare dichiarazioni in cui l'assegnazione interna dei tipi del kernel non concorda con la semantica effettiva del termine, portando a una confusione di tipo e a una dimostrazione di False.

Riferimenti

  • NVD: CVE-2026-72844
  • Avviso VulnCheck
  • Divulgazione oss-security
  • Issue Lean 4 #14576
  • PR di correzione #14577
  • Commit di correzione

Crediti

  • Scoperta del bug e PoC minimo: @kiranandcode
  • Exploit originale di CollatzLean: @xrchz (Ramana Kumar)
  • Correzione del kernel: Leonardo de Moura (PR #14577)
  • Segnalazione CVE e packaging del PoC: Jonathan Brossard (@endrazine)