
Scanner SAST alimenté par l'IA qui détecte les contournements d'authentification, les IDOR et les bugs logiques que Semgrep/CodeQL manquent. Action GitHub gratuite. Prend en charge Python, JS/TS, Go, PHP, Ruby.
Scanner de sécurité de code alimenté par l'IA qui trouve les vulnérabilités que Semgrep et CodeQL manquent.
Démarrage rapide • Action GitHub • Comparaison • Langages • FAQ
Les outils SAST traditionnels reposent sur la correspondance de motifs et les règles de l'AST. Ils excellent pour détecter les motifs de vulnérabilités connus, mais ils ne peuvent fondamentalement pas raisonner sur l'intention.
Si votre API a 20 points de terminaison et que 19 d'entre eux vérifient l'autorisation avant d'agir sur une ressource, Semgrep n'a aucun moyen de signaler celui qui ne le fait pas – car il n'y a aucun motif à faire correspondre. La vulnérabilité est l'absence d'un motif.
VulnHawk analyse le code avec l'IA et, pour chaque morceau de code examiné, il inclut le code connexe provenant d'autres endroits de votre codebase comme contexte. Cette étape d'enrichissement permet à l'IA de comparer comment des composants similaires gèrent la sécurité – et de repérer celui qui ne le fait pas.
pip install vulnhawk
Choisissez un backend :
# Claude Code CLI – GRATUIT pour les abonnés (recommandé)
vulnhawk scan ./src -b claude-code
# Codex CLI – GRATUIT pour les abonnés ChatGPT Pro/Plus
vulnhawk scan ./src -b codex
# Claude API
export ANTHROPIC_API_KEY=sk-ant-...
vulnhawk scan ./src
# OpenAI API
vulnhawk scan ./src -b openai -m gpt-4o
# Ollama – gratuit, local, totalement privé
vulnhawk scan ./src -b ollama -m llama3.1
Pas de fichiers de configuration. Pas de règles à écrire. Pas de base de données à construire.
Les backends Claude Code et Codex sont gratuits pour les utilisateurs disposant d'abonnements existants. VulnHawk transmet les prompts via votre CLI locale, il n'y a donc aucun coût API supplémentaire.
*Gratuit avec Claude Code, Codex CLI ou Ollama. Les backends API coûtent environ 0,50 $ à 2,00 $ par analyse.
VulnHawk est conçu comme une couche complémentaire, pas un remplacement :
vulnhawk scan ./src # Analyse complète (par défaut)
vulnhawk scan ./src --mode auth # Contournement d'authentification, vérifications manquantes, défauts de session
vulnhawk scan ./src --mode injection # SQLi, injection de commandes, SSTI, XSS
vulnhawk scan ./src --mode secrets # Clés, tokens, mots de passe codés en dur
vulnhawk scan ./src --mode config # Mode débogage, CORS permissif, cookies non sécurisés
vulnhawk scan ./src --mode crypto # Hachage faible, clés codées en dur, mauvais RNG
vulnhawk scan ./src -o json -f results.json # JSON
vulnhawk scan ./src -o sarif -f results.sarif # SARIF (Analyse de code GitHub)
vulnhawk scan ./src -o markdown -f report.md # Rapport Markdown
vulnhawk scan ./src --severity high # Critique + Élevé uniquement
vulnhawk scan ./src --severity info # Tout
Alimentez la sortie de Semgrep, CodeQL ou de tout outil produisant du SARIF dans VulnHawk. Il utilise ces résultats comme contexte supplémentaire pour valider, étendre et enchaîner en vulnérabilités plus profondes.
# Exécutez d'abord Semgrep, puis enrichissez avec VulnHawk
semgrep --config auto ./src -o semgrep.sarif --sarif
vulnhawk scan ./src --sarif-input semgrep.sarif
Ce que cela permet :
vulnhawk info ./src # Prévisualiser les fichiers, morceaux et répartition des langages
VulnHawk s'exécute en tant qu'analyse de base sur votre branche par défaut et de manière incrémentielle sur chaque pull request.
name: VulnHawk Security Scan
on:
push:
branches: [main, master]
pull_request:
permissions:
security-events: write
contents: read
jobs:
vulnhawk:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: momenbasel/vulnhawk@main
with:
target: '.'
backend: 'claude-code'
claude-code-oauth-token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
severity: 'medium'
fail-on-findings: 'true'
Les résultats sont automatiquement téléchargés vers l'onglet Security > Code Scanning de GitHub via SARIF.
steps:
- uses: actions/checkout@v4
- name: Semgrep (analyse rapide par motifs)
uses: returntocorp/semgrep-action@v1
with:
config: auto
generateSarif: true
- name: VulnHawk (analyse IA profonde)
uses: momenbasel/vulnhawk@main
with:
target: '.'
backend: 'claude-code'
claude-code-oauth-token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
sarif-input: 'semgrep.sarif'
Codebase ──> Discover ──> Chunk ──> Enrich ──> Analyze ──> Validate ──> Report
│ │ │ │ │
Respects Functions Related LLM with Dedup +
.gitignore Classes code from security confidence
.vulnhawk- Routes same dir + prompts scoring
ignore Modules auth patterns
L'étape d'enrichissement est le différenciateur principal. Pour chaque morceau de code, VulnHawk inclut :
Cela donne à l'IA le contexte nécessaire pour identifier les incohérences.
Exclure des chemins de l'analyse (syntaxe gitignore) :
generated/
vendor/
third_party/
*.gen.go
| Variable | Description |
|---|---|
CLAUDE_CODE_OAUTH_TOKEN | Authentification CLI Claude Code (gratuit pour les abonnés) |
ANTHROPIC_API_KEY | Clé API Claude |
OPENAI_API_KEY | Clé API OpenAI |
Les abonnements Claude Code (Max à 100-200 $/mois, ou les forfaits Team) incluent une utilisation illimitée de la CLI. VulnHawk appelle claude --print en coulisse, en acheminant les prompts d'analyse via votre abonnement existant. Pas de clé API. Pas de facturation par jeton.
Exécutez claude config get oauth_token sur votre machine locale. Ajoutez la sortie comme secret GitHub Actions nommé CLAUDE_CODE_OAUTH_TOKEN.
Les deux. Les analyses push‑to‑main établissent votre ligne de base de sécurité et remplissent l'onglet Sécurité. Les analyses PR détectent les nouvelles vulnérabilités avant la fusion. La configuration de workflow recommandée gère les deux déclencheurs.
Oui – les morceaux de code sont envoyés au fournisseur LLM configuré (Anthropic ou OpenAI). Pour une analyse totalement privée et déconnectée, utilisez le backend Ollama qui s'exécute entièrement sur votre machine locale.
Non. VulnHawk est une couche complémentaire. Semgrep et CodeQL sont excellents dans ce qu'ils font (correspondance de motifs et suivi de taint). VulnHawk détecte les bogues de logique métier, les lacunes d'authentification et les incohérences que les règles ne peuvent pas exprimer. Utilisez les trois ensemble pour la meilleure couverture.
Oui. VulnHawk inclut un découpage conscient des frameworks pour les deux. Il détecte les définitions de route Route::get() de Laravel, les classes/traits/interfaces PHP, les déclarations de route Rails (get, post, resources) et les classes/modules Ruby. Il extrait également les importations spécifiques au framework (use, require, include).
Vous pouvez fournir à VulnHawk un fichier SARIF produit par n'importe quel autre scanner (Semgrep, CodeQL, Snyk, etc.). VulnHawk utilise ces résultats comme contexte supplémentaire pendant l'analyse – les valide, trouve des problèmes connexes à proximité et construit des chaînes d'attaque multi-étapes reliant les résultats entre les outils.
Voir CONTRIBUTING.md.
git clone https://github.com/momenbasel/vulnhawk.git
cd vulnhawk
uv venv .venv && source .venv/bin/activate
uv pip install -e ".[dev]"
pytest
Si VulnHawk vous est utile, envisagez de parrainer le projet pour soutenir le développement continu.
VulnHawk est construit et maintenu par GreyCore Labs, une société de sécurité offensive constituée aux États-Unis. Vous voulez le même regard sur votre propre produit ?
VulnHawk est disponible en code source sous la Licence VulnHawk.
Gratuit pour tout le monde – les particuliers, les équipes, les startups et les entreprises peuvent utiliser VulnHawk sans frais pour l'analyse de sécurité interne, à condition qu'il soit installé à partir d'un canal de distribution officiel :
Vous ne pouvez pas vendre le logiciel, l'offrir comme service concurrent, ou redistribuer des forks comme produit. Les forks sont autorisés uniquement pour soumettre des pull requests vers ce dépôt. Voir LICENSE pour les conditions complètes.
| Capacité | VulnHawk | Semgrep | CodeQL | Snyk Code | Checkmarx | SonarQube |
|---|
| Méthode de détection | Raisonnement IA | Motifs AST | Flux de données QL | ML + règles | Motifs + flux | Motifs |
| Défauts de logique métier | Oui | Non | Limité | Limité | Limité | Non |
| Contexte inter-fichier | Automatique | Règles personnalisées | Requêtes personnalisées | Partiel | Niveau payant | Limité |
| Complexité de configuration | Zéro config | Configuration de règles | Construction DB + QL | Fichier de config | Complexe | Configuration serveur |
| Règles personnalisées requises | Non | Oui (YAML) | Oui (QL) | Partiel | Oui | Oui |
| Corrections contextuelles | Oui | Génériques | Génériques | Génériques | Génériques | Génériques |
| Mode local / privé | Ollama | Oui | Oui | Non | Non | Auto-hébergé |
| Intégration CI/CD | Action 1 ligne | Action | Action | Action | Plugin | Plugin |
| Entrée SARIF (chaîne d'outils) | Oui | Non | Non | Non | Non | Non |
| Tarification | Gratuit* | Gratuit / Payant | Gratuit / Payant | Gratuit / $$$ | $$$$$ | Gratuit / $$$ |
| Classe de vulnérabilité | Pourquoi les outils basés sur des règles la manquent |
|---|
| Autorisation manquante sur 1 des N points de terminaison | Aucun motif à faire correspondre – le bogue est l'absence d'une vérification |
| IDOR / BOLA | Nécessite de comprendre que l'ID utilisateur dans le JWT doit correspondre à l'ID dans l'URL |
| Manipulation du montant du paiement | Logique métier – le champ de montant ne devrait pas être fiable côté client |
| Validation d'entrée incohérente | 5 gestionnaires nettoient, le 6e ne le fait pas – nécessite une comparaison inter-fichier |
| Mauvaise utilisation des entrées stockées | Entrée sauvegardée en toute sécurité, mais eval() ou SQL brut 3 fichiers plus loin |
| Conditions de concurrence dans les mises à jour d'état | Modifications simultanées du solde sans verrouillage |
| Couche |
|---|
| Outil |
|---|
| Objectif |
|---|
| 1 | Semgrep | Passerelle rapide et déterministe sur les motifs connus de mauvaise qualité |
| 2 | CodeQL | Suivi de taint profond à travers des chaînes d'appel complexes |
| 3 | VulnHawk | Logique métier, lacunes d'authentification, IDOR et incohérences que les règles ne peuvent pas exprimer |
| Backend | Configuration |
|---|---|
| Claude Code (gratuit) |
Obtenez votre token : |
| Codex (gratuit) |
Nécessite |
| Claude API |
|
| OpenAI API |
|
| Langage | Extensions | Détection de framework |
|---|
| Python | .py | Django, Flask, FastAPI |
| JavaScript | .js .jsx | Express, Fastify, Next.js |
| TypeScript | .ts .tsx | Express, NestJS, Fastify |
| Go | .go | gestionnaires net/http |
| Java | .java | Découpage classe/méthode |
| PHP | .php | Routes Laravel, classes, traits, interfaces |
| Ruby | .rb .erb | Routes Rails, classes, modules |
| Backend | Par analyse (~100 fichiers) | Condition |
|---|
| Claude Code CLI | Gratuit | Abonnement Claude Code Max ou Team |
| Codex CLI | Gratuit | Abonnement ChatGPT Pro ou Plus |
| Claude API | ~0,50 $ - 2,00 $ | Crédits API Anthropic |
| OpenAI API | ~1,00 $ - 4,00 $ | Crédits API OpenAI |
| Ollama | Gratuit | Machine locale avec 8 Go+ de VRAM |