Zurück zu den Updates
New releaseSep 8, 2026

raptor v3.1.0

Autonomes Sicherheitsforschungs-Framework, das statische Analyse, Binäranalyse, Fuzzing, LLM-gestützte Schwachstellenvalidierung, Exploit-Generierung und Patch-Erstellung für offensive und defensive Operationen integriert.

Teilen
╔═══════════════════════════════════════════════════════════════════════════╗
║                                                                           ║
║             ██████╗  █████╗ ██████╗ ████████╗ ██████╗ ██████╗             ║
║             ██╔══██╗██╔══██╗██╔══██╗╚══██╔══╝██╔═══██╗██╔══██╗            ║
║             ██████╔╝███████║██████╔╝   ██║   ██║   ██║██████╔╝            ║
║             ██╔══██╗██╔══██║██╔═══╝    ██║   ██║   ██║██╔══██╗            ║
║             ██║  ██║██║  ██║██║        ██║   ╚██████╔╝██║  ██║            ║
║             ╚═╝  ╚═╝╚═╝  ╚═╝╚═╝        ╚═╝    ╚═════╝ ╚═╝  ╚═╝            ║
║                                                                           ║
║             Autonomous Offensive/Defensive Research Framework             ║
║             Based on Claude Code (v3.1.0)                                 ║
║                                                                           ║
║             Gadi Evron, Daniel Cuthbert, Thomas Dullien (Halvar Flake)    ║
║             Michael Bargury, John Cartwright                              ║
║                                                                           ║
╚═══════════════════════════════════════════════════════════════════════════╝

⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣤⣤⣀⣀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣾⣿⣿⠿⠿⠟
⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣀⣀⣀⣀⣀⣤⣴⣶⣶⣶⣤⣿⡿⠁⠀⠀⠀
⣀⠤⠴⠒⠒⠛⠛⠛⠛⠛⠿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠁⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⣿⣿⣿⡟⠻⢿⡀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⢿⣿⠟⠀⠸⣊⡽⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡇⣿⡁⠀⠀⠀⠉⠁⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⠿⣿⣧⠀ Get them bugs.....⠀⠀⠀⠀⠀

Autoren: Gadi Evron, Daniel Cuthbert, Thomas Dullien (Halvar Flake), Michael Bargury, John Cartwright (@gadievron, @danielcuthbert, @thomasdullien, @mbrg, @grokjc)

Lizenz: MIT, siehe LICENSE. Beachte, dass CodeQL eine eigene Lizenz hat und keine kommerzielle Nutzung erlaubt.

Repository: https://github.com/gadievron/raptor


Was ist RAPTOR?

RAPTOR ist ein autonomes Sicherheitsforschungs-Framework, das auf Claude Code aufbaut (aber nicht daran gebunden ist – du kannst auch deine eigene Analyse-Ebene einbinden). Es verknüpft statische Analyse, Binäranalyse, LLM-gestützte Schwachstellenvalidierung, Exploit-Erstellung und Patch-Erstellung zu einem einzigen Workflow, den du gegen eine Codebasis oder Binärdatei ausführen kannst.

Es ist keine ausgereifte Software. Es wurde in der Freizeit gebaut, mit Enthusiasmus und Klebeband zusammengehalten, und es funktioniert gut genug, dass wir nicht aufhören können, es zu nutzen. Wenn du es verbessern möchtest, erstelle einen PR.

RAPTOR steht für Recursive Autonomous Penetration Testing and Observation Robot. Wir wollten es wirklich RAPTOR nennen.

Wie es aufgebaut ist

RAPTOR ist größtenteils KI-generierter Code. Die Menschen geben die Richtung vor, prüfen die Ausgabe und treffen Designentscheidungen; die KI schreibt die Implementierung. Mechanische Verifikation (Tests, statische Analyse, Korpus-Kalibrierung) hält die Qualitätslatte dort, wo sie sein muss – unabhängig davon, wer – oder was – den Code geschrieben hat.


Voraussetzungen

  • Claude Code mit einem aktiven Abonnement (Max, Pro, Team oder Enterprise) oder einem Anthropic-API-Schlüssel. Dies ist die Orchestrierungsebene – RAPTOR läuft innerhalb einer Claude-Code-Sitzung.
  • Python 3.10+ und Node.js 18+.
  • Semgrep (pip install semgrep) für statische Analyse. CodeQL ist optional, aber empfohlen.

Für die Analyse-Dispatch-Ebene (das LLM, das einzelne Befunde analysiert) übernimmt Claude Code standardmäßig alles selbst – keine zusätzlichen API-Schlüssel nötig. Wenn du eine Multi-Modell-Analyse wünschst (z. B. Claude + GPT + Gemini), benötigst du API-Schlüssel für jeden Anbieter. Siehe Verwendung eines anderen LLM unten.

Schnellstart

