Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
raptor — Framework autonome de recherche en sécurité intégrant l'analyse statique, l'analyse binaire, le fuzzing, la validation de vulnérabilités assistée par LLM, la génération d'exploits et l'écriture de correctifs pour les opérations offensives et défensives. | Kitploit
Outils/GitHubGitHub/gadievron/raptor
Frameworks de Tests d'IntrusionAnalyse Dynamique (Sandboxing)Frameworks d'ExploitationAnalyse Statique de Code (SAST)Analyse des VulnérabilitésFuzzingAnalyse de BinairesSécurité de la Chaîne LogistiqueRétro-Ingénierie Assistée par IARed Teaming
GitHub
3.6k56211il y a 15h 44mVérifié par Kitploit
gadievron/raptor

raptor

Framework autonome de recherche en sécurité intégrant l'analyse statique, l'analyse binaire, le fuzzing, la validation de vulnérabilités assistée par LLM, la génération d'exploits et l'écriture de correctifs pour les opérations offensives et défensives.

Voir le dépôt

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
root@kitploit:~
╔═══════════════════════════════════════════════════════════════════════════╗
║                                                                           ║
║             ██████╗  █████╗ ██████╗ ████████╗ ██████╗ ██████╗             ║
║             ██╔══██╗██╔══██╗██╔══██╗╚══██╔══╝██╔═══██╗██╔══██╗            ║
║             ██████╔╝███████║██████╔╝   ██║   ██║   ██║██████╔╝            ║
║             ██╔══██╗██╔══██║██╔═══╝    ██║   ██║   ██║██╔══██╗            ║
║             ██║  ██║██║  ██║██║        ██║   ╚██████╔╝██║  ██║            ║
║             ╚═╝  ╚═╝╚═╝  ╚═╝╚═╝        ╚═╝    ╚═════╝ ╚═╝  ╚═╝            ║
║                                                                           ║
║             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.....⠀⠀⠀⠀⠀

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

Licence : MIT, voir LICENSE. Notez que CodeQL possède sa propre licence et n'autorise pas l'utilisation commerciale.

Dépôt : https://github.com/gadievron/raptor


Qu'est-ce que RAPTOR ?

