Sceawere
Vulnerability Detail
CVE-2026-72703UPDATED Verified Sceawere Triage Sources: NVD / CISA KEV
Rocq Prover Guard Checker Flaw
Vulnerability Metadata
- Severity
- Medium
- Score / CVSS
- 6.3
- Creation Date
- 3h ago
- Vendor
- rocq-prover
- Product
- rocq
- Attack Type
- Always-Incorrect Control Flow Implementation
- Vector String
- CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:N/I:H/A:N
- Attack Complexity
- LOW
Narrative and Response
Description
The guard checker in Rocq Prover treats a parameter of a nested mutual fixpoint as uniform without examining calls between the different bodies of that fixpoint. find_uniform_parameters in kernel/inductive.ml inspects only self-recursive calls, so when no body calls itself the function concludes that every parameter is uniform. A parameter that grows through a cross-call from one body to another therefore keeps the subterm specification it inherited from the enclosing fixpoint, and a recursive call guarded by that specification is accepted although the argument is not structurally smaller. A non-terminating definition is admitted as structurally decreasing, which yields a term whose value equals its own successor and so a proof of False, from which any proposition follows. The proof requires no axioms, plugins or unsafe flags and Print Assumptions reports it as closed under the global context. Introduced in Coq 8.20 and fixed in Rocq 9.2.0.
Executive Summary
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
Technical Details
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
Mitigations
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
References
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
Additional Metadata
{
"score": "6.3",
"pubDate": "2026-08-24T20:17:18.240Z",
"pubdate": "2026-08-24T20:17:18.240Z",
"executiveSummary": "A logic soundness vulnerability exists in the guard checker of the Rocq Prover, specifically within the mutual fixpoint parameter uniformity analysis. The flaw allows the admission of non-terminating definitions as structurally decreasing due to incorrect handling of parameters in nested mutual fixpoints.\nThe primary impact of this vulnerability is the breakdown of logical consistency, leading to the derivation of a proof of False from which any arbitrary proposition can be proven. This undermines the core security guarantee of the theorem prover, which relies on the strict enforcement of termination for all recursive definitions.\nThe vulnerability affects Rocq Prover (formerly Coq) version 8.20 and is resolved in version 9.2.0. The attack vector is entirely internal to the proof assistant language, requiring no network exposure, authentication, or special privileges.\nAn attacker can exploit this flaw using standard proof scripts without utilizing axioms, plugins, or unsafe flags. The resulting inconsistent term is certified as closed under the global context by Print Assumptions, posing severe risks to the integrity of formally verified software and mathematical proofs.",
"technicalDetails": "The root cause of the vulnerability resides in the function find_uniform_parameters located in kernel/inductive.ml. When evaluating nested mutual fixpoints, the guard checker incorrectly assumes that a parameter is uniform without examining cross-calls between the different bodies of the fixpoint.\nSpecifically, find_uniform_parameters exclusively inspects self-recursive calls. If an individual body within the mutual fixpoint does not call itself directly, the function concludes that all of its parameters are uniform, even if cross-calls exist between different bodies of the same fixpoint.\nConsequently, a parameter that structurally grows via a cross-call from one body to another improperly retains the subterm specification inherited from the enclosing fixpoint. When a recursive call is subsequently guarded by this invalid specification, the guard checker accepts the argument as structurally smaller than the input, despite it not actually decreasing.\nThis logic failure permits the admission of non-terminating definitions into the environment under the false classification of being structurally decreasing. Step-by-step exploitation proceeds by constructing a mutual fixpoint where parameters grow across bodies without self-calls, tricking the kernel into accepting an infinite loop or unbounded recursion.\nThis violation of termination checking results in the construction of a term whose value evaluates to its own successor. Applying standard paradoxes or cyclic evaluation over this term yields a proof of False. Because the proof relies solely on kernel-level evaluation flaws, Print Assumptions reports the resulting term as closed under the global context without flagging any usage of axioms or unsafe extensions."
}