Option 1: Manuelle Installation```bash

Clone the repo

git clone https://github.com/gadievron/raptor.git cd raptor

Install Python dependencies

pip install -r requirements.txt

Install Claude Code (if you don't already have it)

npm install -g @anthropic-ai/claude-code

Install Semgrep (required for scanning)

pip install semgrep

Add the launcher to your PATH -- put this in your shell profile to make it

permanent. Append rather than prepend, so system directories stay ahead of

the repo. (Alternatively, symlink bin/raptor into a directory already on PATH.)

export PATH="$PATH:$PWD/bin"

Launch RAPTOR

raptor

Der `raptor`-Launcher ist die empfohlene Methode, um eine Sitzung zu starten, und er funktioniert von jedem Verzeichnis aus – er löst die RAPTOR-Installation auf, merkt sich das Verzeichnis, aus dem du gestartet hast (sodass Befehle wie `/scan` standardmäßig darauf zugreifen), führt die Pre-Flight-Vertrauens- und Projektprüfungen durch, lädt das Plugin zur Abdeckungsverfolgung und bereinigt die Umgebung, bevor er an Claude Code übergibt. Er akzeptiert außerdem einen optionalen Zielpfad und Flags wie `--project`, `--continue` und `--model` – siehe `raptor --help`.

Das Ausführen von einfachem `claude` aus dem Repo-Verzeichnis heraus funktioniert ebenfalls – Claude Code übernimmt RAPTORs Konfiguration aus dem Checkout –, aber du überspringst alles, was der Launcher oben tut: keine Pre-Flight-Prüfungen, keine Abdeckungsverfolgung, und Befehle, die standardmäßig auf „das Verzeichnis, aus dem du dies ausgeführt hast“ zugreifen, können es nicht sehen.

**Wichtig:** RAPTOR lädt seine Konfiguration aus dem Repo-Verzeichnis. Wenn du `claude` aus einem anderen Verzeichnis ausführst, erhältst du einfaches Claude Code, nicht RAPTOR. Der `raptor`-Launcher vermeidet diesen Fehlermodus vollständig.

### Option 2: In einem Container ausführen (empfohlen)

Die Verwendung von Containern ist eine gängige Sicherheitspraxis, um Agenten den Zugriff auf Bereiche deines Dateisystems zu verwehren, auf die du keinen Zugriff wünschst, sowie den Schadensradius von bösartigem Code zu begrenzen, der möglicherweise ausgeführt wird (z. B. durch einen Supply-Chain-Angriff). Das Image ist groß (ca. 6 GB). Es basiert auf dem Microsoft Python 3.12-Devcontainer und fügt statische Analyse-, Fuzzing- und Browser-Automatisierungswerkzeuge hinzu.

Du kannst ein vorgefertigtes Image herunterladen:```bash
docker pull danielcuthbert/raptor:latest

oder baue es lokal mit dem enthaltenen Dockerfile:```bash docker build -f .devcontainer/Dockerfile -t raptor:latest .

Das Image erwartet, dass das RAPTOR-Framework (dieses Repository) beim Start in `/workspaces/raptor` eingebunden wird. Optional können Sie einen Zielordner für die lokale Analyse einbinden.

So starten Sie den Container:```bash
docker run -it \
  -v "$(pwd):/workspaces/raptor" \
  raptor:latest

Um auch einen Zielordner zu mounten:```bash docker run -it
-v "$(pwd):/workspaces/raptor"
-v "/path/to/target-folder:/workspaces/target"
raptor:latest

Füge `--privileged` hinzu, wenn du den deterministischen Debugger `rr` benötigst.

VS-Code-Devcontainer werden ebenfalls unterstützt. Um einen Zielordner einzubinden, füge ihn dem Abschnitt `mounts` in `.devcontainer/devcontainer.json` hinzu:```jsonc
"mounts": [
  // ...existing entries...
  "source=/path/to/target-folder,target=/workspaces/target,type=bind,consistency=cached"
]

Dann öffne das Repository in VS Code — es wird dich auffordern, es im Container neu zu öffnen:```bash cd /path/to/raptor code .

So oder so: Sobald du im Container bist, führe `raptor` aus, um loszulegen.

---

## Was dich beim ersten Start erwartet

Das Einfachste, was du tun kannst:```
/scan /path/to/code

Dies führt Semgrep (plus Coccinelle, wenn spatch installiert ist; füge --codeql für CodeQL hinzu) gegen das Ziel aus, dedupliziert die Ergebnisse und schreibt einen SARIF-Bericht. Keine LLM-Analyse, keine API-Schlüssel außer Claude Code. Dauert auf einem typischen Repository einige Minuten.