RAPTOR est un framework de recherche en sécurité autonome construit sur Claude Code (mais pas lié à lui -- vous pouvez également brancher votre propre couche d'analyse). Il enchaîne l'analyse statique, l'analyse binaire, la validation de vulnérabilités pilotée par LLM, la génération d'exploits et la rédaction de correctifs dans un flux de travail unique que vous pouvez exécuter sur une base de code ou un binaire.

Ce n'est pas un logiciel poli. Il a été construit sur du temps libre, maintenu avec enthousiasme et du ruban adhésif, et il fonctionne suffisamment bien pour que nous ne puissions pas arrêter de l'utiliser. Si vous voulez l'améliorer, ouvrez une PR.

RAPTOR signifie Recursive Autonomous Penetration Testing and Observation Robot. Nous voulions vraiment l'appeler RAPTOR.

Comment il est construit

RAPTOR est en grande partie du code généré par IA. Les humains définissent la direction, examinent les résultats et prennent les décisions de conception ; l'IA écrit l'implémentation. La vérification mécanique (tests, analyse statique, calibration du corpus) maintient le niveau de qualité là où il doit être, peu importe qui -- ou quoi -- a écrit le code.


Prérequis

  • Claude Code avec un abonnement actif (Max, Pro, Team ou Enterprise) ou une clé API Anthropic. C'est la couche d'orchestration -- RAPTOR s'exécute dans une session Claude Code.
  • Python 3.10+ et Node.js 18+.
  • Semgrep (pip install semgrep) pour l'analyse statique. CodeQL est optionnel mais recommandé.

Pour la couche de répartition de l'analyse (le LLM qui analyse les résultats individuels), Claude Code gère tout par défaut -- aucune clé API supplémentaire n'est nécessaire. Si vous souhaitez une analyse multi-modèles (par ex. Claude + GPT + Gemini), vous aurez besoin de clés API pour chaque fournisseur. Voir Utiliser un LLM différent ci-dessous.

Démarrage rapide

Option 1 : Installation manuelle```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

root@kitploit:~
Le lanceur `raptor` est la méthode recommandée pour démarrer une session, et il fonctionne depuis n'importe quel répertoire — il résout l'installation de RAPTOR, mémorise le répertoire depuis lequel vous avez lancé (afin que des commandes comme `/scan` y fassent référence par défaut), exécute les vérifications préalables de confiance et de projet, charge le plugin de suivi de couverture, et assainit l'environnement avant de passer la main à Claude Code. Il accepte également un chemin cible optionnel et des indicateurs comme `--project`, `--continue` et `--model` — voir `raptor --help`.

Lancer simplement `claude` depuis l'intérieur du répertoire du dépôt fonctionne aussi — Claude Code récupère la configuration de RAPTOR depuis le checkout — mais vous sautez tout ce que le lanceur fait ci-dessus : aucune vérification préalable, aucun suivi de couverture, et les commandes qui utilisent par défaut « le répertoire depuis lequel vous avez lancé » ne peuvent pas le voir.

**Important :** RAPTOR charge sa configuration depuis le répertoire du dépôt. Si vous exécutez `claude` depuis tout autre répertoire, vous obtenez un Claude Code standard, pas RAPTOR. Le lanceur `raptor` évite entièrement ce mode de défaillance.

### Option 2 : Exécuter dans un conteneur (recommandé)

L'utilisation de conteneurs est une pratique de sécurité courante pour empêcher les agents d'accéder aux zones de votre système de fichiers auxquelles vous ne voulez pas qu'ils accèdent, tout en limitant le rayon d'impact de tout code malveillant qui pourrait s'exécuter (par exemple via une attaque sur la chaîne d'approvisionnement). L'image est volumineuse (environ 6 Go). Elle part du devcontainer Microsoft Python 3.12 et y ajoute des outils d'analyse statique, de fuzzing et d'automatisation de navigateur.

Vous pouvez récupérer une image pré-construite :```bash
docker pull danielcuthbert/raptor:latest

or build it locally using the included Dockerfile :```bash docker build -f .devcontainer/Dockerfile -t raptor:latest .

root@kitploit:~
L'image attend que le framework RAPTOR (ce dépôt) soit monté dans `/workspaces/raptor` au démarrage. Vous pouvez éventuellement monter un dossier cible pour une analyse locale.

Pour démarrer le conteneur :```bash
docker run -it \
  -v "$(pwd):/workspaces/raptor" \
  raptor:latest

Pour monter également un dossier cible :```bash docker run -it
-v "$(pwd):/workspaces/raptor"
-v "/path/to/target-folder:/workspaces/target"
raptor:latest

root@kitploit:~
Ajoutez `--privileged` si vous avez besoin du débogueur déterministe `rr`.

Les devcontainers VS Code sont également pris en charge. Pour monter un dossier cible, ajoutez-le à la section `mounts` de `.devcontainer/devcontainer.json` :```jsonc
"mounts": [
  // ...existing entries...
  "source=/path/to/target-folder,target=/workspaces/target,type=bind,consistency=cached"
]

Ensuite, ouvrez le dépôt dans VS Code — il vous demandera de le rouvrir dans le conteneur :```bash cd /path/to/raptor code .

root@kitploit:~
D'une manière ou d'une autre, une fois à l'intérieur du conteneur, exécutez `raptor` pour commencer.

---

## À quoi s'attendre lors d'une première exécution

La chose la plus simple que vous puissiez faire :```
/scan /path/to/code

Cet outil exécute Semgrep (plus Coccinelle lorsque spatch est installé ; ajoutez --codeql pour CodeQL) sur la cible, déduplique les résultats, et génère un rapport SARIF. Aucune analyse par LLM, aucune clé API au-delà de Claude Code. Cela prend quelques minutes sur un dépôt typique.

Pour ajouter une validation basée sur un LLM :``` /agentic /path/to/code

root@kitploit:~
Ceci exécute le pipeline complet : scan, déduplication, puis envoi de chaque résultat à travers les étapes de validation (A-F). Sur une base de code de taille moyenne avec ~50 résultats, prévoyez 10 à 30 minutes et 2 à 8 $ de coûts LLM de la couche d'analyse (selon le modèle). Le plafond de coût par défaut est de 10 $ par exécution ; ajustez-le avec `--max-cost-usd`.

**Note sur les coûts :** La couche d'orchestration Claude Code utilise votre abonnement Claude. La couche de répartition d'analyse effectue des appels API LLM distincts facturés par jeton. Si vous utilisez uniquement Claude Code comme modèle d'analyse (par défaut), il n'y a aucun coût supplémentaire au-delà de votre abonnement. Si vous configurez des modèles externes (OpenAI, Gemini, etc.), ces appels API sont facturés à ces fournisseurs.

---

## Modèle de sécurité

RAPTOR exécute du code généré par LLM et analyse des dépôts non fiables. Les sous-processus qui traitent du contenu non fiable sont isolés dans des sandbox utilisant les espaces de noms Linux, Landlock et seccomp. Le sandbox bloque l'accès réseau, restreint la visibilité du système de fichiers et limite la consommation de ressources. Consultez `docs/sandbox.md` pour le modèle de menace complet et la configuration.

Les variables d'environnement susceptibles d'injecter du code dans la chaîne de lancement sont supprimées au démarrage (`core/security/_dangerous_env_strip.sh`). Les chemins de fichiers issus des dépôts analysés ne sont jamais interpolés dans des chaînes shell — tous les appels de sous-processus utilisent des arguments basés sur des listes.

---

## Ce que RAPTOR peut faire

| Commande | Ce qu'elle fait | Statut |
|---------|-------------|--------|
| `/agentic` | Workflow autonome complet : scan, validation, exploitation, correctif | Stable |
| `/scan` | Analyse statique avec Semgrep et CodeQL | Stable |
| `/understand` | Cartographier la surface d'attaque, tracer les flux de données, rechercher des variantes de vulnérabilités | Stable |
| `/binary` | Investigation binaire en boîte noire, preuves d'exécution, requêtes de graphe et transfert | Bêta |
| `/ghidra` | Pont RE Ghidra : attacher/importer des projets `.gpr`, diff entre versions, export des résultats | Bêta |
| `/audit` | Revue de code systématique guidée par hypothèses et fondée sur les outils | Bêta |
| `/review` | Interroger l'état de l'audit : résultats, lacunes, couverture, notes de l'opérateur | Stable |
| `/annotate` | Attacher des annotations prosaïques libres par fonction (notes de revue de l'opérateur) | Stable |
| `/validate` | Pipeline de validation d'exploitabilité en plusieurs étapes (Étapes 0-F) | Stable |
| `/diagram` | Cartes visuelles Mermaid à partir des sorties JSON de `/understand` et `/validate` | Bêta |
| `/codeql` | Analyse approfondie CodeQL uniquement avec pré-filtrage de flux de données SMT | Stable |
| `/analyze` | Analyser des résultats SARIF existants avec LLM, sans re-scan | Stable |
| `/sca` | Analyse de composition logicielle : dépendances, avis de sécurité, signaux de chaîne d'approvisionnement, SBOM et correctifs | Bêta |
| `/cve-diff` | Découvrir et différencier le commit de correctif d'une CVE sur OSV, NVD, GitHub et GitLab | Bêta |
| `/cve-env` | Construire et vérifier un environnement Docker exécutant l'application affectée par une CVE à sa version pré-correctif | Expérimental |
| `/exploit` | Générer du code de preuve de concept d'exploitation | Bêta |
| `/patch` | Générer des correctifs sécurisés pour les vulnérabilités confirmées | Bêta |
| `/fuzz` | Fuzzing binaire avec AFL++ et analyse des crashs | Stable |
| `/crash-analysis` | Analyse de cause racine autonome pour les crashs C/C++ | Stable |
| `/oss-forensics` | Investigation forensique fondée sur des preuves pour les dépôts GitHub | Stable |
| `/project` | Espaces de travail nommés pour organiser les exécutions et suivre les résultats dans le temps | Stable |
| `/describe` | Décrire une cible : mélange de langages, système de build, lacunes d'outillage, estimation des coûts (lecture seule) | Stable |
| `/threat-model` | Créer, inspecter et maintenir des modèles de menace par projet | Stable |
| `/sage` | Couche de mémoire persistante (stocker, rappeler, lier, corroborer) | Stable |
| `/ask` | Envoyer une invite libre à n'importe quel modèle LLM configuré | Stable |
| `/scorecard` | Inspecter la fiabilité par modèle à travers les classes de décision | Stable |
| `/frida` | Instrumentation dynamique via Frida | Alpha |
| `/web` | Scan d'applications web : crawl, intégration ffuf/nuclei, injection vérifiée par oracle, rappels SSRF aveugles | Bêta |

---

## Comment fonctionne le pipeline

Commencez par créer un projet afin que toutes vos exécutions soient regroupées au même endroit :```
/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

Pour un artefact compilé, le point de départ équivalent est :```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

root@kitploit:~
`/understand` construit une carte de contexte des points d'entrée, des frontières de confiance et des sinks avant qu'une ligne de scan ne soit exécutée. `/agentic` exécute ensuite Semgrep et CodeQL, déduplique les résultats et envoie chacun d'eux pour validation en utilisant la méthodologie exploitation-validator :

Avec `--threat-model`, RAPTOR exécute d'abord la carte, crée `threat-model.json` et `THREAT_MODEL.md` si le projet ne les possède pas déjà, puis alimente une version compacte dans `/understand`, l'analyse autonome et `/validate`. Les modèles de menace existants du projet sont préservés sauf si vous passez `--threat-model-refresh` ; les cartes de repli obsolètes sont refusées sauf si vous passez explicitement `--threat-model-use-stale`. Il transforme également les flux non contrôlés cartographiés en SARIF candidat afin que les manques du scanner ne tuent pas l'exécution. Il s'agit d'un contexte détenu par l'opérateur, pas d'une preuve magique : les résultats nécessitent toujours une preuve de code ou une confirmation adossée à un oracle. Voir `docs/threat-model.md`.

- Étape A : le motif est-il réellement une vulnérabilité, ou l'outil fait-il du bruit de correspondance de motifs ?
- Étape B : de quoi un attaquant a-t-il besoin pour l'atteindre, et qu'est-ce qui fait obstacle ?
- Étape C : le chemin de code existe-t-il réellement ? peut-il être atteint depuis l'extérieur ?
- Étape D : décision finale — s'agit-il de code de test, nécessite-t-il des préconditions irréalistes, le modèle esquive-t-il ?
- Étape E : faisabilité de l'exploitation binaire (lorsqu'un artefact compilé est disponible)
- Étape F : auto-examen — une étape antérieure a-t-elle esquivé ou s'est-elle contredite ?

Les résultats qui passent la validation reçoivent des PoC d'exploitation et des correctifs générés. Une analyse transversale des résultats s'exécute à la fin pour trouver les causes racines partagées et les chaînes d'attaque.

`/validate` exécute ce même pipeline en tant qu'étape autonome si vous disposez déjà de résultats issus d'un scan précédent.

Pour un artefact compilé, `/binary <path>` exécute désormais une
investigation axée sur les preuves plutôt que de déverser un tas d'artefacts
bruts de rétro-ingénierie sur l'opérateur. En dessous, il construit toujours le manifeste lié à SHA-256,
le registre de preuves, la carte de contexte, la liste de contrôle et le graphe SQLite à partir des métadonnées de fichier,
des imports et des xrefs radare2. Les applications Mach-O reçoivent également un inventaire de tranches, des
métadonnées de bundle et des sélecteurs de classes Objective-C / Swift ; le pseudocode à forte valeur est
conservé plutôt que de disparaître pendant l'exécution. Les exports de DLL PE, les
dispatchers de pilotes Windows et les gestionnaires ioctl de modules du noyau Linux sont également traités comme
leurs propres candidats d'ingress, l'architecture PE étant lue depuis l'en-tête
COFF plutôt que devinée. La couche d'investigation interroge ensuite ce graphe,
classe l'ingress externe avant les pistes génériques de sink, découvre les
binaires helpers/frères déclarés et écrit un rapport compact réparti entre faits,
inférences structurelles et hypothèses non prouvées. Les observations Frida, les témoins de crash de fuzzing,
les vérifications Z3 explicites et les diffs binaires peuvent ensuite ajouter des preuves plus solides
plus tard. RAPTOR conserve également le graphe d'appels interne nécessaire pour récupérer les
candidats bornés ingress-vers-parseur, afin qu'un callback d'application puisse être réduit à la
fonction interne qui appelle réellement `XML_Parse`, `d2i_X509`,
`jpeg_read_header` ou une autre surface de parseur réelle sans prétendre qu'il s'agit
d'une preuve de taint. `/binary trace-parser <run-dir>` est le suivi dynamique explicite :
il exécute la trace Frida étroite du parseur, puis actualise la même carte de contexte,
le handoff, le graphe et le rapport d'investigation en place. `/binary investigate --active` cartographie d'abord et ne lance une véritable
campagne de fuzzing que lorsqu'une frontière de harnais concrète existe ; les cibles app, DLL et
pilote reçoivent une étape de harnais ou de snapshot à la place. `/binary harness` écrit une
spécification de harnais adossée aux preuves pour l'ingress choisi et n'émet du code source candidat
que lorsque le contrat ABI ou IOCTL est explicite. Il ne bluffe pas son chemin de « `memcpy` existe » à « c'est
exploitable » : les imports, les sélecteurs et les arêtes d'appel restent des candidats jusqu'à ce que
quelque chose de mécanique prouve davantage. Voir `docs/binary-analysis.md`.

---

## Analyse de la composition logicielle

`/sca` analyse le côté dépendances et chaîne d'approvisionnement d'un projet. Il ne s'agit pas simplement d'une recherche de CVE dans les fichiers d'exigences : RAPTOR découvre les manifests, les lockfiles, les commandes d'installation en ligne, les dépendances de workflows et les sources de paquets de conteneurs/images de base, puis les normalise en une vue unique des dépendances.

Le scan enrichit les dépendances avec les avis OSV, CISA KEV, EPSS, CISA Vulnrichment/SSVC, l'atteignabilité, les signaux de preuve d'exploitation, les vérifications d'hygiène, les heuristiques de chaîne d'approvisionnement, les conclusions de politique de licence et un examen/tri LLM facultatif. Il émet des résultats natifs RAPTOR ainsi qu'un SBOM et une sortie compatible CI :

- `findings.json` - résultats canoniques RAPTOR
- `report.md` - résumé lisible par l'humain
- `sbom.cdx.json` - SBOM CycloneDX avec données VEX
- `findings.sarif` - sortie de scan de code GitHub/GitLab

Commandes courantes :```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

Commandes utiles : fix, check, upgrade, diff, verify, health, render, suppress et clean-cache. Voir docs/sca.md pour la référence complète.


Intégration SMT Z3

RAPTOR dispose d'une intégration Z3 à deux niveaux (pip install z3-solver). Elle est facultative. Tout fonctionne sans elle, mais les résultats sont meilleurs avec.

Pré-filtrage du flux de données (CodeQL)

Lorsque CodeQL produit un résultat de chemin, les contraintes du chemin sont vérifiées pour leur satisfiabilité avant tout appel LLM. Les chemins dont on peut prouver qu'ils sont inatteignables sont supprimés immédiatement. Pour les chemins atteignables, Z3 produit des entrées candidates concrètes qui sont intégrées à l'invite d'analyse, afin que le LLM ait quelque chose de précis sur lequel raisonner plutôt que des schémas abstraits.

Analyse des contraintes one-gadget (faisabilité binaire)

Lors de l'évaluation de la faisabilité d'une exploitation binaire, Z3 vérifie si les contraintes de registres et de mémoire d'un one-gadget sont satisfiables par rapport à l'état de crash concret. Les gadgets sont classés selon leur atteignabilité réelle plutôt que par heuristiques, ce qui vous permet de consacrer du temps aux gadgets qui peuvent réellement fonctionner.

Z3 est préinstallé dans le devcontainer. Pour les installations manuelles : pip install z3-solver.


Fonctionnement hors ligne et dans les pipelines isolés (air-gapped)

Les règles personnalisées de RAPTOR sous engine/semgrep/rules/ sont entièrement locales et s'exécutent sans accès réseau.

Pour les packs de registre (p/security-audit, p/owasp-top-ten, etc.), le répertoire de cache est livré vide. Un outil de cache (engine/semgrep/tools/cache-packs.py) gère le remplissage :```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

root@kitploit:~
Une fois rempli, le scanner résout les ID de packs vers des fichiers locaux et aucun appel réseau n'a lieu. Sans le cache, RAPTOR tentera de récupérer les packs de registre depuis semgrep.dev au moment de l'analyse ; si hors ligne, il abandonne proprement les packs non mis en cache et s'exécute uniquement avec les règles personnalisées.

CodeQL nécessite un accès réseau uniquement lors de la configuration initiale pour télécharger le CLI et les packs de requêtes. Une fois installé, il fonctionne hors ligne.

---

## Règles personnalisées

RAPTOR embarque plus de 200 règles d'analyse statique personnalisées, testées de manière adversarial pour éliminer les faux positifs :

- **Semgrep (145 règles)** — règles de suivi de flux de données (taint) et de motifs pour Python, Go, Java et JS/TS. Couvre SQLi, XSS, SSRF, SSTI, injection de commandes, désérialisation, XXE, injection LDAP/NoSQL, traversée de chemin, redirection ouverte, injection de logs/en-têtes, injection eval, ReDoS, pollution de prototype, mauvaise configuration JWT, crypto faible, TLS non sécurisé et secrets codés en dur.
- **Coccinelle (63 règles)** — correspondance structurelle pour C/C++. Sécurité mémoire (double free, use-after-free, free de pointeur non-base, free de tableau de pile, mémoire mmap, use-after-close), bugs d'entiers (dépassement, extension de signe, double sizeof), fuites de ressources (inadéquation popen/fclose, double fermeture fdopendir), gestion des tampons (strncpy sans NUL, inadéquation de taille copy_user, off-by-one malloc/strlen), sécurité des gestionnaires de signaux, mauvaise utilisation d'API (domaine de drapeau fcntl, SIGKILL/SIGSTOP, double inversion d'octets, tampon statique inet_ntoa), élimination des dead-stores par le compilateur, confusion IS_ERR/PTR_ERR du noyau, injection de chaînes de format, courses TOCTOU, et plus encore.
- **CodeQL (8 requêtes)** — suivi de flux de données interprocédural pour C++ (injection de chaînes de format, troncature d'entiers, use-after-move, invalidation d'itérateurs) et Java (XXE, désérialisation non sécurisée, injection de logs, SSRF Spring).

Parcourez les règles directement : `engine/semgrep/rules/`, `engine/coccinelle/rules/`, `engine/codeql/queries/`. Elles complètent les packs de registre Semgrep que RAPTOR récupère (`p/security-audit`, `p/owasp-top-ten`, `p/secrets` toujours ; des packs par groupe de politiques comme `p/command-injection`, `p/jwt`, `p/xss` en plus) — le chevauchement est minime.

---

## Comment RAPTOR s'auto-vérifie

RAPTOR utilise une bonne partie de ses propres outils de sécurité, mais il vaut la peine d'être honnête sur ce qui bloque réellement une PR et ce qui s'exécute simplement en arrière-plan pour nous garder honnêtes. Une partie de cela est une porte stricte, une partie est une vérification planifiée, et une partie n'est qu'un benchmark que nous conservons pour savoir quand nous avons aggravé les choses. La ventilation complète, y compris les paramètres réels et la manière de reproduire les vérifications, se trouve dans `docs/ci-controls.md`.

| Contrôle | Ce qu'il vérifie | Déclencheur | Config / preuve |
|---|---|---|---|
| Ruff | Linting de correction Python (`F401`, `F811`, `F821`, `F841`) | Porte de diff PR, plus audit hebdomadaire de l'arborescence complète | `pyproject.toml`, `.github/workflows/lint.yml` |
| Pytest | Limites rapides d'unité/intégration, niveaux spécifiques au sous-système (via dispatch par graphe d'imports), audit de l'enveloppe de prompt | PR, pushs vers `main`, file d'attente de fusion, suite complète planifiée | `pytest.ini`, `.github/workflows/tests.yml`, `.github/workflows/nightly.yml` |
| CodeQL Advanced | Analyse de code Python, C/C++ et GitHub Actions avec rétrécissement de portée par graphe d'imports | PR, pushs vers `main`, file d'attente de fusion, planification hebdomadaire | `.github/workflows/codeql.yml`, `.github/codeql/codeql-config.yml` |
| Durcissement des workflows | Actions tierces épinglées par SHA, permissions au moindre privilège, linting des métadonnées de commandes | Chaque modification de workflow et chaque exécution de lint | `.github/workflows/`, `.github/scripts/check_command_metadata.py` |
| Lint des étiquettes de corpus | Validation du schéma des étiquettes de corpus d'audit et vérification des épinglages amont | PR (étiquettes modifiées), balayage complet hebdomadaire | `.github/workflows/corpus-labels.yml` |
| Porte PR SCA RAPTOR | Régressions de dépendances et de chaîne d'approvisionnement introduites par une PR | Modifications de manifeste / fichier de verrouillage / workflow | `.github/workflows/sca-pr-gate.yml` |
| Auto-mise à niveau SCA RAPTOR | Durcissement mécanique des dépendances et propositions de mises à niveau sûres | Planification hebdomadaire, exécution manuelle | `.github/workflows/sca-self-bump.yml` |
| Corpus de compromission SCA | Vérifie si les compromissions de dépendances connues déclenchent toujours le signal attendu | Planification hebdomadaire, modifications de PR pertinentes | `test/data/sca-e2e/compromise-corpus/`, `.github/workflows/sca-compromise-check.yml` |
| Analyse de mauvais câblage | Détection de code mort / mauvais appel, dérive de documentation de variables d'environnement, garde-fous de liste de vocabulaire, lint d'imports de dépendances optionnelles | Planification quotidienne | `.github/workflows/miswiring-scan.yml`, `.github/scripts/*_baseline.json` |
| Calibration SCA + corpus de stress | Vérifie si la notation des risques et la couverture du parseur dérivent au fil du temps | Tâches planifiées hebdomadaires / mensuelles | `packages/sca/data/calibration/`, `.github/workflows/refresh-sca-calibration.yml`, `.github/workflows/sca-stress-sweep.yml` |
| Corpus de flux de données | Suivi de précision / rappel / catégories de faux positifs pour le comportement du validateur | Benchmark exécuté par les développeurs et tests de corpus | `core/dataflow/corpus/`, `core/dataflow/scripts/corpus-metrics` |
| Garde du document de contrôles CI | Les chemins documentés existent, la config ruff correspond, le README pointe vers le document | PR | `.github/tests/test_ci_controls_docs.py` |

Non appliqué actuellement : `mypy` est installé dans `requirements-dev.txt` mais ne bloque rien ; le formatage Ruff n'est pas appliqué ; Semgrep fait partie de la surface de scan de RAPTOR, mais nous n'avons pas encore de workflow Semgrep dédié « scanner RAPTOR avec RAPTOR ».

---

## Utiliser un LLM différent

RAPTOR possède deux couches de modèles distinctes, et il vaut la peine de comprendre comment les deux fonctionnent avant de modifier quoi que ce soit.

La **couche d'orchestration** est toujours Claude Code. Le CLAUDE.md, les compétences et les commandes s'exécutent tous comme des instructions Claude Code. Pour changer le modèle Claude qui orchestre RAPTOR, utilisez le drapeau `--model` de Claude Code ou la commande `/model` dans une session.

La **couche de dispatch d'analyse** est le LLM qui analyse les constatations de vulnérabilités individuelles. Elle est distincte de la couche d'orchestration et peut être n'importe quel fournisseur pris en charge. Configurez-la dans `~/.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"
    }
  ]
}

Ou ignorez le fichier de configuration et définissez des variables d'environnement. RAPTOR les détectera automatiquement :```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

root@kitploit:~
| Rôle | Ce qu'il fait |
|------|-------------|
| `analysis` | Valide et analyse chaque résultat (Étapes A-F) |
| `code` | Écrit les PoC d'exploitation et le code de correctif |
| `consensus` | Vote de second avis sur les vrais positifs |
| `aggregate` | Optionnel. Synthèse narrative rédigée par LLM par-dessus la corrélation déterministe multi-modèles, écrite dans `aggregation.json` et le rapport final `agentic-report.md` |
| `fallback` | Utilisé si le modèle principal échoue ou atteint les limites de débit |

Si aucun rôle n'est défini, le premier modèle de la liste gère tout. Pour l'analyse
de code source multi-modèles, configurez deux modèles `analysis` ou plus — vous obtiendrez
la corrélation déterministe par défaut. Le rôle `aggregate` est optionnel et ajoute
un résumé rédigé par LLM par-dessus :```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

root@kitploit:~
Ollama fonctionne pour l’analyse mais produit des codes d’exploit et de patch peu fiables. Pour les tâches de génération de code, utilisez un modèle de pointe.

### Court-circuit du niveau rapide + le tableau de bord des modèles

Lorsque votre modèle du niveau d’analyse dispose d’un équivalent moins cher chez le même fournisseur (Anthropic Opus → Haiku, OpenAI 5.x → 4o-mini, Gemini Pro → Flash-Lite, Mistral Large → Small), RAPTOR l’utilisera comme préfiltre sur les consommateurs connectés au substrat (codeql aujourd’hui ; SCA et autres à venir). Le modèle bon marché ne court-circuite que sur les **faux positifs certains** ; les cas ambigus et les vrais positifs certains déclenchent toujours l’analyse complète. La confiance s’accumule par cellule `(modèle, classe_de_décision)` — RAPTOR enregistre l’accord entre le modèle bon marché et le modèle complet et ne court-circuite que lorsque la borne supérieure de Wilson à 95 % sur le taux d’erreur de la cellule tombe à 5 % ou moins.

Pour inspecter les points forts de vos modèles, utilisez `/scorecard` (ou directement : `libexec/raptor-llm-scorecard list`). Le tableau de bord est global (les enseignements s’appliquent à tous les projets) et persiste dans `out/llm_scorecard.json`.

---

## Projets

Sans projet, chaque exécution obtient son propre répertoire horodaté sous `out/`. Avec un projet, tout est regroupé au même endroit et vous obtenez des résultats fusionnés, un suivi de couverture et des différences entre les exécutions.```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

Architecture

RAPTOR est composé de deux couches.

La couche d'exécution Python (raptor.py, packages/, core/, engine/) gère le gros du travail : exécuter Semgrep et CodeQL, gérer les sous-processus, analyser les rapports SARIF, dédupliquer les résultats, envoyer les appels API LLM, suivre les coûts, écrire les fichiers de sortie. Elle ne prend pas de décisions. Elle exécute.

La couche de décision Claude Code (.claude/, tiers/, CLAUDE.md) prend les décisions : quels résultats prioriser, comment interpréter les résultats, quel est le scénario d'attaque, si l'exploit est réaliste. Implémentée sous forme de compétences, commandes et agents Claude Code qui se chargent progressivement.``` 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)

root@kitploit:~
La séparation signifie que vous pouvez exécuter la couche Python depuis un pipeline CI (`python3 raptor.py scan --repo ...`) et obtenir une sortie SARIF structurée sans Claude Code, ou l’exécuter de manière interactive avec le flux de travail agentique complet.

---

## Forensique OSS

`/oss-forensics` enquête sur les dépôts GitHub publics en utilisant des preuves provenant de multiples sources : l’API GitHub, GH Archive (historique immuable des événements via BigQuery), la Wayback Machine et l’historique git local. Il exécute un pipeline structuré allant de la collecte de preuves à la formulation d’hypothèses, jusqu’à un rapport forensique final.

Nécessite `GOOGLE_APPLICATION_CREDENTIALS` pour l’accès à BigQuery. Voir `.claude/commands/oss-forensics.md` pour plus de détails.

---

## Personas experts

Sept personas experts sont disponibles à la demande. Chargez-en un lorsque vous souhaitez une perspective différente sur une découverte ou une technique spécifique :```
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

Dites à Claude lequel utiliser, par ex. « Utilisez le spécialiste de l'exploitation binaire ».


Documentation

Consultez docs/README.md pour l'index complet. Guides clés :

FichierContenu
docs/commands.mdRéférence complète des commandes slash avec chaque option
docs/architecture.mdStructure du codebase et arborescence des répertoires
docs/llm.mdConfiguration des fournisseurs LLM, Bedrock, workflows multi-modèles
docs/sandbox.mdIsolation des processus : profils, Landlock, espaces de noms
docs/audit.mdRevue de code systématique : hypothèses, outils, stratégies, portes
docs/validation.mdPipeline de validation de l'exploitabilité (étapes 0--1)
docs/static-analysis.mdRègles Semgrep et Coccinelle
docs/codeql.mdIntégration CodeQL et analyse autonome
docs/binary-analysis.mdOracle binaire, /binary, faisabilité de l'exploitation
docs/fuzzing.mdAFL++ et libFuzzer
docs/crash-analysis.mdAnalyse autonome de la cause racine des crashs
docs/sca.mdAnalyse de composition logicielle
docs/frida.mdInstrumentation dynamique
docs/security.mdModèle de sécurité propre à RAPTOR
docs/ci-controls.mdContrôles CI, workflows et preuves de référence
docs/threat-model.mdFonctionnalité de modèle de menace par projet
docs/python-cli.mdRéférence CLI Python pour les scripts et la CI
docs/concepts.mdConcepts clés : modèle à deux couches, cycle de vie des constats, choix d'une commande
docs/agentic.mdWorkflow autonome : pipeline /agentic, options d'enrichissement, multi-modèles
docs/sage.md

Contribuer

RAPTOR est open source. De bons points de départ si vous souhaitez contribuer :

  • Exploration du moteur de navigateur et couverture XSS DOM pour le scanner web (Playwright est épinglé mais inutilisé)
  • Couverture des règles SSRF pour les frameworks pilotés par annotations (Spring @RequestParam, paramètres typés FastAPI) — semgrep ne peut pas correspondre à ces sources, des approches alternatives sont donc les bienvenues
  • Génération de signatures YARA
  • Portages vers d'autres outils de codage IA (Cursor, Windsurf, Copilot, Cline)
  • Meilleure couverture de l'analyse des firmwares
  • Tout ce que vous pensez manquer

Les versions sont étiquetées vX.Y.Z et construites automatiquement par la CI. Les préfixes de commit déterminent ce qui entre dans le journal des modifications : feat: pour les nouvelles fonctionnalités, fix: pour les corrections de bogues, security: pour les changements de sécurité, docs: pour la documentation. Tout ce qui n'a pas de préfixe atterrit dans « Autres changements ». Aucune convention stricte requise, mais cela aide.

Soumettez des demandes de tirage. Discutez avec nous sur le canal #raptor dans le Slack Prompt||GTFO : https://join.slack.com/t/promptgtfo/shared_invite/zt-3v2b4sll3-SfyzFRw2lykx_XQX7F3uNQ


Licence

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

Voir LICENSE pour le texte complet. Examinez les licences de toutes les dépendances avant toute utilisation commerciale — CodeQL en particulier ne le permet pas.

Problèmes : https://github.com/gadievron/raptor/issues

Télécharger l’outil
Mémoire persistante SAGE : configuration, clé HMAC, CPU/GPU, cas d'usage
docs/dependencies.mdOutils externes, versions et licences
tiers/personas/README.mdRéférence des personas experts