Bug 2523098 (CVE-2020-37268)

Summary: CVE-2020-37268 coq: rocq: Coq and Rocq Provers: Logical inconsistency bypass via Print Assumptions omission
Product: [Other] Security Response Reporter: OSIDB Bzimport <bzimport>
Component: vulnerabilityAssignee: Product Security DevOps Team <prodsec-dev>
Status: NEW --- QA Contact:
Severity: medium Docs Contact:
Priority: medium    
Version: unspecifiedKeywords: Security
Target Milestone: ---   
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: ---
Doc Text:
A flaw was found in Coq and Rocq provers. The `Print Assumptions` feature, which is used to audit the soundness of proofs, fails to report when a definition was created without proper "universe checking" (a mechanism to ensure logical consistency). This occurs when the definition is incorporated through "Parameter Inline" in a module type. An attacker could exploit this to introduce logically false statements into a proof, bypassing the audit and potentially leading to the acceptance of invalid mathematical or logical conclusions.
Story Points: ---
Clone Of: Environment:
Last Closed: Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 2523137, 2523138    
Bug Blocks:    

Description OSIDB Bzimport 2026-08-24 20:21:23 UTC
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.