Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
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.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
linux-kernel-codex-harness — Evidenzbasierte Forschungsumgebung für Schwachstellen im Linux-Kernel, die bei der Untersuchung von CVE-2026-31720 eingesetzt wird. | Kitploit
Tools/GitHubGitHub/foxirain/linux-kernel-codex-harness
Statische AnalyseSchwachstellenanalyseFuzzingKI-Sicherheit
GitHubfoxirain/linux-kernel-codex-harness

linux-kernel-codex-harness

Evidenzbasierte Forschungsumgebung für Schwachstellen im Linux-Kernel, die bei der Untersuchung von CVE-2026-31720 eingesetzt wird.

Repository anzeigen

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
vor 23 TagenNoch nicht geprüft
Teilen

Kernel Codex Harness

한국어 | English

CI

Forschungswerkzeug · Ursprünglicher Import: 3. April 2026 · Dokumentationsrevision: 11. Juli 2026

Kernphilosophie — Externes Signal
Reproduzierbare Beobachtungen außerhalb der Modellinferenz sollen die Aufmerksamkeit lenken; Priorität niemals mit Beweis verwechseln.

Projektstatus. Dieses Repository ist eine frühe Version eines LLM-gestützten Research-Harness, der für die Untersuchung realer Linux-Kernel-Schwachstellen entwickelt und verwendet wurde. Diese Version wurde verwendet, um die als CVE-2026-31720 veröffentlichte Schwachstelle zu finden. Der Harness priorisiert Untersuchungsziele, beweist jedoch keine Schwachstellen automatisch und garantiert keine Kernel-Sicherheit; die endgültige Validierung und Berichterstattung erfolgt durch Menschen.

Abstract

Abstract— Wenn man LLMs eine Codebasis von der Größe des Linux-Kernels direkt durchsuchen lässt, zerstreut sich der Kontext schnell, und die Existenz riskanter APIs wird leicht mit tatsächlicher Ausnutzbarkeit verwechselt. Kernel Codex Harness definiert dieses Problem nicht als automatische Schwachstellenerkennung, sondern als . Dieses Projekt nennt das Prinzip, die Aufmerksamkeit des Modells durch reproduzierbare Beobachtungen zu steuern, die außerhalb der LLM-Inferenz berechnet werden, . Kernel-Pfade, Userspace-Grenzen, statische Signale für Lifetime, Usercopy, Refcount und Größe sowie optionale syzbot-Crash-Intelligence werden kombiniert, um Kandidatendateien zu ranken, und jeder Kandidat wird in ein schmales Prompt-Bündel umgewandelt. Manuelle Überprüfung und zeitbudgetierter Autopilot verwenden denselben Antwortvertrag und denselben Sitzungszustand. Dieser Harness wurde in einer realen Linux-Kernel-Untersuchung verwendet, um einen Stack-Out-of-Bounds-Write im USB-Gadget-Audio-Pfad zu finden; dieser Fehler wurde als veröffentlicht. Diese Implementierung ist kein präziser statischer Analysator, sondern ein Research-Workflow, der den LLM-Untersuchungsbereich durch erklärbare Heuristiken eingrenzt; alle Findings erfordern eine menschliche Revalidierung von Erreichbarkeit, Invariantenbruch und konkreter Auswirkung.

Untersuchungspriorisierung und zustandsbasierte Orchestrierung
External Signal
CVE-2026-31720

Index Terms— Linux-Kernel, Schwachstellenforschung, externes Signal, LLM-Orchestrierung, heuristische Priorisierung, syzbot, Programmanalyse, Codex.

I. Einleitung

Die Sicherheitsprüfung des Linux-Kernels hat zwei Arten von Skalierungsproblemen. Erstens ist der gesamte Quellbaum zu groß für einen einzigen LLM-Kontext. Zweitens sind Signale wie copy_from_user, Allokatoren, Refcounts und Locks häufig, bedeuten aber für sich genommen keine Schwachstelle. Der Analyst muss zuerst entscheiden, „wo gesucht werden soll“, und dann Userspace-Erreichbarkeit und konkrete Zustandsübergänge separat beweisen.

