CVE-2020-37268: Coq and Rocq Prover Print Assumptions Omits Unsafe Universe Checking Inlined Through Parameter Inline

Published Aug 24, 2026
·
Updated

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.

Affected Software

1 affected component
Coq Coq

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Configuration

    Run coqchk (standalone checker) in addition to Print Assumptions, because Print Assumptions does not report that universe checking was disabled when the definition is passed to the caller via Parameter Inline.

    Coq / Rocq Prover Print Assumptions workflow coqchk usage = enabled
  2. Compensating control

    Use the standalone checker coqchk to validate the compiled file, since it rejects artifacts produced with unsafe universe checking inline through a parameter.

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:16 PM
DescriptionSeverityWeakness

Frequently Asked Questions

1

Who is exposed to this issue?

Projects that rely on Print Assumptions as their in-process audit for unexpected assumptions are exposed when dependencies can use Parameter Inline in a module type and disable universe checking. The recorded risk is moderate when coqchk is not used.

2

What does an attacker or malicious dependency need to do?

They need to create a definition while universe checking is disabled, route it through a Parameter Inline in a module type, and have a functor inline that parameter body. This can hide the unsafe origin from Print Assumptions while allowing a universe inconsistency to be used to prove False.

3

How can I detect affected compiled artifacts?

Run the standalone coqchk checker on the compiled file. Unlike Print Assumptions, coqchk rejects the resulting file.

4

What should be done if patching is not available?

Use coqchk to validate compiled files rather than relying solely on Print Assumptions. This specifically addresses the audit bypass described here.

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