Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
rocq-cve-poc-22287 — CVE-2026-72714 — рассинхронизация состояния проверки вселенной Rocq после закрытия модуля | Kitploit
Инструменты/GitHubGitHub/endrazine/rocq-cve-poc-22287
Анализ уязвимостейЭксплуатацияКриптографияСтатьи и Исследования
GitHubendrazine/rocq-cve-poc-22287

rocq-cve-poc-22287

CVE-2026-72714 — рассинхронизация состояния проверки вселенной Rocq после закрытия модуля

Репозиторий
2 дней назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

CVE-2026-72714 — Состояние проверки вселенных Rocq десинхронизируется после закрытия модуля

Доказательство 0 = 1 без аксиом через десинхронизацию флага проверки вселенных в области модуля.

ПолеЗначение
Отчёт об ошибкеrocq-prover/rocq#22287
ИсправлениеНет (по состоянию на 2026-08-16 issue открыт)
ЗатронутоRocq ≤ 9.2.0 / Coq 8.x (все версии с Hurkens в stdlib)
CVSS 3.1AV:L/AC:L/PR:N/UI:R/S:C/C:N/I:H/A:N — 7.1
CWECWE-488 (Exposure of Data Element to Wrong Session), CWE-20 (Improper Input Validation)
CVECVE-2026-72714

Сводка уязвимости

Модульная система Rocq Prover не обеспечивает должной области действия для флага Local Unset Universe Checking. При использовании внутри модуля флаг должен восстанавливаться в предыдущее состояние при закрытии модуля. Однако граф вселенных (ugraph) хранит собственную копию флага, которая выходит из синхронизации с глобальным состоянием при закрытии модуля.

После десинхронизации:

  • Test Universe Checking сообщает включено (глобальный флаг был восстановлен)
  • В ugraph проверка вселенных по-прежнему выключена (его копия не была восстановлена)
  • Поэтому ядро принимает несовместимые по вселенным термы без ошибки

При фактически отключённой проверке вселенных применяется парадокс Хуркенса: TypeNeqSmallType.paradox использует тот факт, что Type@{u} и Type@{v} при u < v могут быть перепутаны, когда ограничения вселенных не применяются, что даёт прямое доказательство False.

Эксплойт:

  • Не использует никаких аксиом, плагинов или небезопасных возможностей
  • Print Assumptions сообщает "Closed under the global context"
  • Требует только Stdlib.Logic.Hurkens (часть стандартной библиотеки)
  • Представляет собой 6 строк кода доказательства

Использование

docker build -t rocq-cve-poc-22287 .
docker run --rm rocq-cve-poc-22287

Ожидаемый вывод на уязвимой версии Rocq:

[*] Compiling ZeroEqOne.v ...
Universe Checking is on.
bad is defined
Closed under the global context
zero_eq_one is defined
Closed under the global context

[!] VULNERABILITY CONFIRMED

    zero_eq_one : 0 = 1
    Depends on: no axioms (closed under the global context)

    Bug class:  Universe checking state desync (CWE-488)
    Root cause: ugraph retains stale Local Unset Universe Checking flag
    Bug report: https://github.com/rocq-prover/rocq/issues/22287

Влияние

Затронута любая система, которая доверяет проверенным ядром Rocq доказательствам:

  • Формально верифицированное программное обеспечение: CompCert (верифицированный компилятор C), CertiKOS (верифицированное ядро ОС), Iris (фреймворк конкурентной separation logic), MathComp — любое обоснование безопасности, построенное на доказательстве Rocq, недействительно, если в среде доказательства произошла эта рассинхронизация флага.
  • Proof-carrying code: вредоносный файл .v в зависимости может незаметно внести некорректные объявления, на которые опираются последующие доказательства.
  • Смарт-контракты: проекты, использующие Rocq для верифицированной разработки смарт-контрактов (например, ConCert), могут лишиться своих гарантий безопасности.

Технические подробности

Первопричина

Граф универсумов (ugraph) в ядре содержит собственную копию флага Universe Checking. Когда модуль использует Local Unset Universe Checking, флаг изменяется как в глобальном состоянии, так и в ugraph. Когда модуль закрывается, глобальное состояние восстанавливается из сохранённого состояния модуля, но копия в ugraph не синхронизируется, из-за чего проверка универсумов фактически остаётся отключённой.

Сценарий атаки

┌─────────────────────────────────────────────────────┐
│ 1. Universes u v.  Constraint u < v.                │
│    → Declare universes with strict ordering          │
├─────────────────────────────────────────────────────┤
│ 2. Module Off.                                       │
│      Local Unset Universe Checking.                  │
│    End Off.                                          │
│    → ugraph flag stays OFF after module closes        │
├─────────────────────────────────────────────────────┤
│ 3. Test Universe Checking.  → reports "on" (LIE)     │
├─────────────────────────────────────────────────────┤
│ 4. eapply TypeNeqSmallType.paradox; reflexivity.     │
│    → Kernel accepts universe-inconsistent proof       │
│    → False proved with no axioms                     │
├─────────────────────────────────────────────────────┤
│ 5. zero_eq_one : 0 = 1                              │
│    → Derived via exfalso                             │
└─────────────────────────────────────────────────────┘

Сравнение с ошибками ядра Lean 4

АспектRocq #22287 (эта ошибка)Lean #14484Lean #14576
Пруф-ассистентRocq (Coq)Lean 4Lean 4
Класс ошибкиРассинхронизация состояния в модульной системеОтравление кэша выводаПутаница типов через проекции
Сложность эксплойта6 строк~20 строк~50 строк
Система вселенных/типовПроверка вселенных обойденаПринимается непрозрачный FVarФантомные параметры выходят за пределы
Статус исправленияОткрытаИсправлено (PR #14498)Исправлено (PR #14577)

Благодарности

  • Обнаружение ошибки: Gaëtan Gilbert (@SkySkimmer)
  • Упаковка PoC: Jonathan Brossard (@endrazine)
Скачать инструмент