Die Kernphilosophie dieses Projekts ist External Signal.

Das LLM entscheidet nicht selbst, wo es hinsieht. Reproduzierbare Signale außerhalb der Modellinferenz verteilen die Aufmerksamkeit, aber Schwachstellenschlussfolgerungen werden nur durch Erreichbarkeits- und Invariantenevidenz bestimmt.

Daher lässt der Harness das Modell nicht vage den gesamten Kernel durchsuchen. Er priorisiert Dateien, bietet jeweils nur einen Untersuchungszweig an und verlangt zuerst Beweisstrukturen statt Schlussfolgerungen.

II. External Signal und Designprinzipien

A. External Signal vor der Modellinferenz

External Signal ist kein vom LLM generiertes Urteil, sondern eine Beobachtung, die vor der Modellausführung bestimmt und aus demselben Quellbaum, Profil und gespeicherten syzbot-JSON neu berechnet werden kann. Pfadgewichte, Regex-Treffer und gecachte syzbot-Überlappungen fallen darunter. Diese Signale werden nur für Kandidatenranking und Prompt-Kontext verwendet und nicht zu Urteilen oder Beweisen erhoben.

External Signal in diesem Dokument bezieht sich auf die gesamte Projektphilosophie. Das ExternalSignal-Datenmodell im Code repräsentiert derzeit nur die daraus abgeleiteten syzbot-Signale, daher unterscheidet sich der Umfang der beiden Begriffe.

B. Priorisierung ist kein Beweis

Regex-Treffer, Hochrisikopfade und syzbot-Überlappungen sind allesamt Signale für die Untersuchungsreihenfolge. Eine hohe Punktzahl ist kein Sicherheitsfinding, wenn der tatsächliche Aufrufpfad, Berechtigungen, Kernel-Konfiguration, Namespace oder die Geräteverfügbarkeit dem Angreifer keinen Zugriff ermöglichen.

C. Erreichbarkeit vor Bug-Klasse

Die Prüfung identifiziert zuerst Grenzen, die vom Userspace ausgehen, wie syscall, ioctl, netlink, procfs, Dateisysteme, BPF und Driver-Hooks. Erst danach werden Bug-Klassen wie UAF, OOB, Refcount, Race, Info-Leak und Capability-Checks bewertet.

D. Ein Untersuchungszweig nach dem anderen

Eine Untersuchungseinheit ist standardmäßig auf eine Datei und nahe Caller-, Teardown- und Free-Pfade beschränkt. Vom Modell empfohlene manuelle Folgeuntersuchungen sind auf maximal zwei beschränkt. Diese Einschränkung soll nicht die Explorationsfähigkeit verringern, sondern Schlussfolgerungen innerhalb eines verifizierbaren Rahmens halten.

E. Evidenz vor Zuversicht

Die Prompts verlangen, dass ein starkes Finding mindestens die folgenden Punkte erklärt:

  1. einen angreifer-erreichbaren Entrypoint,
  2. ein angreifer-kontrolliertes Feld oder einen Lifetime-Übergang,
  3. eine gebrochene Objekt-, Längen- oder Zustandsinvariante,
  4. eine konkrete Auswirkung wie Korruption, Leak oder Privilegieneskalation,
  5. warum bestehende Checks den Angriff nicht verhindern.

Fehlt die Begründung, gibt das Modell statt einer starken Schwachstellenbehauptung ein einzelnes nächstes Ziel zur Überprüfung zurück. Dies ist ein Prompt-Level-Evidenzvertrag; der aktuelle Parser validiert die Vollständigkeit jeder Evidenz nicht automatisch. Da die Ingestion Urteile und nächste Ziele normalisiert, liegt die endgültige Evidenzvalidierung in der Verantwortung des Menschen.

F. Design-Abstammung