Um eine LLM-gestützte Validierung hinzuzufügen:``` /agentic /path/to/code

Dies führt die vollständige Pipeline aus: Scannen, Deduplizieren und anschließendes Senden jedes Befunds durch die Validierungsstufen (A-F). Bei einer mittelgroßen Codebasis mit etwa 50 Befunden ist mit 10-30 Minuten und 2-8 $ an LLM-Kosten für die Analyseebene zu rechnen (abhängig vom Modell). Das standardmäßige Kostenlimit beträgt 10 $ pro Lauf; anpassbar mit `--max-cost-usd`.

**Hinweis zu den Kosten:** Die Orchestrierungsebene von Claude Code nutzt dein Claude-Abonnement. Die Analyse-Dispatch-Ebene tätigt separate LLM-API-Aufrufe, die pro Token abgerechnet werden. Wenn du nur Claude Code als Analysemodell verwendest (die Standardeinstellung), entstehen keine zusätzlichen Kosten über dein Abonnement hinaus. Wenn du externe Modelle konfigurierst (OpenAI, Gemini usw.), werden diese API-Aufrufe von den jeweiligen Anbietern abgerechnet.

---

## Sicherheitsmodell

RAPTOR führt LLM-generierten Code aus und analysiert nicht vertrauenswürdige Repositories. Subprozesse, die nicht vertrauenswürdige Inhalte verarbeiten, werden mithilfe von Linux-Namespaces, Landlock und seccomp in einer Sandbox ausgeführt. Die Sandbox blockiert den Netzwerkzugriff, schränkt die Sichtbarkeit des Dateisystems ein und begrenzt den Ressourcenverbrauch. Das vollständige Bedrohungsmodell und die Konfiguration findest du in `docs/sandbox.md`.

Umgebungsvariablen, die Code in die Launcher-Kette einschleusen könnten, werden beim Start entfernt (`core/security/_dangerous_env_strip.sh`). Dateipfade aus gescannten Repositories werden niemals in Shell-Strings interpoliert – alle Subprozessaufrufe verwenden listenbasierte Argumente.

---

## Was RAPTOR kann

| Befehl | Funktion | Status |
|---------|-------------|--------|
| `/agentic` | Vollständiger autonomer Workflow: Scannen, Validieren, Ausnutzen, Patchen | Stabil |
| `/scan` | Statische Analyse mit Semgrep und CodeQL | Stabil |
| `/understand` | Angriffsfläche kartieren, Datenflüsse verfolgen, Schwachstellenvarianten aufspüren | Stabil |
| `/binary` | Black-Box-Untersuchung von Binärdateien, Laufzeitnachweise, Graph-Abfragen und Übergabe | Beta |
| `/ghidra` | Ghidra-RE-Brücke: `.gpr`-Projekte anhängen/importieren, versionsübergreifender Diff, Export von Befunden | Beta |
| `/audit` | Hypothesengetriebene, toolgestützte systematische Code-Überprüfung | Beta |
| `/review` | Audit-Status abfragen: Befunde, Lücken, Abdeckung, Operator-Notizen | Stabil |
| `/annotate` | Freiform-Prosa-Anmerkungen pro Funktion anhängen (Operator-Überprüfungsnotizen) | Stabil |
| `/validate` | Mehrstufige Ausnutzbarkeits-Validierungspipeline (Stufen 0-F) | Stabil |
| `/diagram` | Mermaid-Visualisierungen aus `/understand`- und `/validate`-JSON-Ausgaben | Beta |
| `/codeql` | CodeQL-only Tiefenanalyse mit SMT-Dataflow-Vorprüfung | Stabil |
| `/analyze` | Vorhandene SARIF-Befunde mit LLM analysieren, ohne erneut zu scannen | Stabil |
| `/sca` | Software-Composition-Analyse: Abhängigkeiten, Advisories, Supply-Chain-Signale, SBOMs und Fixes | Beta |
| `/cve-diff` | Fix-Commit für eine CVE über OSV, NVD, GitHub und GitLab entdecken und diffen | Beta |
| `/cve-env` | Docker-Umgebung erstellen und verifizieren, die die betroffene Anwendung einer CVE in ihrer Vor-Patch-Version ausführt | Experimentell |
| `/exploit` | Proof-of-Concept-Exploit-Code generieren | Beta |
| `/patch` | Sichere Patches für bestätigte Schwachstellen generieren | Beta |
| `/fuzz` | Binary-Fuzzing mit AFL++ und Absturzanalyse | Stabil |
| `/crash-analysis` | Autonome Root-Cause-Analyse für C/C++-Abstürze | Stabil |
| `/oss-forensics` | Evidenzgestützte forensische Untersuchung für GitHub-Repositories | Stabil |
| `/project` | Benannte Arbeitsbereiche zur Organisation von Läufen und zur Verfolgung von Befunden über die Zeit | Stabil |
| `/describe` | Ein Ziel beschreiben: Sprachmix, Build-System, Tool-Lücken, Kostenschätzung (nur lesend) | Stabil |
| `/threat-model` | Projektbezogene Bedrohungsmodelle erstellen, einsehen und pflegen | Stabil |
| `/sage` | Persistente Speicherebene (speichern, abrufen, verknüpfen, untermauern) | Stabil |
| `/ask` | Freiform-Prompt an jedes konfigurierte LLM-Modell senden | Stabil |
| `/scorecard` | Zuverlässigkeit pro Modell über Entscheidungsklassen hinweg prüfen | Stabil |
| `/frida` | Dynamische Instrumentierung über Frida | Alpha |
| `/web` | Webanwendungs-Scanning: Crawlen, ffuf/nuclei-Integration, oracle-verifizierte Injection, blinde SSRF-Callbacks | Beta |

---

## So funktioniert die Pipeline

Beginne damit, ein Projekt zu erstellen, damit alle deine Läufe an einem Ort landen:```
/project create myapp --target /path/to/code   # create a project first
/project use myapp                             # set it as active
/understand --map                              # map the attack surface
/agentic --threat-model --validate             # map, model, scan, validate
/project findings                              # review everything in one place

