Comment faire pour que l'IA trouve de vraies vulnérabilités dans le code sans des tonnes de faux positifs
Si vous avez déjà essayé de pointer un LLM sur du code source avec une invite « trouver des vulnérabilités », vous vous souvenez probablement du résultat. Le modèle produit généralement une montagne d'observations théoriques : une validation de liste de contrôle OWASP manquante ici, une autre couche d'assainissement pourrait être ajoutée là, et cette variable est suspicieusement nommée. En pratique, 90 % de ces découvertes s'avèrent être du bruit qui gaspille simplement le temps des développeurs.
L'équipe Cloudflare a rendu open source security-audit-skill. C'est un ensemble d'instructions et de pipeline pour les agents de codage, qu'ils ont utilisé pour construire leur harnais interne d'audit continu des dépôts.
Quelle est la principale problème avec l'audit IA classique
La plupart des analyseurs statiques et des invites de réseaux de neurones simples souffrent de deux problèmes : ils ne vérifient pas l'exploitabilité et hallucinent le contexte. Le réseau de neurones voit une fonction dangereuse mais ne remarque pas que les données d'entrée sont déjà filtrées par trois couches au-dessus.
Cloudflare a adopté l'approche opposée et a construit le skill sur des principes stricts :
- Les rapports ne sont générés que pour ce qui est réellement exploitable. Les phrases comme « théoriquement un attaquant pourrait » sont immédiatement filtrées.
- La personne qui a trouvé le bogue n'a pas le droit de le valider. Un agent indépendant séparé fonctionne en tant qu'avocat du diable pour la vérification.
- L'absence d'une deuxième couche de protection n'est pas considérée comme une vulnérabilité si la première couche bloque fiablement le vecteur d'attaque.
- L'évaluation de la criticité est basée sur l'impact réel, pas sur les correspondances de liste de contrôle formelles.
Comment fonctionne le pipeline en six phases
Au lieu d'une longue invite, l'outil décompose le travail en six étapes séquentielles. Des sous-agents parallèles travaillent à l'intérieur, chacun avec une tâche strictement définie.
Les agents enquêtent sur le projet, définissent les limites de confiance, identifient les points d'entrée et cartographient l'architecture globale. Le résultat est un fichier architecture.md qui sert de carte pour les agents d'attaque.
1. Recon
Les agents enquêtent sur le projet, définissent les limites de confiance, identifient les points d'entrée et cartographient l'architecture globale. Le résultat est un fichier architecture.md qui sert de carte pour les agents d'attaque.
2. Chasse
Plusieurs agents testent la base de code en parallèle selon différents angles. Le projet est divisé en fichiers séparés avec des invites pour différentes classes d'attaques :
- Injections, contrôle d'accès et logique métier.
- Spécificités des protocoles Web, mise en cache et authentification (
WEB-PROTOCOL-AND-AUTH.md). - Menaces côté client comme les injections DOM et la pollution de prototype (
CLIENT-SIDE.md). - Sécurité mémoire et vulnérabilités binaires pour le code natif (
MEMORY-SAFETY-AND-BINARY.md). - Problèmes système LLM : injection de prompt, fuites de contexte et manipulation des appels d'outils (
AI-AND-LLM.md).
Chaque agent de chasse peut générer des processus supplémentaires pour creuser plus profondément dans les chaînes d'appels suspectes.
3. Validation antagoniste
L'étape la plus utile. Des agents frais reçoivent une liste de bogues potentiels et essaient délibérément de prouver qu'une attaque ne fonctionnera pas. Si une protection est en place ou si le vecteur est bloqué par un module voisin, la découverte est impitoyablement rayée.
4. Rapport et sortie structurée
Les fichiers REPORT.md et FINDINGS-DETAIL.md sont générés avec des traces détaillées pour les vulnérabilités de niveau Moyen et plus, ainsi que findings.json. Le JSON structuré est validé par le script validate-findings.cjs basé sur Node.js sans dépendances externes.
5. Vérification indépendante
Contrôle qualité final. Les agents avec un contexte propre vérifient ligne par ligne les affirmations du rapport par rapport au code réel pour éliminer les hallucinations dans les numéros de ligne ou les noms de fonctions.
Installation et exécution
Le package se connecte via Skills CLI à tout agent de codage qui prend en charge les appels d'outils et les sous-agents parallèles.
Installation du projet :
Installation globale pour tout le système :
Après cela, il suffit d'ouvrir la base de code dans votre agent et d'écrire en texte brut :
ou spécifier un répertoire spécifique et un chemin de rapport :
Détail intéressant : les exécutions peuvent être accumulées. Les auteurs ont constaté lors des tests qu'une exécution trouve environ la moitié des problèmes réels en raison de l'aléatoire dans les chemins de traversée. Le skill peut lire les findings.json précédents, ignorer les bogues déjà connus et explorer les branches de code non parcourues.
À qui cela s'adresse-t-il
L'outil nécessite un modèle capable avec support des appels d'outils parallèles, donc l'exécuter sur des configurations locales faibles ne fonctionnera probablement pas.
Mais si vous utilisez déjà des agents pour le refactoring ou l'écriture de tests, ajouter un rôle de auditeur de sécurité méticuleux est une excellente idée avant une version ou une fusion majeure. L'approche de разделения des rôles entre « attaquant » et « sceptique » réduit заметно les efforts manuels liés aux faux positifs.
Projets similaires