Der anfängliche Untersuchungsfluss geht auf die dateibasierte Analyse, die begrenzte Kontexterweiterung und die strukturierten Ergebnisse von Protect AIs vulnhuntr zurück [1]. Dieses Projekt überträgt diese Ideen nicht direkt auf die Analyse von Python-Anwendungen, sondern gestaltet sie neu rund um die userspace-erreichbare Kernel-Oberfläche, Kernel-Objekt-Lifetimes, Teardown-Pfade und syzbot-Überlappungen. Insbesondere die Trennung von Prioritätssignalen und Schwachstellenbeweis sowie die Prüfung der Erreichbarkeit vor der Bug-Klasse sind zentrale Designentscheidungen des Kernel-Harness.

III. Systemarchitektur

External Signal architecture for Kernel Codex Harness

Abb. 1. Die External-Signal-Schicht wandelt vor der Modellinferenz berechnete Beobachtungen in gerankte Überprüfungseinheiten um. Sie verteilt Aufmerksamkeit, begründet aber keinen Schwachstellenbeweis.

TABELLE I — VERANTWORTLICHKEITEN DER HAUPTMODULE

ModulVerantwortung
targeting.pyKernel-Dateisuche und Bewertung von Pfad-, Muster- und syzbot-Signalen
models.pyDatenmodelle für Candidate, Signal und syzbot-abgeleitetes ExternalSignal
bundle.pyManifest-, Sitzungsindex- und Prompt/Snippet-Bündelerstellung
prompting.pyKernel-Audit-Prompts mit Fokus auf Erreichbarkeit und Invarianten
session.pyZustandsspeicherung für ausstehende Überprüfungen, Verlauf und Folge-Tiefe
ingest.pyNormalisierung strenger Urteile und nächster Ziele
autopilot.pyZeitbudgetiertes codex exec, Protokollierung, Archivierung und Finding-Verwaltung
syzbot.pyAbruf öffentlicher syzbot-Seiten und Erstellung lokaler JSON-Caches
cli.pyVerbindung von Befehlen wie scan, inspect, codex, loop, autopilot

IV. Methodik

A. Kandidatenfindung und Bewertung

Der Scanner durchläuft .c- und .h-Dateien unter den Include-Verzeichnissen des Profils. Die Prioritätspunktzahl einer Datei f setzt sich konzeptionell wie folgt zusammen:

root@kitploit:~
Score(f) = Σ path_weight(f)
         + Σ line_signal_weight(f)
         + Σ syzbot_overlap_weight(f)

Diese Punktzahl ist kein Wahrscheinlichkeits- oder Exploitability-Maß. Jeder Eintrag liefert nur eine relative Reihenfolge, welche Dateien das Modell zuerst prüfen soll. Die aktuelle Implementierung summiert alle Line-Level-Treffer und begrenzt nur die im Prompt angezeigten Top-Signale. Die Neuberechnung desselben Ergebnisses setzt denselben Quellbaum, dasselbe Profil und denselben gecachten syzbot-JSON voraus. Das syzbot-Gewicht wird nachträglich auf Dateien angewendet, die zuerst durch Pfad- und Zeilenheuristiken zu Kandidaten wurden; syzbot-Treffer allein erzeugen keine neuen Kandidatendateien.

Die wichtigsten statischen Signale sind:

  • ioctl, Compat-Handler, Dateioperations-Hooks
  • copy_from_user, copy_to_user, __user
  • kmalloc, kzalloc, kvmalloc, Cache-Allokation und Free-Pfade
  • Refcount-, Atomic- und kref-Operationen
  • Größen-/Längenberechnungen und memcpy-Familien
  • Lock-, RCU- und asynchrone Lifetime-Muster
  • BPF-, skb-, XDP- und Netlink-Grenzen
  • Capability- und Namespace-Checks

B. Profilgesteuerter Umfang

Die eingebauten Profile sind default, net, fs, io_uring, bpf und drivers. Profile definieren Include-Pfade, Muster, Gewichte und die Anzahl der pro Datei zu erhaltenden Signale. Statt einer einzigen Scoring-Richtlinie für den gesamten Kernel spiegeln sie die Angriffsfläche und Lifetime-Eigenschaften der jeweiligen Subsysteme wider.

C. Crash-Intelligence