Für ein kompiliertes Artefakt ist der entsprechende Ausgangspunkt:```text /binary investigate /path/to/binary # build the evidence-backed binary map /binary graph --edges --json # query the persisted graph /binary trace-parser # collect runtime parser evidence /binary harness # draft a harness only when the boundary is explicit

`/understand` erstellt eine Kontextkarte der Einstiegspunkte, Vertrauensgrenzen und Senken, bevor eine Zeile gescannt wird. `/agentic` führt dann Semgrep und CodeQL aus, dedupliziert Befunde und leitet jeden zur Validierung anhand der Exploitation-Validator-Methodik weiter:

Mit `--threat-model` führt RAPTOR zuerst die Karte aus, erstellt `threat-model.json` und `THREAT_MODEL.md`, falls das Projekt diese noch nicht besitzt, und speist dann eine kompakte Version in `/understand`, die autonome Analyse und `/validate` ein. Vorhandene Projekt-Threat-Modelle bleiben erhalten, es sei denn, Sie übergeben `--threat-model-refresh`; veraltete Fallback-Karten werden abgelehnt, es sei denn, Sie übergeben explizit `--threat-model-use-stale`. Es wandelt außerdem kartierte ungeprüfte Flows in Kandidaten-SARIF um, sodass Scanner-Lücken den Lauf nicht beenden. Es handelt sich um vom Operator verwalteten Kontext, nicht um magischen Beweis: Befunde benötigen weiterhin Code-Evidenz oder oracle-gestützte Bestätigung. Siehe `docs/threat-model.md`.

- Stufe A: Ist das Muster tatsächlich eine Schwachstelle, oder ist das Tool nur Musterabgleich-Rauschen?
- Stufe B: Was braucht ein Angreifer, um es zu erreichen, und was steht im Weg?
- Stufe C: Existiert der Codepfad tatsächlich? Kann er von außen erreicht werden?
- Stufe D: Endgültige Entscheidung – ist dies Testcode, erfordert es unrealistische Vorbedingungen, weicht das Modell aus?
- Stufe E: Machbarkeit eines Binär-Exploits (wenn ein kompiliertes Artefakt verfügbar ist)
- Stufe F: Selbstprüfung – hat eine frühere Stufe ausgewichen oder sich widersprochen?

Befunde, die die Validierung bestehen, erhalten generierte Exploit-PoCs und Patches. Am Ende läuft eine übergreifende Befundanalyse, um gemeinsame Grundursachen und Angriffsketten zu finden.

`/validate` führt dieselbe Pipeline als eigenständigen Schritt aus, wenn Sie bereits Befunde aus einem früheren Scan haben.

Für ein kompiliertes Artefakt führt `/binary <path>` nun eine evidenzorientierte
Untersuchung durch, anstatt dem Operator einen Haufen roher Reverse-Engineering-Artefakte
vorzulegen. Darunter baut es weiterhin das SHA-256-gebundene Manifest,
Evidenz-Ledger, die Kontextkarte, Checkliste und SQLite-Graph aus Dateimetadaten,
Imports und radare2-Xrefs auf. Mach-O-Apps erhalten außerdem eine Slice-Inventur, Bundle-
Metadaten und Objective-C-/Swift-Klassen-Selektoren; hochwertiger Pseudocode wird
persistiert, statt innerhalb des Laufs zu verschwinden. PE-DLL-Exports, Windows-
Treiber-Dispatcher und Linux-Kernel-Modul-ioctl-Handler werden ebenfalls als eigene
Ingress-Kandidaten behandelt, wobei die PE-Architektur aus dem COFF-Header gelesen
statt geraten wird. Die Untersuchungsebene fragt dann diesen Graphen ab,
reiht externen Ingress vor generischen Senken-Hinweisen ein, entdeckt deklarierte
Hilfs-/Begleit-Binaries und schreibt einen kompakten Bericht, aufgeteilt in Fakten,
strukturelle Schlussfolgerungen und unbewiesene Hypothesen. Frida-Beobachtungen, Fuzz-Crash-
Zeugen, explizite Z3-Prüfungen und Binärdiffs können später stärkere Evidenz
hinzufügen. RAPTOR behält außerdem den internen Call-Graph bei, der benötigt wird, um
begrenzte Ingress-zu-Parser-Kandidaten wiederherzustellen, sodass ein App-Callback auf die
interne Funktion eingegrenzt werden kann, die tatsächlich `XML_Parse`, `d2i_X509`,
`jpeg_read_header` oder eine andere echte Parser-Oberfläche aufruft, ohne vorzutäuschen, dass dies
Taint-Beweis sei. `/binary trace-parser <run-dir>` ist das explizite dynamische Folgewerkzeug:
Es führt die schmale Frida-Parser-Trace aus und aktualisiert dann dieselbe Kontextkarte,
Übergabe, Graph und Untersuchungsbericht an Ort und Stelle. `/binary investigate --active` kartiert zuerst und startet nur dann eine echte
Fuzz-Kampagne, wenn eine konkrete Harness-Grenze existiert; App-, DLL- und Treiber-
Ziele erhalten stattdessen einen Harness- oder Snapshot-Schritt. `/binary harness` schreibt eine
evidenzgestützte Harness-Spezifikation für den gewählten Ingress und gibt nur dann Kandidaten-
Quellcode aus, wenn der ABI- oder IOCTL-Vertrag explizit ist. Es täuscht sich nicht von „`memcpy` existiert“ zu „dies ist
exploitbar“ durch: Imports, Selektoren und Call-Kanten bleiben Kandidaten, bis
etwas Mechanisches mehr beweist. Siehe `docs/binary-analysis.md`.

---

## Software-Zusammensetzungsanalyse

`/sca` analysiert die Abhängigkeits- und Lieferketten-Seite eines Projekts. Es ist nicht nur ein CVE-Lookup für Requirements-Dateien: RAPTOR entdeckt Manifeste, Lockfiles, Inline-Installationsbefehle, Workflow-Abhängigkeiten und Paketquellen von Containern/Base-Images und normalisiert sie dann in eine einzige Abhängigkeitsansicht.

Der Scan reichert Abhängigkeiten mit OSV-Advisories, CISA KEV, EPSS, CISA Vulnrichment/SSVC, Erreichbarkeit, Exploit-Evidenz-Signalen, Hygiene-Checks, Lieferketten-Heuristiken, Lizenzrichtlinien-Befunden und optionaler LLM-Prüfung/Triage an. Es gibt RAPTOR-native Befunde sowie SBOM- und CI-freundliche Ausgaben aus:

- `findings.json` – kanonische RAPTOR-Befunde
- `report.md` – menschenlesbare Zusammenfassung
- `sbom.cdx.json` – CycloneDX-SBOM mit VEX-Daten
- `findings.sarif` – GitHub/GitLab-Code-Scanning-Ausgabe

Häufige Befehle:```bash
python3 raptor.py sca --repo /path/to/project
python3 raptor.py sca --repo /path/to/project --no-llm
python3 raptor.py sca --repo /path/to/project --fail-on-severity high --fail-on-kev
python3 raptor.py sca --repo /path/to/project fix
python3 raptor.py sca check PyPI django 4.2.10

