CVE-2026-72704

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.
Configurations

No configuration.

History

26 Oct 2026, 02:17

Type Values Removed Values Added
References
  • () http://www.openwall.com/lists/oss-security/2026/10/26/5 -

12 Oct 2026, 15:10

Type Values Removed Values Added
Summary
  • (es) El verificador de guardas en Rocq Prover no vuelve a verificar la representación en árbol recursivo de un parámetro de tipo inductivo después de que ese parámetro haya sido modificado por transporte. Un punto fijo puede aplicar una reescritura a lo largo de una igualdad entre tipos a su argumento recursivo, lo cual el verificador de guardas acepta porque el tipo inductivo se preserva, mientras que el árbol recursivo registrado para el parámetro es alterado. Un segundo punto fijo que llama al primero hereda el árbol recursivo alterado sin verificación, por lo que una llamada que no es estructuralmente decreciente es aceptada como terminante. La definición no terminante resultante prueba que un número natural es igual a su propio sucesor y por lo tanto Falso, de lo cual se sigue cualquier proposición. La demostración utiliza dos axiomas que se derivan de la univalencia y son consistentes con el cálculo de construcciones inductivas, por lo que la contradicción proviene del verificador de guardas en lugar de las suposiciones. Se propone una solución pero no se ha fusionado.

Information

Published : 2026-08-24 20:17

Updated : 2026-10-26 02:17


NVD link : CVE-2026-72704

Mitre link : CVE-2026-72704

CVE.ORG link : CVE-2026-72704


JSON object : View

Products Affected

No product.

CWE
CWE-670

Always-Incorrect Control Flow Implementation