syzbot-fetch extrahiert Titel, Subsystem, Bug-Typ und Datei:Zeilen-Informationen aus den öffentlichen syzbot-Bug-Seiten des syzkaller-Projekts [2] und speichert sie in einem JSON-Cache. Exakte Dateiüberlappung ist ein starkes External Signal, Subsystemüberlappung ein schwaches. Da das Live-Dashboard variieren kann, ist die Reproduktionseinheit das zum Abrufzeitpunkt gespeicherte JSON. Crash-Informationen sind nur ein Ausgangspunkt für Variantenjagd und werden nicht als Beweis für neue Schwachstellen behandelt.

D. Sitzungs- und Überprüfungsvertrag

scan erzeugt ein geranktes Kandidatenmanifest und ein Top-Prompt-Bündel. Jeder Prompt enthält Zielpfad, Score-Begründung, Zeilensignale, syzbot-Kontext und das Audit-Verfahren.

Modellantworten werden in eines der folgenden Urteile normalisiert:

  • cve_candidate
  • plausible_security_bug
  • latent_bug
  • not_cve_candidate
  • needs_more_context

Die Antwort enthält ein einziges Single best next target und eine kurze Zusammenfassung. Alte Antworten ohne ausstehendes Ziel werden nicht mit neuen Zielen verknüpft, sondern separat archiviert.

V. Implementierung und Verwendung

A. Anforderungen

  • Python 3.11 oder höher
  • Codex CLI [3] und Authentifizierung bei Verwendung des Autopiloten
  • Netzwerkverbindung für den Abruf des entfernten syzbot-Dashboards

B. Installation

root@kitploit:~
git clone https://github.com/foxirain/linux-kernel-codex-harness.git
cd linux-kernel-codex-harness

python3 -m venv .venv
source .venv/bin/activate
python -m pip install .

Die eingebauten Profil-JSONs sind im Wheel enthalten. Externe JSON-Regeln können mit --config /path/to/profile.json übergeben werden.

C. Minimaler Workflow

root@kitploit:~
# 1. Erstellen einer gerankten Sitzung.
kernel-harness scan /path/to/linux \
  --profile net \
  --limit 80 \
  --top 20 \
  --out artifacts

# 2. Hochpriorisierte Kandidaten prüfen.
kernel-harness inspect artifacts/session-YYYYMMDDTHHMMSSZ --top 10

# 3. Einen fokussierten Prompt rendern.
kernel-harness codex artifacts/session-YYYYMMDDTHHMMSSZ \
  --rank 1 \
  --include-snippet

--limit ist die Anzahl der im Manifest zu behaltenden Kandidaten, --top die Anzahl der anfänglich vorab erstellten Prompt-Bündel. Bündel für spätere Ränge können bei Bedarf ebenfalls erstellt werden.

D. Zeitbudgetierter Autopilot

root@kitploit:~
kernel-harness autopilot artifacts/session-YYYYMMDDTHHMMSSZ \
  --duration 30m \
  --per-run-timeout 10m \
  --include-snippet

Die Standard-Sandbox ist read-only. --sandbox workspace-write sollte nur angegeben werden, wenn Dateiänderungen während der Analyse unbedingt erforderlich sind.

E. Optionaler syzbot-Feed

root@kitploit:~
kernel-harness syzbot-fetch https://syzkaller.appspot.com/upstream \
  --out artifacts/syzbot/upstream.json \
  --limit 50

kernel-harness scan /path/to/linux \
  --profile fs \
  --syzbot-json artifacts/syzbot/upstream.json \
  --out artifacts

F. Sitzungsartefakte

root@kitploit:~
artifacts/session-<timestamp>/
├── SESSION.md
├── targets.json
├── finding_template.json
├── review_state.json
├── codex_response.txt              # vorhanden, während eine Antwort aussteht
├── bundles/
│   ├── <rank>-<target>.md
│   └── <rank>-<target>.snippet.txt
├── responses/
└── autopilot/
    ├── AUTOPILOT_STATUS.txt
    ├── AUTOPILOT_PROGRESS.txt
    ├── AUTOPILOT_FINDINGS.txt
    ├── prompts/
    ├── exec/
    └── findings/

