CVE-2026-72844
Lean 4 Kernel Type Checking Bypass via Mismatched Structure Projections
The Lean 4 kernel does not verify that the structure named in a projection expression matches the type of the value being projected, and environment::add_inductive in src/kernel/inductive.cpp did not type check the nested inductive applications that are replaced by auxiliary types, so their parametric arguments escaped checking. A metaprogram running in the Lean process can register an ill-typed nested inductive whose constructor applies a .proj C 0 projection to a value of the unrelated type W, and the kernel admits the declaration through the ordinary checked addDecl path at maximum kernel checking, without sorry, unsafeCast, debug.skipKernelTC, addDeclWithoutChecking, FFI, or a modified .olean file. The result is a type confusion yielding a proof of False that carries no axioms, from which any proposition can be derived. The published proof of concept additionally pads two expressions until their hashes and approximate depths collide, which defeats kernel caching; that is the technique used to reach the flaw, not its cause. Exploitation requires running a metaprogram in-process, for example by building a project or importing a malicious Lake dependency.
Fixes and workarounds
Fix
The reporting source identifies this reference as a patch. Check the advisory for affected versions and supported release branches.
Source: CNA: VulnCheckFix
The reporting source identifies this reference as a patch. Check the advisory for affected versions and supported release branches.
Source: CNA: VulnCheckAffected products and versions
| Product | Versions | Authority |
|---|---|---|
| lean4 leanprover |
≥ 0; < 4.32.2 (affected, semver) 4.32.2 (unaffected, semver) 4.33.0-rc1 (affected, semver) Other versions: unaffected |
CNA: VulnCheck |
Version ranges are source assertions. Check the vendor advisory and your installed configuration before determining exposure.
CVSS assessments
| Version / score | Vector | Authority |
|---|---|---|
| 3.1 / 6.3 medium |
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:N/I:H/A:N | CNA: VulnCheck |
| 4.0 / 6.8 medium |
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 | CNA: VulnCheck |
Exploit evidence
- https://github.com/endrazine/lean-cve-poc
exploit · CNA: VulnCheck - https://github.com/xrchz/CollatzLean
exploit · CNA: VulnCheck
References
- https://github.com/leanprover/lean4/issues/14576CNA: VulnCheck · issue-tracking
- https://github.com/leanprover/lean4/commit/a39eab69e1eee9ad38f4efe507907b1026a77808CNA: VulnCheck · patch
- https://github.com/leanprover/lean4/pull/14577CNA: VulnCheck · issue-tracking, patch
- https://github.com/endrazine/lean-cve-pocCNA: VulnCheck · exploit
- https://github.com/xrchz/CollatzLeanCNA: VulnCheck · exploit
- https://www.openwall.com/lists/oss-security/2026/08/02/1CNA: VulnCheck · third-party-advisory
- https://github.com/leanprover/lean4CNA: VulnCheck · product
- https://www.vulncheck.com/advisories/lean-4-kernel-type-checking-bypass-via-mismatched-structure-projectionsCNA: VulnCheck · third-party-advisory
- http://www.openwall.com/lists/oss-security/2026/10/26/2ADP: CVE
For agents and automation
Read public disclosures for free as Markdown or JSON. Compatible browsers also expose native WebMCP tools to search disclosures, read this page, and discover API access.
Use the ontology-linked Cyber API with x402 pay per request, or a Y2 Pro or Elite API key with the intel:cyber scope.
Endpoints and access details
https://api.y2.dev/api/v2/cyber/cveshttps://api.y2.dev/api/v2/cyber/cves/{cveId}
A workspace owner or admin can create a Pro or Elite API key. Send Authorization: Bearer <Y2_API_KEY> from your trusted agent runtime.
For x402, omit Authorization and read the HTTP 402 payment challenge before signing a retry. Public browser tools do not make payments.