CVE-2026-72704: Rocq Prover through 9.2.0 Guard Checker Trusts Corrupted Recursive Tree After Transport

Published Aug 24, 2026
·
Updated

The guard checker in Rocq Prover does not recheck the recursive tree representation of an inductive type parameter after that parameter has been changed by transport. A fixpoint may apply a rewrite along an equality between types to its recursive argument, which the guard checker accepts because the inductive type is preserved, while the recursive tree recorded for the parameter is altered. A second fixpoint that calls the first inherits the altered recursive tree without verification, so a call that is not structurally decreasing is accepted as terminating. The resulting non-terminating definition proves that a natural number equals its own successor and therefore False, from which any proposition follows. The demonstration uses two axioms that follow from univalence and are consistent with the calculus of inductive constructions, so the contradiction comes from the guard check rather than from the assumptions. A fix is proposed but not merged.

Affected Software

1 affected component
Rocq Rocq Prover<=9.2.0

Event History

Aug 24, 2026
CVE Published
via MITRE·08:08 PM
Data Sourced
via MITRE·08:08 PM
DescriptionSeverityWeakness
Data Sourced
via NVD·08:17 PM
DescriptionSeverityWeakness

Frequently Asked Questions

1

Who is exposed to this issue?

Users of Rocq Prover through version 9.2.0 are affected when they rely on the prover's guard checker to enforce termination and preserve logical consistency. Exploitation requires accepting or compiling a crafted proof development; it is not a remote attack.

2

What does an attacker need to exploit the flaw?

An attacker needs to construct fixpoints that rewrite a recursive argument through an equality between types, then use a second fixpoint that inherits the altered recursive tree. The demonstrated contradiction also uses two axioms following from univalence, although the issue attributes the unsoundness to the missing guard-check verification.

3

What is the practical impact of a successful exploit?

A successful exploit permits a non-terminating definition to be accepted as terminating. This can prove that a natural number equals its successor, derive False, and consequently prove any proposition.

4

Is a fix available?

A fix has been proposed, but it was not merged as of the provided information. No released fixed version is identified.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203