Pourquoi la sécurité des agents IA exige des couches
Aucun outil unique n'attrape tout. Un scanner SAST manque les secrets. Un scanner de secrets manque les dépendances vulnérables. Un scanner de dépendances manque la prompt injection dans ta config MCP. C'est pour ça qu'on a construit un workflow de défense en 7 couches — chaque couche rattrape ce que les autres laissent passer.
Voici le workflow qu'on utilise tous les jours. Temps total de mise en place : 5 minutes.
Couche 1 : audit de la config MCP
Avant d'écrire la moindre ligne de code, audite tes configurations de serveurs MCP :
"Scan my MCP configuration for security issues"
Cette commande passe en revue chaque serveur MCP de ton ~/.claude/settings.json pour repérer les motifs de prompt injection, les paramètres exploitables en SSRF et les expositions d'identifiants. À relancer à chaque nouvelle installation de serveur MCP.
Couche 2 : scan des dépendances
Avant de démarrer une session de code, scanne les dépendances du projet :
"Scan this project's dependencies for vulnerabilities"
Zfuzz analyse 10 formats de lockfile contre la base de vulnérabilités OSV.dev. Il détecte les CVE connues dans tout l'arbre de dépendances — y compris les dépendances transitives que npm audit laisse parfois passer.
Couche 3 : détection de secrets
Avant chaque commit, scanne les secrets en dur :
"Scan this project for hardcoded secrets and API keys"
430+ motifs couvrant AWS, GCP, Azure, Stripe, OpenAI, Anthropic, GitHub et des dizaines d'autres. L'analyse d'entropie Shannon attrape les formats de jeton custom que les regex classiques ratent.
Couche 4 : analyse SAST
Au moment de la revue de code, lance l'analyse statique :
"Scan this code for security vulnerabilities"
441 règles SAST avec analyse de taint pour suivre le flux de données depuis les sources non fiables (entrées utilisateur, paramètres HTTP) jusqu'aux sinks dangereux (requêtes SQL, commandes shell, opérations fichier). L'analyse de taint est disponible pour JavaScript/TypeScript et Python.
Couche 5 : threat modeling
Pour chaque grosse fonctionnalité, lance un threat model :
"Threat model this feature using STRIDE"
L'analyse STRIDE identifie les risques Spoofing, Tampering, Repudiation, Information Disclosure, DoS et Elevation of Privilege. Les techniques MITRE ATT&CK rattachent chaque menace à un corpus de connaissance d'attaques réelles.
Couche 6 : garde-fou runtime
Agent Guard apporte une protection runtime pendant que l'agent IA travaille. Il s'accroche à l'exécution des outils et bloque les opérations dangereuses :
# Dans ~/.claude/settings.json
{
"hooks": {
"PreToolUse": [{
"command": "zfuzz guard check --event PreToolUse"
}]
}
}
Sept règles intégrées protègent contre l'injection shell, le SSRF, le path traversal, la fuite de secrets, les commandes dangereuses (rm -rf, DROP TABLE), les abus de rate limiting et les accès fichier hors périmètre projet.
Couche 7 : security gate CI/CD
La dernière couche empêche le code non sûr d'atteindre la production :
# .github/workflows/security.yml
- name: Zfuzz Security Scan
uses: zfuzz-dev/scan-action@v1
with:
fail_on: critical
upload_sarif: true
La GitHub Action lance SAST + SCA + scan de secrets, pousse les findings au format SARIF vers GitHub Code Scanning et poste un commentaire de PR avec le résumé sécurité. Les PR avec findings critiques sont bloquées.
La stack complète
| Couche | Quand | Quoi | Ce qu'on attrape |
|---|---|---|---|
| 1. Audit MCP | À l'installation MCP | scan_mcp_config | Tool poisoning, prompt injection |
| 2. Dépendances | Début de session | scan_dependencies | CVE connues dans les paquets |
| 3. Secrets | Pré-commit | scan_secrets | Identifiants en dur |
| 4. SAST | Revue de code | scan_code | Injections, XSS, bugs d'auth |
| 5. Threat model | Design de feature | threat_model | Risques architecturaux |
| 6. Runtime Guard | En continu | Hooks Agent Guard | Tentatives d'exploitation live |
| 7. CI Gate | Merge de PR | GitHub Action | Tout, comme verrou final |
Démarrez en 30 secondes
Les couches 1 à 5 s'installent en une seule commande. Les couches 6 et 7 demandent 3 minutes de plus :
claude mcp add zfuzz -- npx @zfuzz/mcp



