Aller au contenu

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

Une développeuse pousse un scanner le long d’un long rouleau de code déroulé, dont le faisceau fait apparaître des marqueurs d’alerte, tandis qu’un robot tient l’extrémité du rouleau.Une développeuse pousse un scanner le long d’un long rouleau de code déroulé, dont le faisceau fait apparaître des marqueurs d’alerte, tandis qu’un robot tient l’extrémité du rouleau.

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.

Comparatif des outils SAST
OutilApproche, selon sa documentationLangagesLicenceSortie SARIF
CodeQL (GitHub code scanning)Construit une base de données à partir du code et l’interroge avec des requêtes sémantiquesC/C++, C#, Go, Java/Kotlin, JavaScript/TypeScript, Python, Ruby, Rust, Swift et workflows GitHub ActionsCLI d’utilisation gratuite sur les dépôts publics ; les dépôts privés nécessitent une licence GitHub Code SecurityOui
Checkmarx One SASTConstruit 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 chargeMulti-langages, dont Java, C#, C/C++, PHP, JavaScript/TypeScript, Python et GoCommercialeOui
OpengrepRègles par motifs avec analyse de taint ; compatible avec les règles SemgrepPlus de 30 langagesOpen source, LGPL 2.1Oui
SemgrepRè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 fonctionsPlus de 30 langagesMoteur open source, LGPL 2.1 ; AppSec Platform est propriétaireOui
Snyk CodeMoteur d’analyse sémantique avec analyse de flux de données et de taintMulti-langages, dont Java/Kotlin, JavaScript/TypeScript, Python, Go, C#, PHP, Ruby et SwiftService hébergé commercial avec une offre gratuiteOui
SonarQubeRè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 CloudPlus de 40 langages et frameworks selon les éditionsCommunity Build est open source, LGPL 3.0 ; Server et Cloud sont commerciauxImporte le SARIF d’autres outils
BanditConstruit un arbre syntaxique pour chaque fichier et y applique des pluginsPython uniquementOpen source, Apache 2.0Oui, via une dépendance optionnelle
gosecRègles sur l’arbre syntaxique, analyseurs basés sur la forme SSA et analyse de taintGo uniquementOpen source, Apache 2.0Oui

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èmePourquoi le SAST seul ne le détecte pasCe qui le détecte
Un paquet qui n’existe pas ou qui a été enregistré la semaine dernièreL’instruction d’import est du code valideDes vérifications des dépendances auprès des registres publics
Identifiants commitésLa plupart des règles SAST examinent le comportement du code, pas les formats de secretsLe secret scanning
Vulnérabilités connues dans les dépendancesLe code vulnérable ne se trouve pas dans votre dépôtL’analyse de la composition logicielle (SCA)
Absence de contrôle d’autorisation entre utilisateursLe code est syntaxiquement correct ; la règle manquante relève de la conception de votre produitLa revue et un test avec deux comptes
Implémentations inachevées ou bouchonsCe 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’erreursDes 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éesLe réglage se trouve dans une console, pas dans le code sourceLa 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.

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.

Demander un accès anticipé

Parlez-nous de votre équipe et des dépôts que vous souhaitez auditer. Nous ouvrons l’accès par petits groupes et vous répondrons par e-mail.

Nous utilisons ces informations uniquement pour répondre à votre demande. Politique de confidentialité