Description
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.
Published: 2026-08-20
Score: 6.8 Medium
EPSS: < 1% Very Low
KEV: No
Impact: Proof forgery
Action: Apply patch
AI Analysis

Impact

The vulnerability allows a Lean process to construct an ill‑typed nested inductive through a metaprogram; because the kernel does not verify that a projection expression references the correct structure, the type system is bypassed, producing a proof of false without any axioms and enabling derivation of any proposition, thereby breaking the soundness of the Lean environment.

Affected Systems

All releases of Lean 4 distributed by leanprover:lean4 are affected; no specific version range was listed in the CNA data.

Risk and Exploitability

The CVSS score of 6.8 indicates moderate severity; the EPSS score is not available and the vulnerability is not listed in the CISA KEV catalog. Exploitation requires in‑process execution of a metaprogram, typically through building a project or importing a malicious Lake dependency, so the attack vector is local and dependent on trusted code inclusion. While the risk to remote users is low, any local build environment that consumes untrusted code is potentially vulnerable and should be mitigated promptly.

Generated by OpenCVE AI on August 20, 2026 at 20:24 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade Lean to the latest stable release that contains the fix for the kernel type‑checking bypass.​​
  • Audit Lake or other project dependencies to ensure no malicious metaprogram modules are loaded; consider restricting dependency sources or verifying signatures.​​
  • If upgrading is not immediately possible, run untrusted Lean code inside a sandbox or isolated environment that prevents kernel type‑checking from accepting ill‑typed declarations.​​

Generated by OpenCVE AI on August 20, 2026 at 20:24 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Fri, 21 Aug 2026 22:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'poc', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Fri, 21 Aug 2026 13:30:00 +0000

Type Values Removed Values Added
First Time appeared Leanprover
Leanprover lean4
Vendors & Products Leanprover
Leanprover lean4

Thu, 20 Aug 2026 17:30:00 +0000

Type Values Removed Values Added
Description 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.
Title Lean 4 Kernel Type Checking Bypass via Mismatched Structure Projections
Weaknesses CWE-843
References
Metrics cvssV3_1

{'score': 6.3, 'vector': 'CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:N/I:H/A:N'}

cvssV4_0

{'score': 6.8, 'vector': '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'}


Subscriptions

Leanprover Lean4
cve-icon MITRE

Status: PUBLISHED

Assigner: VulnCheck

Published:

Updated: 2026-08-21T21:46:54.936Z

Reserved: 2026-08-10T15:14:51.467Z

Link: CVE-2026-72844

cve-icon Vulnrichment

Updated: 2026-08-21T21:13:57.269Z

cve-icon NVD

Status : Received

Published: 2026-08-20T18:16:45.290

Modified: 2026-08-21T22:16:44.447

Link: CVE-2026-72844

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-08-21T13:01:24Z

Weaknesses
  • CWE-843

    Access of Resource Using Incompatible Type ('Type Confusion')