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
kernel-c-to-rust-spike — Härtung von Kernel-C-Parsern durch Rust-Umschreibung + differentielles Fuzzing + formale Verifikation. Erstes Ziel: UVC (CVE-2024-53104). | Kitploit
Tools/GitHubGitHub/runtimeverification/kernel-c-to-rust-spike
Statische AnalyseSchwachstellenanalyseReverse EngineeringFuzzingBinäranalysePapers & ForschungLernen & Bildung
GitHubruntimeverification/kernel-c-to-rust-spike

kernel-c-to-rust-spike

Härtung von Kernel-C-Parsern durch Rust-Umschreibung + differentielles Fuzzing + formale Verifikation. Erstes Ziel: UVC (CVE-2024-53104).

Repository anzeigen
285vor 3 MonatenNoch 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

Kernel-C-nach-Rust-Härtungs-Spike: UVC-Deskriptor-Parser

Kann ein sicherheitskritischer C-Parser im Linux-Kernel gehärtet werden, indem man ihn in Rust neu schreibt, wobei nachgewiesen wird, dass der Neuentwurf äquivalent zum Original ist, und er anschließend formal verifiziert wird? Dieser Spike durchläuft die vollständige Schleife an einem Ziel: dem UVC-Video-Deskriptor-Parser (uvc_parse_format/uvc_parse_frame aus drivers/media/usb/uvc/, v7.2-rc2), ausgewählt, weil er zwei unabhängige Speichersicherheits-CVEs mit sechzehn Jahren Abstand aufwies (CVE-2008-3496, CVE-2024-53104, letztere im CISA-KEV-Katalog).

Die Schleife und was jeder Schritt etablierte

  1. Das C-Blatt extrahieren (c/). Die Parsing-Logik byte-genau aus dem Kernel kopiert; nur die Umgebung gestubbt (// SPIKE-STUB). Kompiliert zu einer C-ABI-Bibliothek. Das extrahierte Blatt enthält den Zähl-Durchlauf und die größenbasierte Allokation, sodass die Fehlerklasse von CVE-2024-53104 (Parsen schreibt über das hinaus, was die Zählung allokiert hat) erreichbar ist und nicht wegabstrahiert wurde.

  2. In Rust neu schreiben (rust/). Dasselbe Parsing-Blatt in sicherem Rust, gleiche C-ABI und Ergebnisstruktur. Jede Abweichung vom C ist mit // DEVIATION markiert und dokumentiert.

  3. Differentielles Fuzzing (fuzz/). Ein LibAFL-Harness auf stabilem rustc treibt beide Implementierungen mit einer Eingabe an und vergleicht die Ausgaben feldweise. Ergebnis: Nach Behebung einer Portierungsabweichung an einer compilerabhängigen Stelle mit vorzeichenbehaftetem Überlauf null Divergenzen über 54.019 Ausführungen bei 93 % Kantenabdeckung. Im originalgetreuen v7.2-rc2-Code ist kein Out-of-Bounds-Zugriff erreichbar (beide CVEs sind gepatcht). Eine optionale Negativkontrolle (--features vuln, in beiden Sprachen gespiegelt) führt die CVE-2024-53104-Abweichung wieder ein: Bei derselben Eingabe führt das C einen Heap-Out-of-Bounds-Schreibzugriff aus (ASan), das Rust gerät sicher in eine Panik. Details: fuzz/RESULTS.md.

  4. Formale Verifikation (verify/). Das originalgetreue Rust-Blatt extrahiert über Charon und Aeneas nach Lean 4 ohne sorry im generierten Code und ohne Union-Blocker (anders als beim Binder-Spike). Zwei Theoreme, in verify/VERIFY-REPORT.md und ROADMAP.md:

    • Totale Sicherheit bei allen Eingaben (jedes Ergebnis ist ok / kontrolliertes fail / Nichtterminierung, niemals ein Ergebnis mit undefiniertem Verhalten): bewiesen, sorry-frei. Dies macht die Speichersicherheitseigenschaft, die dem C fehlt, als geprüfte Aussage explizit.
    • Keine Panik bei wohlgeformter Eingabe (eine Panik tritt nur bei fehlerhafter Eingabe auf, wo sie das beabsichtigte sichere Verhalten ist, das den OOB-Schreibzugriff des C ersetzt): in Arbeit. Die Invariante zwischen Zählung und Schreiben, deren Verletzung CVE-2024-53104 ist, ist sorry-frei bewiesen, zusammen mit zwei wiederverwendbaren Aeneas-Schleifenbeweisprinzipien und Div-Freiheit für die 5 strukturell terminierenden Schleifen. Der Rest reduziert sich auf einen benannten funktionalen Korrektheitskern für den Positionsdurchlauf (vier formulierte Lemmata); siehe ROADMAP.md.

Status

Die Schleife ist an einem Ziel durchgängig demonstriert. Der Neuentwurf ist durch differentielles Fuzzing als äquivalent zum C nachgewiesen; der Speichersicherheitsunterschied wird durch die Negativkontrolle konkret gemacht; das Rust extrahiert sauber nach Lean und seine Totale-Sicherheit-Eigenschaft ist maschinell geprüft. Für das Keine-Panik-Theorem ist die Zähl-Invariante (der Kern von CVE-2024-53104) sorry-frei bewiesen und die verbleibende Arbeit auf einen benannten funktionalen Korrektheitskern reduziert, der formuliert, aber noch nicht bewiesen ist. Der vollständige Beweisstatus und die offenen Lemmata stehen in ROADMAP.md.

Aufbau

  • c/ — das extrahierte C-Blatt und seine Stubs
  • rust/ — der Neuentwurf in sicherem Rust
  • fuzz/ — der differentielle LibAFL-Fuzzer, Ergebnisse und CVE-Klassen-Kontrolle
  • verify/ — Charon/Aeneas/Lean-Extraktion und Theoreme
  • ROADMAP.md — Beweisstatus und die verbleibenden offenen Lemmata
  • OPEN_CHALLENGES.md — konkrete Aufgaben, die ein Beitragender übernehmen kann
  • */README.md, fuzz/RESULTS.md, verify/VERIFY-REPORT.md — Details pro Phase

Umgebung

Kernel v7.2-rc2 (schreibgeschützte Referenz). Rust stable 1.94.0. LibAFL 0.15. Charon 909ff09a (v0.1.220, --preset=aeneas), Aeneas c2015b86, Lean/mathlib v4.31.0.

Tool herunterladen