Guide
Comparatif des outils SAST : ce qu’ils détectent et ce qui leur échappe
Ce que font les outils SAST, en quoi huit outils très répandus diffèrent (approche, langages, licences) et ce que l’analyse statique rate dans le code généré par IA.
· 9 min de lecture · Par l’équipe vetkit


Qu’est-ce qu’un outil SAST ?
Un outil SAST (static application security testing, ou test statique de sécurité des applications) lit votre code source sans l’exécuter et signale le code qui semble vulnérable : des données de requête qui aboutissent dans une requête SQL, une commande shell construite à partir d’une saisie utilisateur, une vérification de certificat désactivée, un hachage faible utilisé pour les mots de passe. Comme il n’a besoin que du code source, il peut tourner à chaque commit, bien avant le déploiement de l’application.
Le SAST n’est qu’un type de test de sécurité parmi d’autres. La SCA (software composition analysis) vérifie si vos dépendances présentent des vulnérabilités connues, le secret scanning recherche les identifiants commités, et le DAST (test dynamique) sonde une application en cours d’exécution. Un outil SAST ne fait rien de tout cela ; la plupart des équipes le combinent donc au minimum avec une analyse des dépendances et une détection des secrets.
En quoi les outils SAST diffèrent
Quatre différences expliquent l’essentiel de ce que vous constaterez en essayant deux outils sur le même code.
- La profondeur de l’analyse. La recherche de motifs (pattern matching) trouve du code qui ressemble à une forme dangereuse connue. L’analyse de taint ou de flux de données suit une valeur depuis son point d’entrée (une requête) jusqu’à son point d’utilisation (une requête SQL). Suivre les valeurs entre fonctions et entre fichiers permet de trouver davantage de vrais problèmes, et c’est généralement là que les éditions commerciales se distinguent des éditions gratuites.
- Un seul langage ou plusieurs. Les outils mono-langage connaissent bien leur écosystème. Les outils multi-langages produisent un seul rapport pour une base de code hétérogène.
- L’endroit où il s’exécute. Certains sont une commande à lancer en local ou en CI. D’autres sont des plateformes hébergées qui se connectent à votre gestionnaire de code source et ajoutent tableaux de bord, commentaires de pull request et politiques.
- La possibilité d’écrire vos propres règles. Des formats de règles lisibles permettent de codifier facilement les conventions de votre équipe.
Huit outils SAST côte à côte
Il s’agit d’outils très répandus, classés par ordre alphabétique au sein de chaque groupe. Le tableau reprend ce qu’indique la documentation de chaque projet ; ce n’est pas un classement, et nous ne les avons pas comparés par des benchmarks.
| Outil | Approche, selon sa documentation | Langages | Licence | Sortie SARIF |
|---|---|---|---|---|
| CodeQL (GitHub code scanning) | Construit une base de données à partir du code et l’interroge avec des requêtes sémantiques | C/C++, C#, Go, Java/Kotlin, JavaScript/TypeScript, Python, Ruby, Rust, Swift et workflows GitHub Actions | CLI d’utilisation gratuite sur les dépôts publics ; les dépôts privés nécessitent une licence GitHub Code Security | Oui |
| Checkmarx One SAST | Construit un graphe des éléments du code et des flux de données et l’interroge par des requêtes ; requêtes personnalisées prises en charge | Multi-langages, dont Java, C#, C/C++, PHP, JavaScript/TypeScript, Python et Go | Commerciale | Oui |
| Opengrep | Règles par motifs avec analyse de taint ; compatible avec les règles Semgrep | Plus de 30 langages | Open source, LGPL 2.1 | Oui |
| Semgrep | Règles par motifs qui ressemblent au code qu’elles ciblent. La Community Edition analyse au sein d’une seule fonction ou d’un seul fichier ; l’offre commerciale Semgrep Code ajoute l’analyse entre fichiers et entre fonctions | Plus de 30 langages | Moteur open source, LGPL 2.1 ; AppSec Platform est propriétaire | Oui |
| Snyk Code | Moteur d’analyse sémantique avec analyse de flux de données et de taint | Multi-langages, dont Java/Kotlin, JavaScript/TypeScript, Python, Go, C#, PHP, Ruby et Swift | Service hébergé commercial avec une offre gratuite | Oui |
| SonarQube | Règles de qualité du code et de sécurité ; l’analyse de taint pour les règles d’injection est disponible dans SonarQube Server et Cloud | Plus de 40 langages et frameworks selon les éditions | Community Build est open source, LGPL 3.0 ; Server et Cloud sont commerciaux | Importe le SARIF d’autres outils |
| Bandit | Construit un arbre syntaxique pour chaque fichier et y applique des plugins | Python uniquement | Open source, Apache 2.0 | Oui, via une dépendance optionnelle |
| gosec | Règles sur l’arbre syntaxique, analyseurs basés sur la forme SSA et analyse de taint | Go uniquement | Open source, Apache 2.0 | Oui |
Brakeman est un autre outil mono-framework bien connu, pour Ruby on Rails. Son dépôt le présente comme gratuit pour un usage non commercial, sous sa propre licence d’utilisation publique : vérifiez donc les conditions avant de l’intégrer à un service commercial.
Plusieurs de ces outils proposent désormais, sous leur propre nom, des corrections ou un tri assistés par IA, par exemple Copilot Autofix pour les alertes CodeQL, Semgrep Multimodal, Snyk Agent Fix et SonarQube AI CodeFix. Dans ce domaine, les noms, éditions et prix changent souvent : consultez la page actuelle de chaque éditeur avant de décider.
Comment choisir
- Un seul langage, une petite équipe. Commencez par l’outil mono-langage de votre stack (Bandit pour Python, gosec pour Go). Ils sont gratuits, rapides à exécuter et faciles à ajouter à la CI.
- Une base de code multi-langages et l’envie de rester en open source. Un moteur multi-langages à base de règles comme Opengrep ou Semgrep Community Edition couvre de nombreux langages avec des règles que vous pouvez lire et étendre.
- Tout est sur GitHub. CodeQL, via GitHub code scanning, affiche les alertes dans les pull requests sans service supplémentaire. Voir GitHub Advanced Security vs vetkit.
- Vous avez besoin d’une analyse inter-fichiers plus poussée, de tableaux de bord et de politiques. C’est ce que vendent les plateformes commerciales. Comparez-les sur votre propre code, pas sur des listes de fonctionnalités. Voir Semgrep vs vetkit et Snyk vs vetkit.
Quel que soit votre choix, privilégiez un outil qui produit du SARIF. C’est le format commun qui permet d’envoyer les résultats vers GitHub code scanning ou un autre tableau de bord, et de changer d’outil plus tard. Le guide SARIF explique comment faire.
Ce que le SAST ne voit pas
Le SAST détecte des motifs de code non sécurisés. Or une grande partie de ce qui tourne mal dans un logiciel, surtout quand il a été écrit rapidement avec un assistant IA, n’est pas un motif dans un seul fichier.
| Problème | Pourquoi le SAST seul ne le détecte pas | Ce qui le détecte |
|---|---|---|
| Un paquet qui n’existe pas ou qui a été enregistré la semaine dernière | L’instruction d’import est du code valide | Des vérifications des dépendances auprès des registres publics |
| Identifiants commités | La plupart des règles SAST examinent le comportement du code, pas les formats de secrets | Le secret scanning |
| Vulnérabilités connues dans les dépendances | Le code vulnérable ne se trouve pas dans votre dépôt | L’analyse de la composition logicielle (SCA) |
| Absence de contrôle d’autorisation entre utilisateurs | Le code est syntaxiquement correct ; la règle manquante relève de la conception de votre produit | La revue et un test avec deux comptes |
| Implémentations inachevées ou bouchons | Ce n’est pas un motif de sécurité | Les contrôles de qualité du code et de risques IA, et la revue |
| Pas de timeouts, requêtes dans des boucles, aucune remontée d’erreurs | Des problèmes de fiabilité, hors de la plupart des jeux de règles de sécurité | Les contrôles de préparation à la production |
| Permissions d’hébergement ou de base de données mal configurées | Le réglage se trouve dans une console, pas dans le code source | La vérification de l’environnement déployé |
C’est pourquoi un rapport SAST vierge ne signifie pas que le code est prêt à être livré. Le guide sur ce qui coince avec le vibe coding et le guide sur les paquets inventés passent en revue les cas les plus importants pour le code écrit avec l’aide de l’IA.
La place de vetkit
vetkit n’est pas un moteur SAST à part entière. C’est un audit de dépôt qui exécute l’analyse statique comme une composante d’un rapport plus large. Pour la sécurité du code, il utilise Opengrep avec 663 règles maison, listées dans le catalogue de contrôles public, et ajoute Bandit pour Python et gosec pour Go lorsque ces contrôles sont sélectionnés. Autour de cela, il exécute la détection des secrets, la recherche de vulnérabilités dans les dépendances et la vérification de l’existence des paquets, ainsi que des contrôles de qualité du code, de risques du code IA et de préparation à la production, et transforme les résultats en tâches suivies. Les résultats peuvent être exportés en SARIF.
Si vous utilisez déjà l’un des outils ci-dessus et qu’il vous convient, gardez-le. vetkit est utile pour les lignes du second tableau ; il est en accès anticipé, avec un Security Quick Scan gratuit qui couvre les secrets, les vulnérabilités connues des dépendances et les bases de la posture de sécurité.
Sources
Nous avons relevé les informations sur les autres outils dans leur propre documentation ou leurs dépôts le . Les produits évoluent vite : les pages de chaque projet font foi.
- À propos du code scanning avec CodeQL et À propos de la CLI CodeQL
- Scanner SAST de Checkmarx One
- Dépôt Opengrep
- Semgrep Community Edition et AppSec Platform
- Documentation de Snyk Code
- Qu’est-ce que SonarQube et Dépôt de SonarQube Community Build
- Documentation de Bandit
- Dépôt gosec
- Dépôt Brakeman
Les noms de produits sont des marques de leurs propriétaires respectifs. vetkit n’est ni affilié à ceux-ci, ni approuvé ou sponsorisé par eux ; les noms ne servent qu’à identifier les outils. Vous avez repéré une information obsolète ? Écrivez à contact@vetkit.dev et nous la corrigerons.