Tu connais les familles, reste à choisir l'outil

Le billet précédent sur l'OWASP Top 10 et l'AppSec répondait à une question de principe : que font le SAST, le DAST et le SCA, et pourquoi les trois plutôt qu'un seul. La question suivante arrive vite, en général devant un fichier de pipeline vide : quel outil, concrètement, et branché où.

Ce billet est le catalogue. Pas un classement du meilleur outil, un rangement par famille avec ce que chaque outil regarde, où il tourne, et ce qu'il ne fera pas pour toi.

Le découpage suit la taxonomie du guide d'analyse de code de Stéphane Robert, qui range le sujet en SAST, DAST, SCA et fuzzing. J'emprunte sa grille parce qu'elle est stable et qu'elle colle à la façon dont les outils se branchent réellement dans une chaîne CI/CD. Les commentaires et les arbitrages qui suivent sont les miens.

Quatre familles, donc, plus une cinquième qui les recoupe toutes : les conteneurs. Un conteneur embarque du code, des dépendances, une configuration et parfois un secret oublié, ce qui en fait le point de rencontre des quatre autres analyses.

Un scanner ne vaut que par l'endroit où il tourne. Le meilleur SAST du marché branché sur une pull request que personne ne lit produit exactement zéro sécurité.

Le tout s'inscrit dans la démarche décrite dans Qu'est-ce que le DevSecOps ? : les contrôles sont automatisés, précoces, et leurs résultats remontent là où la décision se prend.

Deux sujets restent hors périmètre ici : les agents d'exécution (RASP et IAST, qui instrumentent l'application en cours de fonctionnement) et la chaîne de confiance des artefacts (signature, attestations de provenance, cadre SLSA), qui méritent leur propre billet.


Comment lire ce panorama

Chaque tableau suit les mêmes colonnes, et chacune répond à une question que tu te poses avant d'installer quoi que ce soit.

Licence reste volontairement grossière : Open source, Freemium ou Commercial. Aucun prix, aucun quota, parce que ces valeurs changent plus vite qu'un billet de blog. Freemium signifie qu'une version utilisable existe sans payer, avec des limites qui apparaissent à l'usage.

Cibles dit ce que l'outil sait lire : des langages, des formats de fichiers, des images, un schéma d'API. C'est le premier filtre. Un scanner excellent qui ne parle pas ta stack ne sert à rien.

Intégration dit où il tourne : en pre-commit sur le poste, en CI, dans l'IDE, dans le registre d'images, en service hébergé. C'est le critère que l'on sous-estime le plus, alors que c'est lui qui détermine si l'outil sera utilisé ou contourné.

Point fort ou limite donne la raison de le choisir, ou la raison de ne pas s'en contenter. Court, parce qu'un tableau n'est pas une fiche produit.

Le placement dans la chaîne compte plus que la marque. Un outil qui rend son verdict trois heures après le commit ne changera pas le comportement de l'équipe.

Le schéma ci-dessous donne le calendrier d'exécution. Il ne décrit pas un pipeline complet, seulement les cinq moments où une famille d'analyse a du sens.