Nützliche Unterbefehle sind fix, check, upgrade, diff, verify, health, render, suppress und clean-cache. Siehe docs/sca.md für die vollständige Referenz.


Z3-SMT-Integration

RAPTOR verfügt über eine zweischichtige Z3-Integration (pip install z3-solver). Sie ist optional. Alles funktioniert auch ohne sie, aber die Ergebnisse sind mit ihr besser.

Dataflow-Vorprüfung (CodeQL)

Wenn CodeQL ein Pfadergebnis erzeugt, werden die Pfadbeschränkungen vor jedem LLM-Aufruf auf Erfüllbarkeit geprüft. Pfade, die nachweislich unerreichbar sind, werden sofort verworfen. Für Pfade, die erreichbar sind, erzeugt Z3 konkrete Kandidateneingaben, die in den Analyse-Prompt einfließen, sodass das LLM etwas Konkretes zum Nachdenken hat, statt abstrakter Muster.

One-Gadget-Einschränkungsanalyse (Binär-Machbarkeit)

Während der Machbarkeitsbewertung von Binär-Exploits prüft Z3, ob die Register- und Speicherbeschränkungen eines One-Gadgets gegen den konkreten Crash-Zustand erfüllbar sind. Gadgets werden nach tatsächlicher Erreichbarkeit statt nach Heuristiken eingestuft, sodass du Zeit in Gadgets investierst, die tatsächlich funktionieren können.

Z3 ist im Devcontainer vorinstalliert. Für manuelle Installationen: pip install z3-solver.


Offline und in luftabgeschotteten Pipelines ausführen

RAPTORs benutzerdefinierte Regeln unter engine/semgrep/rules/ sind vollständig lokal und laufen ohne Netzwerkzugriff.