VI. Betriebsergebnis und Verifikation

Diese Version blieb kein Konzeptnachweis, sondern wurde in einer realen Linux-Kernel-Schwachstellenuntersuchung eingesetzt.

TABELLE II — VERÖFFENTLICHTES SCHWACHSTELLENERGEBNIS

Öffentliches ErgebnisBetroffener BereichSchweregrad / CVSSSchwachstelleUntersuchungsmodell
CVE-2026-31720USB-Gadget-Audio · drivers/usb/gadget/function/f_uac1_legacy.cHigh 7.8 · CVSS 3.1 (NVD)Host-kontrollierte Anforderungslänge konnte ein Vier-Byte-Stack-Objekt überlaufen lassenFinding während einer v1-unterstützten Untersuchung aufgetaucht; Validierung und Offenlegung blieben menschengeführt
CVSS-Quelle (geprüft am 09.08.2026)
  • CVE-2026-31720: NVD CVSS 3.1 · 7.8 High · CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
  • Offiziell veröffentlichte Punktzahl und Vektor übernommen, nicht neu berechnet.

Die Verifikation ist kein Benchmark für Erkennungsgenauigkeit, sondern konzentriert sich auf Implementierungsregressionen und Bereitstellbarkeit.

TABELLE III — UMFANG DER TECHNISCHEN VERIFIKATION

VerifikationspunktErwartete Eigenschaft
Allokator-Regressionkmalloc und kvmalloc als Allokator-Signale erkennen
ProfilressourcenLaden der 6 eingebauten Profile aus dem Quell-Checkout, Smoke-Test des default-Profils aus dem installierten Wheel
Urteilsvertragnot_cve_candidate nicht als positives Finding fehlinterpretieren
Folge-RichtlinieZwei manuelle Folgeuntersuchungen erlauben, dritte Anfrage blockieren
Behandlung veralteter AntwortenAntworten ohne ausstehendes Ziel archivieren und nicht wiederverwenden
Sicherer StandardAutopilot-Sandbox-Standardwert ist read-only
CI-MatrixRegressionstestsuite unter Python 3.11 und 3.12 ausführen
root@kitploit:~
python -m unittest discover -s tests -v

GitHub Actions führt Unit-Regressionstests aus, installiert dann das Wheel in einer neuen Umgebung und führt einen Smoke-Test des default-Profil-Scans durch. Das obige öffentliche Beispiel ist ein operatives Ergebnis aus realer Untersuchung, aber kein Benchmark für Precision, Recall oder CVE-Entdeckungsrate, gemessen an einem repräsentativen Linux-Tree-Korpus.

VII. Sicherheitshinweise

  • Es wird empfohlen, die Standard-read-only-Sandbox beizubehalten.
  • --dangerously-bypass-approvals-and-sandbox nicht ohne externe Sandbox verwenden.
  • Auch nicht vertrauenswürdige Quellkommentare und Bezeichner können Modelleingaben sein; Prompt-Injection muss berücksichtigt werden.
  • Vom Modell erzeugte Findings müssen vor Veröffentlichung oder Meldung von Menschen auf Erreichbarkeit und Auswirkung revalidiert werden.
  • syzbot-Crashes und hohe heuristische Punktzahlen dürfen nicht als Schwachstellenbeweis angeführt werden.

VIII. Einschränkungen und Gültigkeitsbedrohungen

  1. Lexikalische Analyse. Es wird kein echter C-AST, Call-Graph oder interprozeduraler Datenfluss erstellt.
  2. Score-Verzerrung. Kommentare, Makros, wiederholte Token und große Dateien können die Punktzahl übermäßig beeinflussen.
  3. Erreichbarkeitslücke. Kernel-Konfiguration, Privilegien, Namespaces und Geräteverfügbarkeit werden nicht automatisch modelliert.
  4. Fragilität externer Daten. Die syzbot-Integration ist von Änderungen der öffentlichen HTML-Struktur betroffen.
  5. Modellabhängigkeit. Die Ergebnisqualität hängt vom verwendeten Modell, der Prompt-Interpretation und dem Repository-Kontext ab.
  6. Evaluationsumfang. Die aktuellen Tests validieren Software-Regressionen. Das veröffentlichte CVE-Beispiel ist ein reales Nutzungsergebnis, ersetzt aber keine statistische Bewertung der Sicherheitserkennungsleistung.