flowchart LR pc["pre-commit
secrets, SAST local"] ci["CI
SAST code + IaC, SCA"] reg["Registre
scan d'image"] rec["Recette
DAST"] cont["En continu
fuzzing, veille SCA"] pc --> ci --> reg --> rec --> cont cont -- "nouvelle CVE ou crash" --> pc classDef secrets fill:#f5f2ec,stroke:#8a4d16,color:#1a1a1a classDef statique fill:#d89253,stroke:#8a4d16,color:#1a1a1a classDef image fill:#ede9e1,stroke:#b5651d,color:#1a1a1a classDef dynamique fill:#b5651d,stroke:#5f5e5a,color:#f5f2ec classDef continu fill:#a0413e,stroke:#5f5e5a,color:#f5f2ec class pc secrets class ci statique class reg image class rec dynamique class cont continu

La flèche de retour est la partie que l'on oublie en dessinant un pipeline. Une CVE publiée trois semaines après la mise en production, ou un crash trouvé par un fuzzer qui tourne la nuit, doivent revenir au début de la chaîne. Sinon tu as un pipeline de conformité, pas un dispositif de sécurité.


SAST : trois domaines, pas un seul

Le SAST analyse sans exécuter. Il lit des fichiers, en construit une représentation, et cherche des motifs dangereux ou des chemins de données suspects entre une entrée non fiable et une opération sensible.

Réduire le SAST au code applicatif est l'erreur la plus fréquente. Dans un dépôt moderne, trois matières distinctes se lisent à froid : le code, la description de l'infrastructure, et les secrets qui traînent dans les deux.

Le SAST voit tout ce qui est écrit et rien de ce qui se passe. Il signale des chemins théoriquement dangereux, à toi de dire lesquels sont réellement atteignables.

Code applicatif

Les généralistes couvrent beaucoup de langages avec un moteur unique. C'est le socle, celui qui tourne sur toute la base de code.

Outil Licence Cibles Intégration Point fort ou limite
Semgrep Freemium Une trentaine de langages CLI, CI, pre-commit, IDE Règles custom lisibles, écrites dans la syntaxe du langage cible, mais l'analyse inter-fichiers relève de l'offre payante.
SonarQube Freemium Multi-langage, qualité et sécurité Serveur, CI, extension IDE L'édition Community laisse de côté les règles les plus avancées, mais offre déjà une vue unique sur la dette technique et les failles.
CodeQL Freemium Principaux langages compilés et interprétés GitHub Actions, CLI Analyse sémantique interrogeable comme une base de données, très expressive. Coûteuse en temps de build et en apprentissage.
Bearer Freemium Code applicatif, orienté flux de données sensibles CLI, CI Cartographie les données personnelles qui traversent le code. Couverture de langages plus étroite que les généralistes.
Snyk Code Freemium Multi-langage IDE, CLI, CI, SCM Retour rapide directement dans l'éditeur, au prix d'un moteur propriétaire dont les règles se modifient peu.
Checkmarx Commercial Multi-langage CI, SCM, IDE Couverture large et support entreprise. Paramétrage et tri des résultats coûteux à mettre en place.
Veracode Commercial Multi-langage, analyse de binaires Service d'analyse, CI Sait analyser un artefact compilé sans accès au code source. Boucle de retour plus longue.
GitLab SAST Freemium Analyseurs par langage Pipeline GitLab Aucune glu à écrire si tu es déjà sur GitLab, mais la gestion des vulnérabilités demande l'offre supérieure.
GitHub Advanced Security Freemium Dépôts GitHub Actions, onglet Security Code, secrets et dépendances remontent au même endroit. Gratuit sur les dépôts publics, payant sur les privés.

Trois noms manquent à cette liste et se croisent surtout dans les grands comptes, l'embarqué et l'industrie : Fortify d'OpenText, Coverity et Klocwork. Analyses profondes, licences lourdes, et une intégration CI qui demande du travail.

Les spécialisés, eux, ne parlent qu'un langage, mais ils en connaissent les idiomes et les pièges. Ils coûtent quelques secondes de CI et se posent volontiers en complément d'un généraliste.

Outil Licence Cibles Intégration Point fort ou limite
Bandit Open source Python CLI, CI, pre-commit Rapide, règles idiomatiques Python. Reste une détection de motifs, sans suivi de flux profond.
Brakeman Open source Ruby on Rails CLI, CI Connaît les conventions Rails et les analyse finement. Ailleurs, aucun intérêt.
gosec Open source Go CLI, CI S'installe et tourne en une ligne dans un projet Go. Couverture limitée à son jeu de règles.
SpotBugs + Find Security Bugs Open source Java et bytecode JVM Maven, Gradle, CI Analyse le bytecode, donc voit le code réellement produit. Le volet sécurité vient du plugin, pas du moteur seul.
PMD Open source Java, Apex, JavaScript et autres Maven, Gradle, CLI Excellent pour écrire des règles maison, mais son catalogue de sécurité en propre reste mince.
ESLint et son plugin security Open source JavaScript, TypeScript Build front, pre-commit Déjà présent dans la plupart des projets front. Détection superficielle, à ne pas confondre avec un vrai SAST.

Côté PHP, Psalm propose une analyse de teinte pour suivre une entrée non fiable jusqu'à une opération sensible. PHPStan reste centré sur le typage, ce qui élimine déjà une classe entière de bugs mais ne remplace pas un scanner de sécurité.

Infrastructure as Code

Un bucket public, un groupe de sécurité ouvert sur le monde, un conteneur qui tourne en root : ces failles ne sont pas dans le code applicatif, elles sont dans les fichiers qui décrivent la plateforme. Ce sont des fichiers texte, donc du SAST.

Outil Licence Cibles Intégration Point fort ou limite
Checkov Open source Terraform, CloudFormation, Kubernetes, Helm, ARM, Dockerfile CLI, CI, pre-commit La couverture de formats la plus large, politiques custom en Python ou YAML. Volume d'alertes élevé au premier lancement.
KICS Open source Terraform, Kubernetes, Docker, Ansible, CloudFormation CLI, CI Requêtes écrites en Rego, catalogue fourni. Sorties verbeuses à filtrer.
tfsec Open source Terraform CLI, CI Longtemps la référence Terraform. Aqua a depuis basculé l'effort d'ingénierie sur Trivy, qui a repris son moteur d'analyse.
Terrascan Open source Terraform, Kubernetes, Helm, Kustomize CLI, CI, admission controller Les mêmes politiques Rego servent en CI et en garde-fou à l'admission du cluster. Dépôt archivé par Tenable, plus de maintenance.
Trivy en mode config Open source IaC, Dockerfile, manifests Kubernetes CLI, CI, opérateur Kubernetes Un seul binaire pour l'IaC, les images et les dépendances. Moins fin qu'un outil dédié sur les cas tordus.
kube-bench Open source Nœuds et clusters Kubernetes Job dans le cluster Vérifie le CIS Kubernetes Benchmark. Cible la configuration du cluster, pas tes manifests.
Kubescape Open source Manifests et clusters Kubernetes CLI, CI, opérateur Contrôles organisés par référentiels (CIS, NSA, MITRE ATT&CK).
Dockle Open source Images de conteneurs CLI, CI Contrôle les bonnes pratiques de construction d'image. Ne cherche aucune CVE.
hadolint Open source Dockerfile CLI, CI, pre-commit Lint du Dockerfile avec ShellCheck intégré sur les commandes RUN. Ne voit que le fichier, jamais l'image produite.

Secrets

Une clé d'API commitée est un incident, pas une alerte. La détection se joue à deux endroits : sur le poste avant le commit, et en CI sur l'historique complet, parce qu'un secret retiré au commit suivant reste lisible dans les objets Git.

Outil Licence Cibles Intégration Point fort ou limite
Gitleaks Open source Dépôts Git, historique, fichiers pre-commit, CI, CLI Rapide, règles TOML personnalisables, mais bruyant tant que l'allowlist n'est pas entretenue.
TruffleHog Open source Git, systèmes de fichiers, images, stockages objet CLI, CI Vérifie si le secret trouvé est encore actif, de quoi trier par ordre d'urgence. Analyse d'historique longue sur les gros dépôts.
detect-secrets Open source Fichiers et dépôts pre-commit, CI Fige les faux positifs connus dans une baseline versionnée, qu'il faut ensuite maintenir.
git-secrets Open source Commits Git hook pre-commit Très simple à poser, orienté clés AWS. Peu de règles au-delà.
GitGuardian Freemium Dépôts, CI, périmètre SaaS SCM, CI, agent Détection et suivi des incidents dans un tableau de bord dédié. Service externe à intégrer et à autoriser.
Talisman Open source Commits Git hook pre-commit ou pre-push Se pose globalement sur le poste, tous dépôts confondus. Détection basique.

Détecter ne suffit pas. Un secret trouvé dans l'historique doit être révoqué et remplacé, jamais simplement supprimé du fichier. Et si des secrets réapparaissent régulièrement dans le code, c'est qu'il manque un coffre en amont.

Côté stockage, Vault centralise et distribue des identifiants dynamiques, SOPS chiffre des fichiers de configuration versionnés, Sealed Secrets permet de committer un secret Kubernetes sans le révéler, et External Secrets synchronise un coffre externe vers le cluster.

Quatre critères suffisent à trancher entre tous ces outils.

  • Langages et formats couverts. Un scanner qui ignore la moitié de ton dépôt donne un faux sentiment de couverture. Vérifie la liste avant le tableau comparatif.
  • Règles custom et faux positifs. Le taux de détection annoncé compte moins que ta capacité à écrire une règle métier et à taire une alerte de façon durable et tracée.
  • pre-commit ou pull request. Le pre-commit donne un retour en secondes mais reste contournable. La pull request est le point de contrôle qui compte, parce qu'il est visible et opposable.
  • Stratégie de blocage. Bloque sur Critical et High, alerte sur Medium, ignore le reste au démarrage. Un pipeline qui casse sur tout est désactivé en deux semaines.

DAST : trois types de scanners

Le DAST attaque l'application en fonctionnement, sans regarder son code. Il envoie des requêtes malformées, observe les réponses, et conclut. Trois profils d'outils cohabitent sous ce sigle, et ils ne servent pas au même usage.

Les scanners automatisés explorent l'application puis rejouent des attaques génériques sur ce qu'ils ont trouvé.

Outil Licence Cibles Intégration Point fort ou limite
OWASP ZAP Open source Web, API Docker, CI, proxy, interface graphique Le plus complet côté libre, avec des modes taillés pour la CI. La configuration de l'authentification demande de la patience.
Burp Suite Freemium Web, API Poste de travail, extensions La référence du test manuel et de l'exploration fine. L'édition Community n'inclut pas le scanner automatisé.
Dastardly Freemium Applications web en CI Conteneur dans un job CI Scan court, pensé pour ne pas ralentir un pipeline, au prix d'un sous-ensemble de contrôles assumé.
Nikto Open source Serveurs web CLI, CI Repère fichiers oubliés et configurations connues. Ne comprend pas les applications JavaScript modernes.
Wapiti Open source Web CLI Léger, sans infrastructure à monter. Couverture plus étroite que ZAP.
Acunetix Commercial Web, API Scanner hébergé ou installé Exploration solide des applications riches. Licence par cible.
Invicti Commercial Web, API SaaS ou installé, CI Revendique une validation automatique des résultats pour réduire le tri manuel.
StackHawk Freemium Web, API CI, configuration par application Construit sur ZAP, avec une configuration versionnée à côté du code.
Rapid7 InsightAppSec Commercial Web SaaS Cohérent si tu utilises déjà la plateforme Insight.
Qualys WAS Commercial Web, API SaaS Se raccorde à l'inventaire d'actifs Qualys.
Detectify Commercial Web, surface exposée SaaS Orienté découverte et surveillance de la surface externe.
Probely Commercial Web, API SaaS, CI Pensé pour être piloté par les équipes de développement via API.

Tenable Web App Scanning complète la liste côté suites d'entreprise, dans la même logique d'intégration à un inventaire existant.

Les scanners à templates fonctionnent autrement : ils ne raisonnent pas, ils rejouent une bibliothèque de signatures.

Outil Licence Cibles Intégration Point fort ou limite
Nuclei Open source Web, API, réseau, services cloud CLI, CI Catalogue de templates YAML communautaire, très réactif après une CVE publique. Détecte du connu, ne découvre rien d'inédit.
Nmap et ses scripts NSE Open source Hôtes, ports, services CLI Va au-delà du port ouvert et interroge le service. Ce n'est pas un scanner applicatif.
sqlmap Open source Points d'injection SQL CLI Exploitation approfondie d'une injection identifiée. Outil offensif, à n'utiliser que sur une cible autorisée.

Les proxies d'interception, enfin, ne scannent pas : ils te placent au milieu du trafic pour comprendre et rejouer.

Outil Licence Cibles Intégration Point fort ou limite
Burp Suite Freemium Trafic HTTP et HTTPS Proxy local, navigateur intégré L'outil de travail du test manuel, avec historique et rejeu.
mitmproxy Open source HTTP, HTTPS, WebSocket CLI, interface web, scripts Python Scriptable, parfait pour modifier du trafic à la volée. Ne cherche aucune vulnérabilité tout seul.
OWASP ZAP en mode proxy Open source Trafic HTTP et HTTPS Proxy, navigateur Sert à cartographier l'application avant de lancer un scan actif.

Trois réglages décident du résultat. Le mode d'abord : un scan baseline se contente de parcourir l'application et de signaler les problèmes passifs en quelques minutes, un scan d'API part d'une définition OpenAPI, un scan complet lance les attaques actives et prend des heures. Commence par le baseline en CI, garde le complet pour une exécution nocturne.

L'authentification ensuite. Un scanner non authentifié ne voit que les pages publiques, soit la partie la moins intéressante. Fournir un jeton valide et un moyen de le renouveler est ce qui sépare un rapport décoratif d'un rapport utile.

Les exclusions enfin. Sans liste noire, le scanner trouvera le bouton de déconnexion et perdra sa session, ou déclenchera un endpoint destructeur. Excluer /logout, les suppressions en masse et les envois de mails fait partie de la configuration initiale.

docker run -v $(pwd):/zap/wrk/:rw -t ghcr.io/zaproxy/zaproxy:stable \
  zap-baseline.py -t https://recette.exemple.internal -r rapport.html
Un DAST ne trouve que ce qu'il atteint. S'il ne sait pas s'authentifier ni parcourir ton application, son rapport vide ne veut pas dire que tout va bien.

Et une règle sans exception : jamais sur la production. Un scan actif crée des comptes, remplit des formulaires, déclenche des traitements. Il s'exécute sur une recette dont les données sont jetables.


SCA : inventorier avant de scanner

Le SCA répond à une question simple qui a une réponse difficile : qu'est-ce que mon application embarque exactement. Tout le reste, la corrélation avec les bases de failles, le calcul de sévérité, la remédiation, découle de cet inventaire.

Les scanners en ligne de commande sont le point d'entrée. Ils lisent un fichier de verrouillage ou un arbre de dépendances, et le confrontent à une base de vulnérabilités.

Outil Licence Cibles Intégration Point fort ou limite
Trivy Open source Dépendances, images, IaC, secrets, SBOM CLI, CI, opérateur Kubernetes Couvre presque tout en un binaire sans dépendance. La largeur se paie en finesse sur certains écosystèmes.
Grype Open source Dépendances, images, SBOM CLI, CI Se combine avec Syft pour scanner un SBOM plutôt que le projet. Aucun suivi dans le temps.
OWASP Dependency-Check Open source Java, .NET et autres via analyseurs CLI, Maven, Gradle, CI Projet historique, adossé à la NVD. Base à synchroniser et faux positifs liés à la correspondance des identifiants.
OSV-Scanner Open source Nombreux écosystèmes via la base OSV CLI, CI Données précises et versionnées par écosystème, sur un périmètre assumé : les dépendances, rien d'autre.
npm audit Open source Écosystème npm CLI, CI Déjà installé, zéro configuration. Beaucoup de bruit sur les dépendances de développement.
pip-audit Open source Python CLI, CI Maintenu par la PyPA, aligné sur PyPI et OSV. Ne couvre que Python.
cargo-audit Open source Rust CLI, CI Adossé à la base RustSec, très propre. Ne couvre que Rust.

Un scanner CLI dit ce qui est vulnérable aujourd'hui, au moment où il tourne. Une plateforme, elle, garde l'inventaire et le réévalue quand une nouvelle faille est publiée. C'est le rôle de Dependency-Track, qui ingère des SBOM au format CycloneDX et sait donc te dire, sans relancer un build, quels projets embarquent le composant qui vient d'exploser.

syft dir:. -o cyclonedx-json > sbom.json
grype sbom:sbom.json --fail-on high

Les suites commerciales ajoutent la remédiation guidée, le volet licences et le suivi de conformité.

Outil Licence Cibles Intégration Point fort ou limite
Snyk Freemium Dépendances, conteneurs, IaC, code CLI, CI, SCM, IDE Couverture large et expérience développeur soignée. Quotas serrés hors abonnement.
Mend Commercial Dépendances, licences CI, SCM Correctifs proposés automatiquement et gestion des licences.
Black Duck Commercial Dépendances, licences, binaires CI, build Référence de l'audit de conformité open source.
Sonatype Commercial Dépendances, dépôts d'artefacts Dépôt interne, CI Bloque les composants au niveau du dépôt, avant même le build.
JFrog Xray Commercial Artefacts, images, dépendances Artifactory, CI Analyse récursive des artefacts déjà stockés.
FOSSA Commercial Licences et dépendances CI, SCM Orienté conformité et obligations de licence.
Endor Labs Commercial Dépendances, atteignabilité CI, SCM Écarte les CVE présentes mais jamais appelées par ton code.
Socket Freemium Paquets npm, PyPI et autres Application SCM, CI Cherche les comportements suspects d'un paquet plutôt que les seules CVE connues.

Deux outils sont souvent rangés ici par erreur : Dependabot et Renovate. Ils ne scannent pas, ils mettent à jour. Ils ouvrent une pull request quand une version plus récente existe, ce qui règle une bonne part du problème sans jamais produire d'inventaire. Un SCA détecte, un updater corrige, les deux sont complémentaires.

Reste la question de l'inventaire lui-même. Syft génère un SBOM à partir d'un répertoire ou d'une image, au format CycloneDX ou SPDX. Le premier porte nativement des informations de vulnérabilité et de VEX, le second est un standard normalisé très présent côté conformité.

VEX sert à dire « cette CVE est présente mais pas exploitable chez nous », avec une justification tracée. Sans ce mécanisme, une équipe finit par ignorer un rapport dont l'essentiel des lignes est hors sujet.

Un dernier point structure tout le reste : la différence entre dépendances directes et transitives. Tu déclares une quinzaine de bibliothèques, ton node_modules en contient mille. La quasi-totalité des alertes SCA porte sur des composants que tu n'as jamais choisis, souvent tirés à trois niveaux de profondeur. D'où l'importance de savoir remonter la chaîne pour identifier quelle dépendance directe mettre à jour.


Fuzzing : ni SAST ni DAST

Le fuzzing occupe une case à part. Il exécute le code, comme un DAST, mais il vise une fonction ou un parseur plutôt qu'une URL, et il génère lui-même ses entrées au lieu de rejouer un catalogue. Son terrain de prédilection : tout ce qui lit un format binaire, un protocole ou une entrée non structurée.

Famille Principe Exemple
Coverage-guided Le binaire est instrumenté, et le fuzzer conserve les entrées qui font découvrir de nouveaux chemins d'exécution AFL++, libFuzzer
Black-box Aucune visibilité sur l'intérieur, on envoie du trafic sur une interface et on observe les réactions boofuzz sur un protocole réseau
Mutation On part d'un corpus d'entrées valides que l'on altère progressivement AFL++ alimenté par un corpus de fichiers réels
Génération ou structure-aware Les entrées sont construites depuis une grammaire ou un schéma, donc valides par construction Schemathesis à partir d'un schéma OpenAPI

La distinction compte au moment de choisir. Un fuzzer coverage-guided finit par atteindre les branches profondes d'un parseur, mais il lui faut une cible instrumentable. Un fuzzer structure-aware franchit d'emblée les validations d'entrée, ce qui le rend bien plus efficace sur une API qui rejette d'emblée les requêtes aléatoires.

Outil Licence Cibles Intégration Point fort ou limite
libFuzzer Open source C et C++ compilés avec Clang Build LLVM Fuzzing dans le processus, donc très rapide. La documentation LLVM le décrit en mode maintenance.
AFL++ Open source Binaires natifs, avec ou sans source CLI, conteneur Fork communautaire actif d'AFL, riche en modes et en instrumentations. La prise en main se mérite.
honggfuzz Open source C, C++, binaires CLI Bon rendement sur cible native, mode persistant efficace.
atheris Open source Python et extensions natives Script de fuzz, CI Porte libFuzzer sur Python. Surtout pertinent sur les fonctions de parsing.
Fuzzing natif Go Open source Go go test Intégré à la chaîne d'outils standard, corpus versionné dans le dépôt. Le coût d'entrée le plus bas de la liste.
Jazzer Open source JVM (Java, Kotlin) JUnit, CLI Fuzzing coverage-guided sur la JVM, avec des détecteurs de bugs applicatifs.
cargo-fuzz Open source Rust Cargo Branche libFuzzer sur un projet Rust en quelques commandes. Demande la toolchain nightly.
ASan et UBSan Open source C, C++ Options de compilation Transforment une corruption mémoire silencieuse en crash net et localisé. Coût important en performance.
OSS-Fuzz Open source Projets open source éligibles Intégration hébergée Fuzzing continu offert aux projets acceptés, avec remontée automatique des crashs.
ClusterFuzz Open source Infrastructure de fuzzing Déploiement dédié Le moteur derrière OSS-Fuzz, déployable en interne. Lourd à opérer.
Schemathesis Open source API décrites en OpenAPI ou GraphQL CLI, pytest, CI Génère les cas depuis le schéma et vérifie que les réponses le respectent.
RESTler Open source API REST avec spécification OpenAPI CLI Fuzzing avec état, enchaîne les requêtes pour atteindre des scénarios profonds. Mise en route exigeante.
boofuzz Open source Protocoles réseau Scripts Python Successeur de Sulley, adapté aux protocoles maison et à l'embarqué.

Les sanitizers méritent une mention à part : sans eux, un fuzzer trouve une entrée qui plante, ou pire, une entrée qui corrompt la mémoire sans rien signaler. Avec eux, chaque anomalie devient un rapport exploitable.

Le fuzzing prouve la présence de bugs, jamais leur absence. Une campagne sans crash signifie que le fuzzer n'a rien trouvé dans le temps qui lui a été donné, pas que le code est sûr.

Une campagne se juge donc sur la durée, la qualité du corpus initial et la couverture atteinte. C'est ce qui explique que le fuzzing tourne en continu plutôt qu'à chaque commit. Le contrôle Fuzzing d'OpenSSF Scorecard vérifie d'ailleurs simplement qu'un projet en fait, signe qu'il s'agit désormais d'un critère de maturité et non d'une curiosité de chercheur.


Conteneurs : la famille transverse

Une image de conteneur est un empilement : une distribution de base, ses paquets système, tes dépendances applicatives, ton code, et une configuration d'exécution. Chaque couche relève d'une famille d'analyse déjà vue, d'où le statut particulier de cette catégorie.

Outil Licence Cibles Intégration Point fort ou limite
Trivy Open source Paquets système et dépendances applicatives d'une image CLI, CI, opérateur Kubernetes Le plus simple à mettre en place, résultats immédiats.
Grype Open source Images et SBOM CLI, CI Se combine avec Syft pour séparer inventaire et analyse.
Clair Open source Images stockées dans un registre Service, API Conçu comme un service d'analyse de registre. Demande à être opéré.
Docker Scout Freemium Images Docker CLI, Docker Hub, CI Intégré à l'outillage Docker, avec suggestions d'image de base plus saine.
Snyk Container Freemium Images, Dockerfile CLI, CI, registre Relie la CVE à la ligne du Dockerfile qui l'introduit.
Anchore Commercial Images, SBOM, politiques Service, CI Volet politique et conformité au-dessus de Syft et Grype.

Le registre est l'endroit le plus rentable pour scanner : toutes les images y passent, y compris celles construites hors de ta CI. Harbor intègre nativement cette analyse et sait refuser la récupération d'une image dont la sévérité dépasse un seuil, ce qui transforme le rapport en garde-fou effectif.

La configuration de construction, elle, relève des outils déjà cités côté IaC : hadolint sur le Dockerfile, Dockle sur l'image produite. Les deux répondent à des questions différentes, l'un sur ce que tu as écrit, l'autre sur ce que tu as obtenu.

Côté plateformes, Aqua, Sysdig, Prisma Cloud et Wiz couvrent la chaîne complète, du scan d'image à la posture du cluster et des comptes cloud. Elles s'adressent à des parcs où le nombre d'images rend le suivi manuel impossible.

Scanner une image ne dit rien de ce qu'elle fait une fois démarrée. Un conteneur sans CVE peut très bien lancer un shell inattendu à trois heures du matin.

Cette surveillance du comportement à l'exécution est un autre métier, celui de Falco et des outils de détection runtime, hors périmètre de ce panorama.


Plateformes ASPM : tout agréger

Une fois les familles précédentes en place, un nouveau problème apparaît : sept outils, sept formats de rapport, sept listes de vulnérabilités qui se recoupent partiellement, et aucune vue d'ensemble. C'est le créneau de l'ASPM (Application Security Posture Management) : agréger, dédupliquer, prioriser et suivre la correction.

Outil Licence Cibles Intégration Point fort ou limite
OX Security Freemium Code, dépendances, secrets, IaC, SBOM, chaîne d'approvisionnement SCM, CI, cloud Suit une faille du code jusqu'au runtime, avec des modules distincts pour le code, le cloud, le code généré par IA (OX VibeSec) et le pentest agentique.
GitHub Advanced Security Freemium Dépôts GitHub Actions, onglet Security Code scanning, secrets et dépendances au même endroit, sans intégration à écrire. Périmètre limité à GitHub.
GitLab Ultimate Commercial Dépôts et pipelines GitLab Pipeline natif Tableau de bord de vulnérabilités unifié pour tous les analyseurs GitLab.
Snyk Freemium Code, dépendances, conteneurs, IaC CLI, CI, SCM, IDE Couverture des quatre familles avec une seule intégration.
Checkmarx One Commercial Code, dépendances, API, IaC CI, SCM Suite complète issue d'un éditeur SAST historique.
Veracode Commercial Code, binaires, dépendances Service d'analyse, CI Analyse d'artefacts compilés et suivi de conformité.
DefectDojo Open source Rapports de dizaines de scanners Import de rapports, API L'agrégateur libre de référence, sans dépendre d'un éditeur. À héberger et à alimenter toi-même.

Cycode, Apiiro et ArmorCode occupent le même segment, sur la même promesse d'agrégation et de priorisation. Je n'ai pas de retour d'usage à en donner.

Une plateforme ASPM remplace la glu entre les outils, pas les outils eux-mêmes. Sous le capot, ce sont toujours un SAST, un SCA et un scanner d'images qui produisent les résultats.

Le critère de décision est prosaïque : si tu passes plus de temps à recoller des rapports qu'à corriger des failles, la plateforme se justifie. Avant ce seuil, DefectDojo et un tableur suffisent souvent.


Ouverture : l'IA entre dans la chaîne

Trois évolutions récentes touchent directement l'outillage décrit plus haut. Aucune ne remplace une famille existante, toutes en déplacent l'usage.

L'IA ne supprime pas les faux positifs, elle en change la nature. Une alerte fausse coûte cinq minutes de lecture, un correctif faux entre en production.

Les scanners assistés par IA

L'assistance porte sur les deux tâches les plus ingrates de l'AppSec : trier des alertes et écrire le correctif.

Outil Licence Cibles Intégration Point fort ou limite
GitHub Copilot Autofix Freemium Alertes de code scanning Pull request GitHub Propose un correctif directement dans la PR, avec le contexte de l'alerte. La documentation insiste sur la revue humaine obligatoire.
Snyk DeepCode AI Freemium Code applicatif IDE, CLI, CI Correctifs suggérés à partir des motifs appris sur le code corrigé ailleurs.
OX VibeSec Commercial Code généré par IA Plateforme OX Cible spécifiquement le code produit par les assistants de codage.

Semgrep Assistant et SonarQube AI CodeFix jouent sur le même terrain, respectivement pour le tri des résultats et la proposition de correctif dans l'interface de l'outil.

Le déplacement est net : le travail du relecteur glisse de « lire les alertes » à « valider les correctifs proposés ». Le second exercice est plus rapide mais plus dangereux, parce qu'un correctif plausible et faux passe plus facilement qu'une alerte incompréhensible.

MCP : brancher les scanners sur les agents

Le Model Context Protocol est un protocole ouvert qui standardise la façon dont un modèle accède à des outils et à des données externes, via des serveurs déclarés côté client. Deux mouvements opposés en découlent côté sécurité.

Outil Licence Cibles Intégration Point fort ou limite
Semgrep MCP Open source Code analysé par Semgrep Serveur MCP Un agent de code peut lancer une analyse et lire ses résultats sans quitter la conversation.
Trivy MCP Open source Dépendances, images, IaC Serveur MCP Même logique côté SCA et conteneurs.
Snyk Agent Scan, ex mcp-scan d'Invariant Labs Open source Serveurs MCP eux-mêmes CLI Détecte le tool poisoning, l'injection de prompt et le tool shadowing dans les descriptions d'outils exposées.

Le second mouvement mérite qu'on s'y arrête. Un serveur MCP installé sur ton poste ou dans ton agent est du code tiers qui reçoit du contexte, obtient des jetons et exécute des actions. C'est un point d'entrée de chaîne d'approvisionnement, au même titre qu'un paquet npm, avec une surface d'attaque particulière : la description d'un outil est lue par le modèle, donc elle peut contenir des instructions.

La discipline à appliquer est celle que tu appliques déjà aux dépendances. Épingler les versions, vérifier l'origine, scanner les secrets exposés dans la configuration, et relire ce qu'un serveur déclare avant de l'autoriser.

Tester les LLM et les agents

Quand ton application expose un modèle, les familles classiques ne couvrent plus le risque principal. Un prompt système contourné ne se voit ni dans le SAST ni dans le SCA.

Le OWASP Top 10 for LLM Applications sert de carte des risques, exactement comme le Top 10 web sert de carte pour une API. Les outils ci-dessous en sont le pendant outillé.

Outil Licence Cibles Intégration Point fort ou limite
garak Open source LLM et points d'accès de génération CLI, CI Batterie de sondes sur l'injection de prompt, le contournement de garde-fous et la fuite de données.
promptfoo Open source LLM, agents, serveurs MCP CLI, CI Évaluation et red-teaming pilotés par fichier de configuration, avec un proxy pour observer les échanges MCP.
PyRIT Open source LLM et systèmes génératifs Bibliothèque Python Cadre d'automatisation du red-teaming, orienté équipes offensives.
LLM Guard Open source Entrées et sorties de LLM Bibliothèque Python Garde-fous à l'exécution (filtrage, anonymisation), donc il protège plus qu'il ne teste. Dépôt passé en archive publique.
Purple Llama Open source Modèles et garde-fous Bibliothèques et jeux d'évaluation Regroupe des évaluations de risque cyber et des classificateurs de garde-fou.

La bonne façon de les situer : ce sont les DAST des applications IA. Ils attaquent un système en fonctionnement, depuis l'extérieur, sans rien savoir de ses poids ni de son prompt. Et comme un DAST, ils ne prouvent rien, ils explorent.


Quelle combinaison selon ton contexte

Personne n'installe trente outils. La bonne question est celle du premier lot, cohérent et tenable, quitte à l'étendre ensuite.

Contexte Combinaison
Solo ou homelab Semgrep et Gitleaks en pre-commit, Trivy sur les images et les dépendances, ZAP en mode baseline sur la recette. Le fuzzing natif Go ou atheris si tu publies une bibliothèque, promptfoo si tu exposes un LLM ou un serveur MCP.
PME SonarQube Community pour le code, Checkov sur l'IaC, Dependency-Track alimenté par un SBOM à chaque build, Gitleaks en CI, Harbor avec Trivy au registre, ZAP en recette, Snyk Agent Scan sur les serveurs MCP installés.
Entreprise Une plateforme ASPM pour l'agrégation, un DAST commercial pour la couverture et l'authentification complexe, un SCA commercial pour la remédiation et les licences, une campagne de fuzzing continue sur les composants critiques, du red-teaming LLM régulier.

Une remarque sur l'ordre d'installation. Commence toujours par la détection de secrets, parce que c'est le contrôle au meilleur rapport valeur sur effort, puis le SCA, parce que la majorité des vulnérabilités exploitables vient des dépendances. Le SAST et le DAST arrivent ensuite, quand l'équipe a pris l'habitude de traiter les alertes plutôt que de les accumuler.

Un outil de plus dans un pipeline dont personne ne lit les résultats dégrade la sécurité, parce qu'il fabrique la croyance qu'un contrôle existe.

Ce panorama reste théorique tant qu'il n'est pas confronté à une installation réelle. C'est l'objet du prochain billet côté lab, la cartographie de mon SOC homelab en sept couches, avec ce que j'ai réellement déployé et surtout ce qui manque encore.


Points clés

  • Le SAST couvre trois domaines, pas un seul : le code applicatif, l'Infrastructure as Code et les secrets. Négliger les deux derniers laisse une base de code propre sur une plateforme ouverte.
  • Le DAST regroupe trois profils d'outils : scanners automatisés, scanners à templates et proxies d'interception. Sans authentification configurée ni exclusions, son rapport ne vaut rien, et il ne tourne jamais sur la production.
  • Le SCA commence par l'inventaire. Un SBOM versionné et une plateforme qui le réévalue valent mieux qu'un scan ponctuel, et un updater comme Renovate corrige sans jamais scanner.
  • Le fuzzing est une campagne, pas une étape de CI. Il prouve la présence de bugs, jamais leur absence, et n'a de sens qu'associé à des sanitizers et à un corpus soigné.
  • L'IA déplace le travail plus qu'elle ne le supprime : correctifs à valider plutôt qu'alertes à lire, serveurs MCP à traiter comme des dépendances, applications LLM à tester avec leur propre outillage.

Pour aller plus loin