Für Registry-Pakete (p/security-audit, p/owasp-top-ten usw.) wird das Cache-Verzeichnis leer ausgeliefert. Ein Cache-Tool (engine/semgrep/tools/cache-packs.py) übernimmt die Befüllung:```bash

On a connected machine — update the local cache directly:

python3 engine/semgrep/tools/cache-packs.py update

Or fetch into a zip bundle for airgap transfer:

python3 engine/semgrep/tools/cache-packs.py fetch

→ produces semgrep-cache-YYYY-MM-DD.zip

On the airgapped machine — import the bundle:

python3 engine/semgrep/tools/cache-packs.py import semgrep-cache-2026-07-16.zip

Check what's cached:

python3 engine/semgrep/tools/cache-packs.py list

Sobald der Cache befüllt ist, löst der Scanner Paket-IDs in lokale Dateien auf und es findet kein Netzwerkaufruf statt. Ohne den Cache versucht RAPTOR, Registry-Pakete zur Scan-Zeit von semgrep.dev abzurufen; wenn offline, verwirft es ungecachte Pakete elegant und läuft nur mit benutzerdefinierten Regeln.

CodeQL benötigt Netzwerkzugriff nur während der anfänglichen Einrichtung, um die CLI und Query-Pakete herunterzuladen. Einmal installiert, läuft es offline.

---

## Benutzerdefinierte Regeln

RAPTOR enthält über 200 benutzerdefinierte statische Analyse-Regeln, die adversarially getestet wurden, um False Positives zu eliminieren:

- **Semgrep (145 Regeln)** — Taint-Tracking- und Pattern-Regeln für Python, Go, Java und JS/TS. Abdeckung von SQLi, XSS, SSRF, SSTI, Command Injection, Deserialisierung, XXE, LDAP/NoSQL-Injection, Path Traversal, Open Redirect, Log/Header-Injection, Eval-Injection, ReDoS, Prototype Pollution, JWT-Fehlkonfiguration, schwacher Kryptografie, unsicherem TLS und hartcodierten Secrets.
- **Coccinelle (63 Regeln)** — strukturelles Matching für C/C++. Speichersicherheit (Double Free, Use-after-Free, Free von Nicht-Basis-Pointern, Free von Stack-Arrays, mmap'd Speicher, Use-after-Close), Integer-Bugs (Overflow, Sign Extension, Double sizeof), Ressourcenlecks (popen/fclose-Mismatch, fdopendir Double Close), Pufferbehandlung (strncpy ohne NUL, copy_user-Größenmismatch, malloc/strlen Off-by-One), Signal-Handler-Sicherheit, API-Missbrauch (fcntl-Flag-Domain, SIGKILL/SIGSTOP, Double Byte-Swap, inet_ntoa statischer Puffer), Compiler Dead-Store-Eliminierung, Kernel-IS_ERR/PTR_ERR-Verwechslung, Format-String-Injection, TOCTOU-Races und mehr.
- **CodeQL (8 Queries)** — interprozedurales Taint-Tracking für C++ (Format-String-Injection, Integer-Truncation, Use-after-Move, Iterator-Invalidierung) und Java (XXE, unsichere Deserialisierung, Log-Injection, Spring SSRF).

Durchsuchen Sie die Regeln direkt: `engine/semgrep/rules/`, `engine/coccinelle/rules/`, `engine/codeql/queries/`. Diese ergänzen die Semgrep-Registry-Pakete, die RAPTOR einzieht (`p/security-audit`, `p/owasp-top-ten`, `p/secrets` immer; pro Policy-Gruppe zusätzliche Pakete wie `p/command-injection`, `p/jwt`, `p/xss`) — die Überschneidung ist minimal.

---

## Wie RAPTOR sich selbst prüft

RAPTOR nutzt einen guten Teil seiner eigenen Sicherheitswerkzeuge selbst (Dogfooding), aber es ist wichtig, ehrlich zu sein, was tatsächlich einen PR blockiert und was nur im Hintergrund läuft, um uns ehrlich zu halten. Einiges davon ist ein harter Gate, einiges ist ein geplanter Check, und einiges ist nur ein Benchmark, den wir behalten, um zu erkennen, wann wir Dinge verschlechtert haben. Die ausführlichere Aufschlüsselung, einschließlich der tatsächlichen Parameter und wie die Checks reproduziert werden, finden Sie in `docs/ci-controls.md`.

| Kontrolle | Was geprüft wird | Auslöser | Konfiguration / Nachweis |
|---|---|---|---|
| Ruff | Python-Korrektheits-Linting (`F401`, `F811`, `F821`, `F841`) | PR-Diff-Gate, plus wöchentlicher Full-Tree-Audit | `pyproject.toml`, `.github/workflows/lint.yml` |
| Pytest | Schnelle Unit-/Integrationsgrenzen, subsystem-spezifische Stufen (über Import-Graph-Dispatch), Prompt-Envelope-Audit | PRs, Pushes auf `main`, Merge-Queue, geplante vollständige Suite | `pytest.ini`, `.github/workflows/tests.yml`, `.github/workflows/nightly.yml` |
| CodeQL Advanced | Python-, C/C++- und GitHub-Actions-Code-Scanning mit Import-Graph-Scope-Verengung | PRs, Pushes auf `main`, Merge-Queue, wöchentlicher Zeitplan | `.github/workflows/codeql.yml`, `.github/codeql/codeql-config.yml` |
| Workflow-Härtung | SHA-gepinnte Drittanbieter-Actions, Least-Privilege-Berechtigungen, Command-Metadaten-Linting | Jede Workflow-Änderung und jeder Lint-Lauf | `.github/workflows/`, `.github/scripts/check_command_metadata.py` |
| Corpus-Label-Lint | Audit-Corpus-Label-Schema-Validierung und Upstream-Pin-Verifizierung | PRs (geänderte Labels), wöchentlicher Voll-Sweep | `.github/workflows/corpus-labels.yml` |
| RAPTOR SCA PR-Gate | Abhängigkeits- und Supply-Chain-Regressionen, die durch einen PR eingeführt werden | Manifest-/Lockfile-/Workflow-Änderungen | `.github/workflows/sca-pr-gate.yml` |
| RAPTOR SCA Self-Bump | Mechanische Abhängigkeits-Härtung und sichere Upgrade-Vorschläge | Wöchentlicher Zeitplan, manueller Lauf | `.github/workflows/sca-self-bump.yml` |
| SCA-Kompromiss-Corpus | Ob bekannte Abhängigkeits-Kompromittierungen weiterhin das erwartete Signal auslösen | Wöchentlicher Zeitplan, relevante PR-Änderungen | `test/data/sca-e2e/compromise-corpus/`, `.github/workflows/sca-compromise-check.yml` |
| Miswiring-Scan | Dead-Code-/Falsch-Aufruf-Erkennung, Env-Var-Dokumentationsdrift, Vokabellisten-Guardrails, Optional-Dep-Import-Lint | Täglicher Zeitplan | `.github/workflows/miswiring-scan.yml`, `.github/scripts/*_baseline.json` |
| SCA-Kalibrierung + Stress-Corpus | Ob Risiko-Scoring und Parser-Abdeckung im Laufe der Zeit driften | Wöchentliche / monatliche geplante Jobs | `packages/sca/data/calibration/`, `.github/workflows/refresh-sca-calibration.yml`, `.github/workflows/sca-stress-sweep.yml` |
| Dataflow-Corpus | Precision-/Recall-/FP-Kategorie-Tracking für Validator-Verhalten | Entwickler-ausgeführter Benchmark und Corpus-Tests | `core/dataflow/corpus/`, `core/dataflow/scripts/corpus-metrics` |
| CI-Controls-Doc-Guard | Dokumentierte Pfade existieren, Ruff-Konfiguration stimmt überein, README verlinkt auf das Doc | PRs | `.github/tests/test_ci_controls_docs.py` |

Derzeit nicht erzwungen: `mypy` ist in `requirements-dev.txt` installiert, blockiert aber nichts; Ruff-Formatierung wird nicht erzwungen; Semgrep ist Teil der Scanner-Oberfläche von RAPTOR, aber wir haben noch keinen dedizierten „RAPTOR mit RAPTOR scannen"-Semgrep-Workflow.

---

## Verwendung eines anderen LLM

RAPTOR hat zwei getrennte Modell-Ebenen, und es ist wichtig zu wissen, wie beide funktionieren, bevor Sie etwas ändern.

Die **Orchestrierungs-Ebene** ist immer Claude Code. Die CLAUDE.md, Skills und Befehle laufen alle als Claude-Code-Anweisungen. Um zu ändern, welches Claude-Modell RAPTOR orchestriert, verwenden Sie das `--model`-Flag von Claude Code oder den `/model`-Befehl innerhalb einer Sitzung.

Die **Analyse-Dispatch-Ebene** ist das LLM, das einzelne Schwachstellen-Befunde analysiert. Diese ist getrennt von der Orchestrierungs-Ebene und kann jeder unterstützte Provider sein. Konfigurieren Sie sie in `~/.config/raptor/models.json`:```json
{
  "models": [
    {
      "provider": "anthropic",
      "model": "claude-opus-4-6",
      "api_key": "sk-ant-...",
      "role": "analysis"
    },
    {
      "provider": "openai",
      "model": "gpt-5.4",
      "api_key": "sk-...",
      "role": "analysis"
    },
    {
      "provider": "anthropic",
      "model": "claude-sonnet-4-6",
      "api_key": "sk-ant-...",
      "role": "aggregate"
    }
  ]
}

Oder überspringe die Konfigurationsdatei und setze Umgebungsvariablen. RAPTOR erkennt sie automatisch:```bash export ANTHROPIC_API_KEY=sk-ant-... # Anthropic Claude export OPENAI_API_KEY=sk-... # OpenAI export GEMINI_API_KEY=... # Google Gemini export MISTRAL_API_KEY=... # Mistral export OLLAMA_HOST=http://localhost:11434 # Local Ollama

| Rolle | Funktion |
|------|-------------|
| `analysis` | Validiert und analysiert jeden Befund (Stufen A-F) |
| `code` | Schreibt Exploit-PoCs und Patch-Code |
| `consensus` | Zweitmeinungs-Abstimmung über echte Positivbefunde |
| `aggregate` | Optional. LLM-geschriebene narrative Synthese zusätzlich zur deterministischen Multi-Modell-Korrelation, geschrieben in `aggregation.json` und den finalen `agentic-report.md` |
| `fallback` | Wird verwendet, wenn das primäre Modell ausfällt oder Ratenlimits erreicht |

Wenn keine Rollen festgelegt sind, übernimmt das erste Modell in der Liste alles. Für eine Multi-Modell-
Quellcode-Analyse konfigurierst du zwei oder mehr `analysis`-Modelle — du erhältst die
deterministische Korrelation standardmäßig. Die `aggregate`-Rolle ist optional und fügt eine
LLM-geschriebene Zusammenfassung hinzu:```bash
python3 raptor.py agentic --repo /code \
  --model claude-opus-4-6 \
  --model gpt-5.4 \
  --aggregate claude-sonnet-4-6

Budget control:```bash

Cap analysis-layer LLM spend at $5 for this run (default: $10)

python3 raptor.py agentic --repo /code --max-cost-usd 5.00

Ollama eignet sich für Analysen, erzeugt aber unzuverlässigen Exploit- und Patch-Code. Verwenden Sie für Codegenerierungsaufgaben ein Frontier-Modell.

### Fast-Tier-Short-Circuit + die Modell-Bewertungstabelle

Wenn Ihr Analyse-Tier-Modell ein günstigeres Geschwistermodell desselben Anbieters hat (Anthropic Opus → Haiku, OpenAI 5.x → 4o-mini, Gemini Pro → Flash-Lite, Mistral Large → Small), verwendet RAPTOR es als Vorfilter für Consumer, die in das Substrat eingebunden sind (derzeit CodeQL; SCA und weitere folgen später). Das günstige Modell greift nur bei **sicheren False Positives** ein; mehrdeutige Fälle und sichere True Positives durchlaufen immer die vollständige Analyse. Vertrauen akkumuliert pro `(Modell, Entscheidungsklasse)`-Zelle — RAPTOR zeichnet die Übereinstimmung zwischen günstigem und vollem Modell auf und greift erst ein, wenn die obere Wilson-95%-Grenze für die Fehlerquote der Zelle bei 5 % oder darunter liegt.

Um zu prüfen, worin Ihre Modelle gut sind, verwenden Sie `/scorecard` (oder direkt: `libexec/raptor-llm-scorecard list`). Die Bewertungstabelle ist global (Erkenntnisse übertragen sich über Projekte hinweg) und wird unter `out/llm_scorecard.json` gespeichert.

---

## Projekte

Ohne ein Projekt erhält jeder Lauf sein eigenes, mit Zeitstempel versehenes Verzeichnis unter `out/`. Mit einem Projekt geht alles an einen Ort, und Sie erhalten zusammengeführte Ergebnisse, Abdeckungsverfolgung sowie Diffs zwischen Läufen.```bash
/project create myapp --target /path/to/code -d "Short description"
/project use myapp

/scan
/understand --map
/validate

/project status                # all runs, pass/fail, timestamps
/project findings              # merged findings across all runs
/project findings --detailed   # per-finding detail
/project coverage --detailed   # which files were reviewed
/project diff myapp run1 run2  # compare two runs
/project report                # full merged report
/project clean --keep 3        # remove old runs, keep the last 3
/project export myapp /tmp/myapp.zip
/project none                  # clear active project

Architektur

RAPTOR besteht aus zwei Ebenen.

Die Python-Ausführungsebene (raptor.py, packages/, core/, engine/) übernimmt die schwere Arbeit: Ausführen von Semgrep und CodeQL, Verwalten von Subprozessen, Parsen von SARIF, Deduplizieren von Befunden, Versenden von LLM-API-Aufrufen, Nachverfolgen von Kosten, Schreiben von Ausgabedateien. Sie trifft keine Entscheidungen. Sie führt aus.

Die Claude-Code-Entscheidungsebene (.claude/, tiers/, CLAUDE.md) trifft die Entscheidungen: welche Befunde priorisiert werden, wie Ergebnisse interpretiert werden, wie das Angriffsszenario aussieht, ob der Exploit realistisch ist. Implementiert als Claude-Code-Skills, -Befehle und -Agenten, die progressiv geladen werden.``` CLAUDE.md always loaded -- bootstrap, routing, security rules .claude/commands/ slash commands (/agentic, /scan, /validate, etc.) .claude/skills/ methodology detail, loaded on demand tiers/ adversarial thinking, recovery, expert personas .claude/agents/ specialist sub-agents (offsec, crash analysis, forensics)

Die Aufteilung bedeutet, dass du die Python-Ebene aus einer CI-Pipeline ausführen kannst (`python3 raptor.py scan --repo ...`) und strukturierte SARIF-Ausgabe ohne Claude Code erhältst, oder sie interaktiv mit dem vollständigen agentischen Workflow ausführen kannst.

---

## OSS-Forensik

`/oss-forensics` untersucht öffentliche GitHub-Repositories anhand von Beweisen aus mehreren Quellen: der GitHub-API, GH Archive (unveränderliche Ereignishistorie über BigQuery), der Wayback Machine und der lokalen Git-Historie. Es führt eine strukturierte Pipeline von der Beweissammlung über die Hypothesenbildung bis hin zu einem abschließenden forensischen Bericht aus.

Erfordert `GOOGLE_APPLICATION_CREDENTIALS` für den BigQuery-Zugriff. Details findest du in `.claude/commands/oss-forensics.md`.

---

## Experten-Personas

Sieben Experten-Personas sind auf Abruf verfügbar. Lade eine, wenn du eine andere Perspektive auf einen Befund oder eine bestimmte Technik möchtest:```
Exploit Developer (Mark Dowd)                  Exploit PoC generation
Crash Analyst (Charlie Miller / Halvar Flake)  Crash analysis and exploitability assessment
Security Researcher                            General adversarial code review
Patch Engineer                                 Secure fix generation
Penetration Tester                             Realistic attack scenario assessment
Fuzzing Strategist                             Corpus design and triage
Binary Exploitation Specialist                 ROP, heap, and memory corruption

Sag Claude, welches verwendet werden soll, z. B. „Verwende den Binary Exploitation Specialist“.


Dokumentation

Siehe docs/README.md für den vollständigen Index. Wichtige Anleitungen:

DateiInhalt
docs/commands.mdVollständige Slash-Command-Referenz mit allen Flags
docs/architecture.mdCodebasis-Struktur und Verzeichnisbaum
docs/llm.mdLLM-Provider-Konfiguration, Bedrock, Multi-Model-Workflows
docs/sandbox.mdProzessisolierung: Profile, Landlock, Namespaces
docs/audit.mdSystematische Code-Review: Hypothesen, Tools, Strategien, Gates
docs/validation.mdExploitability-Validierungspipeline (Stufen 0–1)
docs/static-analysis.mdSemgrep- und Coccinelle-Regeln
docs/codeql.mdCodeQL-Integration und autonome Analyse
docs/binary-analysis.mdBinary-Oracle, /binary, Exploit-Machbarkeit
docs/fuzzing.mdAFL++ und libFuzzer
docs/crash-analysis.mdAutonome Crash-Ursachenanalyse
docs/sca.mdSoftware-Composition-Analyse
docs/frida.mdDynamische Instrumentierung
docs/security.mdRAPTORs eigenes Sicherheitsmodell
docs/ci-controls.mdCI-Kontrollen, Workflows und Benchmark-Nachweise
docs/threat-model.mdThreat-Model-Funktion pro Projekt
docs/python-cli.mdPython-CLI-Referenz für Skripting und CI
docs/concepts.mdKernkonzepte: Zwei-Ebenen-Modell, Finding-Lebenszyklus, Auswahl eines Befehls
docs/agentic.mdAutonomer Workflow: /agentic-Pipeline, Anreicherungs-Flags, Multi-Model
docs/sage.mdSAGE persistenter Speicher: Einrichtung, HMAC-Schlüssel, CPU/GPU, Anwendungsfälle
docs/dependencies.mdExterne Tools, Versionen und Lizenzen
tiers/personas/README.mdReferenz für Experten-Personas

Mitwirken

RAPTOR ist Open Source. Gute Einstiegspunkte, wenn du mitwirken möchtest:

  • Browser-Engine-Crawling und DOM-XSS-Abdeckung für den Web-Scanner (Playwright ist festgelegt, wird aber nicht verwendet)
  • SSRF-Regelabdeckung für annotierungsgesteuerte Frameworks (Spring @RequestParam, FastAPI typisierte Parameter) — Semgrep kann diese Quellen nicht abgleichen, daher sind alternative Ansätze willkommen
  • YARA-Signaturgenerierung
  • Portierungen auf andere KI-Coding-Tools (Cursor, Windsurf, Copilot, Cline)
  • Bessere Firmware-Analyseabdeckung
  • Alles, was deiner Meinung nach fehlt

Releases werden als vX.Y.Z getaggt und automatisch von CI erstellt. Commit-Präfixe bestimmen, was in den Changelog aufgenommen wird: feat: für neue Funktionen, fix: für Fehlerbehebungen, security: für Sicherheitsänderungen, docs: für Dokumentation. Alles ohne Präfix landet unter „Andere Änderungen“. Keine strenge Konvention erforderlich, aber es hilft.

Reiche Pull-Requests ein. Chatte mit uns auf dem #raptor-Kanal im Prompt||GTFO-Slack: https://join.slack.com/t/promptgtfo/shared_invite/zt-3v2b4sll3-SfyzFRw2lykx_XQX7F3uNQ


Lizenz

MIT — Copyright (c) 2025-2026 Gadi Evron, Daniel Cuthbert, Thomas Dullien (Halvar Flake), Michael Bargury, John Cartwright.

Siehe LICENSE für den vollständigen Text. Prüfe die Lizenzen aller Abhängigkeiten vor kommerzieller Nutzung — insbesondere CodeQL erlaubt dies nicht.

Issues: https://github.com/gadievron/raptor/issues

Kategorien