IX. Retrospektive

Von der in der Git-Historie dokumentierten ersten Version an war das Ziel weniger „das LLM Schwachstellen selbst finden zu lassen“ als vielmehr „zu kontrollieren, welcher Code zuerst geprüft und welche Evidenz verlangt wird“. Die v1-unterstützte Untersuchung, die CVE-2026-31720 fand, lieferte ein Beispiel dafür, dass enge Untersuchungseinheiten und ein Evidenzvertrag in der realen Forschung anwendbar sind. v2 erweitert diesen Workflow zu einem Provenance-bewussten Triage, der Repository-Zustand und bekannte Referenzen gemeinsam bewahrt. Würde ich es heute neu implementieren, hätte Folgendes Priorität:

  1. tree-sitter- oder Clang-basierter Symbol-/Call-Graph,
  2. Score-Normalisierung unter Berücksichtigung von Dateigröße und wiederholten Treffern,
  3. Entfernung von CLI-/Autopilot-Redundanz durch Trennung der review- und runner-Ebenen,
  4. versionierte Manifeste und atomare Zustandsschreibvorgänge,
  5. JSON-Schema-basierte Modellantworten und strukturierte Evidenz,
  6. automatische Verknüpfung von syzbot-Crashes, Fix-Commits und nahen Varianten.

Dennoch bleibt das zentrale Prinzip, das ich beibehalten möchte, External Signal. Dem LLM nicht die gesamte Codebasis vage durchsuchen lassen, sondern durch Signale außerhalb des Modells eingegrenzte Untersuchungseinheiten iterativ mit Fokus auf Erreichbarkeit und Invarianten bearbeiten.

X. Fazit

Kernel Codex Harness ersetzt nicht die Erkennung von Linux-Kernel-Schwachstellen. Stattdessen wandelt es External Signal in erklärbare Rankings um und beschränkt die LLM-Prüfung auf kurze, zustandsbehaftete Untersuchungsprozesse. Diese Struktur wurde in einer realen Untersuchung zur Entdeckung von CVE-2026-31720 verwendet. Das Kernresultat des Projekts liegt nicht in der Behauptung eines neuen Analysealgorithmus, sondern darin, LLM-Sicherheitsprüfung als External-Signal-Aufmerksamkeitsallokation, Evidenzvertrag und reproduzierbare Orchestrierung zu definieren und in einem realen Forschungs-Workflow anzuwenden.

Anhang A. Repository-Struktur

root@kitploit:~
.
├── .github/workflows/ci.yml
├── docs/
│   ├── assets/kernel-harness-architecture.svg
│   ├── AUTOPILOT.md
│   ├── CODEX_CLI.md
│   ├── CODEX_WORKFLOW.md
│   └── SYZBOT.md
├── kernel_harness/
│   ├── resources/
│   │   ├── linux-kernel-default.json
│   │   └── profiles/
│   ├── autopilot.py
│   ├── bundle.py
│   ├── cli.py
│   ├── ingest.py
│   ├── models.py
│   ├── prompting.py
│   ├── session.py
│   ├── syzbot.py
│   └── targeting.py
├── tests/test_regressions.py
├── README.md
└── pyproject.toml

Detaillierte Betriebsabläufe finden Sie in docs/.

Referenzen

[1] Protect AI, „vulnhuntr,“ GitHub-Repository. https://github.com/protectai/vulnhuntr

[2] Google, „syzkaller and syzbot,“ GitHub-Repository. https://github.com/google/syzkaller

[3] OpenAI, „Codex CLI.“ https://developers.openai.com/codex/cli/

Lizenz

Lizenziert unter der Apache License 2.0.

Tool herunterladen