Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
rocq-cve-poc-21683 — CVE-2026-72705 — Rocq Guard Checker akzeptiert als Argument höherer Ordnung übergebenen Fixpoint | Kitploit
Tools/GitHubGitHub/endrazine/rocq-cve-poc-21683
SchwachstellenanalyseExploitationKryptographiePapers & Forschung
GitHubendrazine/rocq-cve-poc-21683

rocq-cve-poc-21683

CVE-2026-72705 — Rocq Guard Checker akzeptiert als Argument höherer Ordnung übergebenen Fixpoint

Repository anzeigen
vor 3 TagenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2026-72705 — Rocq Guard Checker akzeptiert Fixpoint, der als Argument höherer Ordnung übergeben wird

Beweis von 0 = 1 ohne Axiome über Russells Paradoxon durch Umgehung des Guard Checkers mittels Fixpoint.

Autonom entdeckt von Claude Opus 4.6 (Anthropic).

FeldWert
Fehlerberichtrocq-prover/rocq#21683
FixPR #21684
BetroffenRocq ≤ 9.1.0 / alle Coq-Versionen mit Guard Checker
Behoben in9.2.0
CVSS 3.1AV:L/AC:L/PR:N/UI:R/S:C/C:N/I:H/A:N — 7.1
CWECWE-670 (Always-Incorrect Control Flow Implementation)
CVECVE-2026-72705

Zusammenfassung der Schwachstelle

Der Guard Checker akzeptiert Fixpoints, die sich selbst als Argumente höherer Ordnung an einen anderen Fixpoint übergeben, der sie dann auf Nicht-Teilausdrücken des strukturellen Arguments aufruft. Die Übergabe einer rekursiven Funktion an eine Definition (eine Nicht-Fixpoint-Konstante) wird korrekt abgelehnt — der Guard Checker entfaltet sie und erkennt den problematischen Aufruf. Die Übergabe an einen Fixpoint wird jedoch fälschlicherweise akzeptiert.

Dies erzeugt ein Paradoxon im Stil von Russell in 4 Zeilen:

Definition delta (x : russell 1) : False := x x.
Definition omega : False := delta delta.

wobei russell 1 per Definition gleich russell 1 -> False ist — ein Typ, der seine eigene Negation ist. Selbstanwendung liefert direkt False.

Der Exploit:

  • Verwendet keine Axiome, Plugins oder unsicheren Features
  • Print Assumptions meldet "Closed under the global context"
  • Der gesamte Beweis von False besteht aus 4 Zeilen funktionalen Codes
  • Keine Taktiken, kein Qed — rein definitional

Verwendung

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

Auswirkung

Jedes System, das Rocqs kernel-geprüften Beweisen vertraut, ist betroffen:

  • Formal verifizierte Software: CompCert, CertiKOS, Iris, MathComp
  • Smart Contracts: ConCert, verifizierte DeFi
  • KI-generierte Beweise: jedes System, das Rocq als vertrauenswürdiges Backend verwendet

Technische Details

Die Paradox-Konstruktion

iterate_to_neg f n seed :=
  match n with
  | 0   => f seed -> False      (* negate after n steps *)
  | S m => iterate_to_neg f m seed
  end

russell n :=
  match n with
  | 0   => True
  | S m => iterate_to_neg russell 1 (S m)   (* passes ITSELF *)
  end

Der Guard-Checker sollte russell ablehnen, weil es sich selbst als Argument höherer Ordnung an iterate_to_neg übergibt, das es dann auf S m aufruft (kein Subterm von n). Der Checker verfolgt jedoch nur direkte rekursive Aufrufe, nicht Aufrufe über Fixpunkt-Argumente höherer Ordnung.

Reduktion

russell 1 = iterate_to_neg russell 1 1
          = iterate_to_neg russell 0 1
          = russell 1 -> False

Also russell 1 ≡ russell 1 -> False. Dies ist die klassische Russell-Menge: die Menge aller Mengen, die sich nicht selbst enthalten. Selbstanwendung ergibt:

delta : russell 1 -> False    (* russell 1 = russell 1 -> False *)
delta x := x x                (* x : russell 1 = russell 1 -> False *)

omega : False
omega := delta delta           (* delta : russell 1 -> False = russell 1 *)

Entdeckung

Dieser Fehler wurde autonom von Claude Opus 4.6 während eines nächtlichen Fuzzing-Laufs entdeckt, der von Tristan Stérin (@tcosmo) eingerichtet wurde, basierend auf Hinweisen von Yannick Forster (@yforster) zum Guard-Checker. Die KI identifizierte das Muster der Umgehung des Fixpunkts höherer Ordnung und konstruierte den minimalen iterate_to_neg/russell-Exploit.

Siehe: Zulip-Thread

Danksagungen

  • Fehlerentdeckung: Claude Opus 4.6 (Anthropic), eingerichtet von Tristan Stérin (@tcosmo)
  • Kernel-Fix: PR #21684
  • PoC-Verpackung: Jonathan Brossard (@endrazine)
Tool herunterladen