Sceawere
Vulnerability Detail
CVE-2020-37268UPDATED Verified Sceawere Triage Sources: NVD / CISA KEV
Coq Parameter Inline Universe Checking Bypass
Vulnerability Metadata
- Severity
- Medium
- Score / CVSS
- 6.3
- Creation Date
- 3h ago
- Vendor
- rocq-prover
- Product
- rocq
- Attack Type
- Insufficient Logging
- 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
Print Assumptions does not report that a definition was produced while universe checking was disabled when that definition reaches the caller through Parameter Inline in a module type. Applying a functor inlines the body of the parameter, and the inlining drops the record that the term was built under Unset Universe Checking, so the resulting constant carries no trace of the unsafe operation. A module implementation can therefore prove False using a universe inconsistency, expose it through an inlined parameter, and have Print Assumptions report the dependent proof as closed under the global context. Because Print Assumptions is the in-process audit used to confirm that a development rests on no unexpected assumptions, a dependency built this way passes that audit while proving arbitrary propositions. The standalone checker coqchk does reject the resulting compiled file. The project records this in dev/doc/critical-bugs.md under non-fixed bugs and rates the risk as moderate when coqchk is not used.
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:16:40.560Z",
"pubdate": "2026-08-24T20:16:40.560Z",
"executiveSummary": "Coq contains an audit bypass vulnerability involving the Print Assumptions command and parameter inlining within module types.\nThe vulnerability type is an assumption tracking failure leading to soundness evasion, allowing arbitrary proposition proofs to be classified as closed under the global context.\nThe affected product is Coq, specifically recorded in dev/doc/critical-bugs.md as a non-fixed bug.\nThe risk is rated as moderate when the standalone checker coqchk is not utilized.\nAn attacker can exploit this behavior by leveraging universe inconsistency proofs within a module implementation and exposing them through an inlined parameter via functor application.\nExploitation bypasses the in-process audit provided by Print Assumptions, though the compiled file is successfully rejected by the standalone checker coqchk.",
"technicalDetails": "The root cause of the vulnerability lies in the handling of universe checking states during parameter inlining in module types.\nWhen universe checking is disabled via Unset Universe Checking, terms are produced under this relaxed constraint.\nHowever, when a functor is applied, it inlines the body of the parameter and explicitly drops the internal record indicating that the term was originally built under Unset Universe Checking.\nConsequently, the resulting constant carries no trace of the unsafe operation, stripping away metadata that would normally flag the term as depending on inconsistent universes.\nThe attack flow proceeds as follows: first, a module implementation proves False by exploiting a universe inconsistency under disabled universe checking.\nSecond, this fraudulent proof is exposed through an inlined parameter within a module type.\nThird, when the Print Assumptions command is executed to verify the dependent proof, it fails to report that the definition was produced while universe checking was disabled.\nAs a result, Print Assumptions incorrectly reports the dependent proof as closed under the global context.\nThe vulnerable components involve the module system's parameter inlining mechanism and the Print Assumptions auditing routine.\nThis vulnerability requires local development manipulation where a user or developer constructs a proof using the affected module patterns.\nThe post-exploitation impact allows arbitrary propositions to pass internal in-process verification audits without raising warnings, although external validation via coqchk correctly identifies and rejects the compiled artifact."
}