Back to feed
19Track

Rocq Prover before 9.2.0 Guard Checker Accepts Fixpoint Passed as a Higher-Order Argument

rocq-prover rocq · CVE-2026-72705
0 news outlets0 CERTs and agencies1 research labs

Assessment: Track

SSVC decision points: exploitation poc, automatable no, technical impact partial, deployment low.

What is it?

The guard checker in Rocq Prover does not follow recursive calls made through a fixpoint's own arguments. A fixpoint may pass itself as a higher-order argument to a second fixpoint, which then applies it to a value that is not a subterm of the structural argument. Passing the recursive function to a plain definition is rejected because the checker unfolds the definition and observes the call, but passing it to a fixpoint is accepted because higher-order recursive calls through fixpoint arguments are not tracked. This admits a type that is definitionally equal to its own negation, so self-application produces False in purely definitional code, without tactics, axioms, plugins or unsafe flags, and Print Assumptions reports the result as closed under the global context. Fixed in Rocq 9.2.0.

Evidence

Technical advisories1Detailed write-ups from security research teams

Exploitation

  • Exploit code published (not verified by us)
  • Exploited in the wild (confirmed by a source)
  • Listed as known exploited (CISA KEV)
CVSS
6.3
EPSS
–
First seen
1 h ago
Status
corroborated

All rocq-prover vulnerabilities