Outils d’analyse statique de code
En bas, vous trouvez une liste d’outils d’analyse statique de code source. Ces outils sont recommandés aux développeurs du CERN. Ils permettent aux développeurs de revoir leur code rapidement, afin de chercher les bugs communs potentiels et les vulnérabilités (liées à la sécurité ou non), augmentant ainsi la fiabilité et la sécurité de leurs programmes.
Ceci est un résumé d’une évaluation d’outils d’analyse statique de code, effectuée par l’équipe de sécurité informatique du CERN. Ce n’est en aucun cas une liste exhaustive de tous les outils existants, et ce n’est pas non plus une liste des outils les plus complets. Les outils présentés ont été sélectionnés pour leur facilité d’utilisation, leur simplicité et leur efficacité par rapport au temps investi. Un autre list pourrait étre trouvé ici.
Les outils et la documentation sont pour Linux, mais la plupart des outils sont également disponibles sur Windows (des liens sont donnés). Vous êtes intéressés par le service Gitlab-CI (Intégration continue)? Sachez que tous les analyseurs de code statiques sont disponibles grâce à une image Docker dédiée. Voir ces examples et ce rapport pour plus de détails."
(Les descriptions des différents outils sont seulement disponibles en anglais.)
C / C++
CppLint | Gratuit | script autonome | CppLint est un outil qui vérifie la compatibilité de code écrit en C++ avec le guide d'écriture de code de Google. Cet outil est capable d'identifier des constructions dangereuses et de signaler les mauvaises pratiques en général, les erreurs de syntaxes et les inconsistances de style. |
---|---|---|---|
Flawfinder | Gratuit | script autonome | Flawfinder vérifie les appels à des fonctions "library" potentiellement vulnérables. |
RATS | Gratuit | script autonome | RATS cible différents langages et a des règles spécifiques de détection pour chacun d’eux. Pour C/C++, il vérifiera les appels à des fonctions "library" vulnérables et les mauvaises pratiques qui peuvent engendrer un débordement de tampon. |
Coverity Prevent | Commercial/ disponible au CERN |
... | Coverity est une entreprise de sécurité avec une expérience considérable dans le domaine de l’analyse statique. Ils ont conduit beaucoup de « scans open source » et ont des clients de renom. |
VCG | Gratuit | script autonome | Visual Code Grepper est un outil automatique d'inspection de code qui essaye d’accélérer drastiquement l'audit de code informatique en identifiant tout code mauvais ou dangereux. |
Java
FindBugs | Gratuit | application GUI autonome ou plug-in Eclipse |
FindBugs est un outil hautement configurable, qui permet le chargement de sets de règles personnalisées. Le set de règles par défaut est plutôt à large spectre et comprend de nombreux contrôles de sécurité connexes. |
---|---|---|---|
CodePro Analytix | Commercial | plug-in Eclipse ou intégration Maven/Ant |
La configuration par défaut de CodePro Analytix inclut des règles plutôt similaires à celles de FindBugs, mais elle a l’avantage d’avoir quelques règles additionnelles et est un peu plus simple à utiliser et à configurer. |
PMD | Gratuit | script autonome | PMD identifie les défauts de programmation ordinaire comme les variables non utilisées, les blocs de gestion d'exception vides, les créations d’objets inutiles, etc |
VCG | Gratuit | script autonome | Visual Code Grepper est un outil automatique d'inspection de code qui essaye d’accélérer drastiquement l'audit de code informatique en identifiant tout code mauvais ou dangereux. |
Perl
Perl::Critic | Gratuit | module Perl | La configuration par défaut de Perl::Critic peut sembler un peu sévère à la plupart des programmeurs, mais nous fournissons une configuration moins contraignante, plus ciblée sur la sécurité. |
---|---|---|---|
RATS | Gratuit | script autonome | RATS cible différents langages et a des règles spécifiques de détection pour chacun d’eux. Pour Perl, il se concentre sur les appels aux fonctions à risque « built-in/library ». |
LC's lint | Gratuit | script disponible sur AFS | Contrôle de conformité: Guide Perl de Lionel Cons. |
Python
Comme règle très basique, appliquez les derniers patches de sécurité à votre interpréteur python. Notez que sur SLC, les patches de sécurité sont appliqués et rétroportés aux versions précédentes de Python.
pychecker | Gratuit | script autonome | Cet analyseur statique se concentre sur la recherche de bugs. Il possède seulement quelques vérifications qui sont liées à la sécurité. |
---|---|---|---|
Pylint | Gratuit | script autonome | Pylint est un outil qui peut analyser du code Python, en essayant d'imposer des règles de codage et en essayant de trouver tout mauvais code. |
RATS | Gratuit | script autonome | RATS cible différents langages et a des règles spécifiques de détection pour chacun d’eux. Pour Python, il trouvera des appels au système dangereux. |
PHP
Pixy | Gratuit | script autonome | Alors qu’il peut sembler un peu dépassé (sa page d’accueil annonce le support PHP4), Pixy effectue un travail remarquable lors de la recherche de vulnérabilités de Cross-Site Scripting et d’injection SQL/Code. |
---|---|---|---|
RATS | Gratuit | script autonome | RATS cible différents langages et a des règles spécifiques de détection pour chacun d’eux. Dans le cas de PHP, il cible les appels à certaines fonctions « library ». |
RIPS | Gratuit | autonome web application | RIPS est un outils écrit en PHP qui utilise des analyses de code statiques pour trouver des vulnérabilités dans les applications PHP. En segmentant et décomposant tous les fichiers du code source, RIPS est capable de transformer le code source PHP en un modèle de programmation et de détecter les points clefs (fonctions potentiellement vulnérables) qui pourraient être corrompues par des données utilisateurs (venant d'un utilisateur malicieux) lors de l’exécution du programme. |
VCG | Gratuit | script autonome | Visual Code Grepper est un outil automatique d'inspection de code qui essaye d’accélérer drastiquement l'audit de code informatique en identifiant tout code mauvais ou dangereux. |