Description
Rocq Prover does not restore the universe graph's copy of the universe checking flag when a module that locally disabled the check is closed. Local Unset Universe Checking inside a module is expected to last only until the module ends, and the global flag is restored, but the universe graph keeps its own copy which is left disabled. The two views then disagree: Test Universe Checking reports the check as enabled while the kernel continues to accept universe-inconsistent terms. With the constraint between two universes no longer enforced, Hurkens' paradox applies and yields a proof of False, from which any proposition follows. The proof uses no axioms, plugins or unsafe features once the module has closed, and Print Assumptions reports it as closed under the global context, so neither the assumption audit nor the flag query reflects the actual kernel state. No fix is available.
Published: 2026-08-24
Score: 6.8 Medium
EPSS: < 1% Very Low
KEV: No
Impact: Logical soundness violation
Action: Assess Impact
AI Analysis

Impact

The Rocq proof kernel fails to restore its universe‑checking flag when a module that has locally disabled the check is closed. Although the module’s local state is cleared, the kernel’s universe graph retains a copy of the flag that remains disabled. As a result the kernel accepts constructs that violate universe constraints while the external flag reports that checking is enabled. This desynchronisation creates a loophole that an attacker can exploit with Hurkens’ paradox to construct a proof of "False" using only core language constructs, thereby allowing arbitrary propositions to become provable and compromising the integrity of all subsequent proofs.

Affected Systems

Any installation of Rocq Prover version 9.2.0 or earlier is affected. The vendor product is rocq-prover:rocq. Versions prior to 9.2.0 are not impacted.

Risk and Exploitability

The CVSS score of 6.8 indicates moderate severity. The EPSS score is unavailable and the vulnerability is not listed in the CISA KEV catalog, so the probability of widespread exploitation is unknown. The exploit requires the ability to load a module that temporarily disables universe checking and then close it. Because no patch exists, this attack path remains persistently available to any user who can influence module content. An attacker who succeeds can cause the kernel to accept inconsistent terms and prove "False", breaking the logical soundness guarantees of the system.

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

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Identify whether your Rocq installation is version 9.2.0 or earlier; if so, note the vulnerability and consider avoiding use until an official fix is released.
  • Refrain from loading modules that temporarily disable universe checking; if such modules are necessary, keep them open or reload the environment immediately after closing to avoid leaving the flag disabled.
  • After any module load/close, explicitly query the universe‑checking state and verify consistency; if a mismatch is detected, restart the Rocq process to reset the kernel state.

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

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Fri, 28 Aug 2026 21:00:00 +0000

Type Values Removed Values Added
First Time appeared Rocq-prover
Rocq-prover rocq
Vendors & Products Rocq-prover
Rocq-prover rocq

Tue, 25 Aug 2026 18:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

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


Mon, 24 Aug 2026 20:15:00 +0000

Type Values Removed Values Added
Description Rocq Prover does not restore the universe graph's copy of the universe checking flag when a module that locally disabled the check is closed. Local Unset Universe Checking inside a module is expected to last only until the module ends, and the global flag is restored, but the universe graph keeps its own copy which is left disabled. The two views then disagree: Test Universe Checking reports the check as enabled while the kernel continues to accept universe-inconsistent terms. With the constraint between two universes no longer enforced, Hurkens' paradox applies and yields a proof of False, from which any proposition follows. The proof uses no axioms, plugins or unsafe features once the module has closed, and Print Assumptions reports it as closed under the global context, so neither the assumption audit nor the flag query reflects the actual kernel state. No fix is available.
Title Rocq Prover through 9.2.0 Universe Checking State Desynchronised After Module Close
Weaknesses CWE-459
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

Rocq-prover Rocq
cve-icon MITRE

Status: PUBLISHED

Assigner: VulnCheck

Published:

Updated: 2026-08-25T17:41:24.594Z

Reserved: 2026-08-10T13:02:52.001Z

Link: CVE-2026-72714

cve-icon Vulnrichment

Updated: 2026-08-25T17:41:00.810Z

cve-icon NVD

Status : Deferred

Published: 2026-08-24T20:17:18.810

Modified: 2026-09-08T20:23:49.880

Link: CVE-2026-72714

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-08-28T20:38:43Z

Weaknesses