Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
lean-cve-poc — CVE-2026-72844 : Ejemplo de demostración de "0 = 1" utilizando una vulnerabilidad en el kernel de Lean 4. | Kitploit
Herramientas/GitHubGitHub/endrazine/lean-cve-poc
Análisis de VulnerabilidadesExplotaciónAprendizaje y Educación
GitHubendrazine/lean-cve-poc

lean-cve-poc

CVE-2026-72844 : Ejemplo de demostración de "0 = 1" utilizando una vulnerabilidad en el kernel de Lean 4.

Ver Repositorio
231hace 2 díasRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

CVE-2026-72844: Error de solidez del kernel de Lean 4

Demostrando 0 = 1 sin axiomas mediante la evasión de la validación de proyecciones inductivas anidadas.

Descargar herramienta
CampoValor
CVECVE-2026-72844
AvisoVulnCheck VCSA
Informe de errorleanprover/lean4#14576
Correcciónleanprover/lean4#14577
AfectadosLean 4 ≤ v4.31.0 / nightly ≤ 2026-07-27
Corregido ennightly 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 MEDIUM
CVSS 3.1AV:L/AC:L/PR:N/UI:R/S:C/C:N/I:H/A:N — 6.3 MEDIUM
CWECWE-843 (Confusión de tipos)

Resumen de la vulnerabilidad

El kernel de Lean 4 no verifica que la estructura nombrada en una expresión de proyección coincida con el tipo del valor que se proyecta, y environment::add_inductive en src/kernel/inductive.cpp no comprobaba los tipos de las aplicaciones inductivas anidadas que son reemplazadas por tipos auxiliares, por lo que sus argumentos paramétricos escapaban a la comprobación.

Un metaprograma que se ejecuta en el proceso de Lean puede registrar un inductivo anidado mal tipado cuyo constructor aplica una proyección .proj C 0 a un valor del tipo no relacionado W, y el kernel admite la declaración a través de la ruta addDecl verificada ordinaria con la comprobación máxima del kernel. El resultado es una confusión de tipos que produce una prueba de False sin axiomas, de la que se puede derivar cualquier proposición, incluida 0 = 1.

El exploit:

  • Utiliza solo la ruta verificada addDecl del kernel
  • Se ejecuta con --trust=0 (comprobación máxima)
  • Reporta cero axiomas mediante #print axioms
  • No utiliza sorry, unsafeCast, debug.skipKernelTC, FFI ni manipulación de .olean

Uso

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

Salida esperada en una versión vulnerable de 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

En una versión de Lean parcheada, el kernel rechaza el inductivo mal tipado y el script informa que la versión no es vulnerable.

Impacto

Cualquier sistema que confíe en las pruebas verificadas por el kernel de Lean como verdad fundamental está afectado. Esto incluye:

  • Software verificado formalmente: compiladores, librerías criptográficas, contratos inteligentes, aviónica, automoción: cualquier caso de seguridad basado en una prueba de Lean es inválido si se construyó con una versión afectada.
  • Código con prueba (proof-carrying code): una dependencia maliciosa en un paquete de Lake puede introducir silenciosamente declaraciones no sólidas que el código posterior utilice.
  • Verificadores independientes: se demostró que la misma clase de error también evade el verificador de tipos independiente Nanoda.

Detalles técnicos

La causa raíz está en el manejo que hace el kernel de los tipos inductivos anidados. Al eliminar una ocurrencia anidada I Ds is, el kernel debe verificar que los argumentos paramétricos Ds coincidan con los parámetros declarados del inductivo. El código vulnerable no comprueba que las expresiones de proyección (.proj) en Ds hagan referencia al nombre de estructura correcto: se acepta un .proj C 0 w incluso cuando w : W y W ≠ C.

Combinado con una colisión de hash (el kernel usa comparaciones Expr.hash en su comprobación de igualdad definicional), esto permite a un atacante registrar declaraciones donde la asignación de tipos interna del kernel discrepa de la semántica real del término, lo que conduce a una confusión de tipos y a una prueba de False.

Referencias

  • NVD: CVE-2026-72844
  • Aviso de VulnCheck
  • Divulgación en oss-security
  • Problema #14576 de Lean 4
  • PR de corrección #14577
  • Commit de corrección

Créditos

  • Descubrimiento del error y PoC mínima: @kiranandcode
  • Exploit original de CollatzLean: @xrchz (Ramana Kumar)
  • Corrección del kernel: Leonardo de Moura (PR #14577)
  • Presentación del CVE y empaquetado de la PoC: Jonathan Brossard (@endrazine)