Rejoignez-nous le 30 avril : dévoilement de Parasoft C/C++test CT pour l'excellence en matière de tests continus et de conformité | En savoir plus

Ajouter une analyse statique à votre boîte à outils de test de sécurité

Portrait d'Arthur Hicken, évangéliste chez Parasoft
24 mai 2023
12 min lire

Il existe de nombreuses façons et techniques pour détecter les vulnérabilités de votre logiciel. L'un des meilleurs moyens est le test de sécurité par analyse statique (SAST). Voici comment vous pouvez déployer SAST dans les tests de sécurité logicielle.

Il existe plusieurs techniques pour identifier les vulnérabilités des logiciels et des systèmes. Les organisations intelligentes les gardent dans leur «boîte à outils de sécurité» et utilisent une combinaison d'outils de test, notamment:

La motivation pour améliorer la sécurité grâce à des outils automatisés est de déplacer à gauche dans le cycle de vie du développement logiciel (SDLC) l'identification et la correction des vulnérabilités le plus tôt possible. Les correctifs et les corrections deviennent plus compliqués à mesure que l'application approche de la sortie. La figure 1 montre comment le coût de la correction des vulnérabilités augmente considérablement à mesure que le SDLC progresse.

Diagramme à barres des tests de sécurité d'analyse statique
L'augmentation des coûts de correction des vulnérabilités à mesure que le SDLC progresse.

Pour une couverture approfondie de l'économie de la sécurité logicielle, consultez La valeur commerciale des logiciels sécurisés papier blanc. Cet article se concentre sur l'utilisation des tests de sécurité d'analyse statique dans le cadre des pratiques de sécurité d'une organisation.

Tests de sécurité statiques ou dynamiques : quelle est la différence ?

Comme son nom l'indique, les tests statiques signifient qu'ils sont appliqués de manière statique. En d'autres termes, l'analyse est effectuée sur le code source, les binaires et/ou les fichiers de configuration. Les outils statiques utilisent leur compréhension de la sémantique de la source pour en déduire les erreurs et les vulnérabilités.

Ces "détecteurs d'erreurs" sont connus sous le nom de vérificateurs ou de règles. Si une règle est violée, un avertissement est émis avec des informations sur l'endroit du code où la violation a eu lieu et généralement des informations de suivi pour rechercher la cause première.

Les tests dynamiques s'appliquent aux applications en cours d'exécution. Ces outils détectent les problèmes d'exécution des applications et effectuent des tests en ajoutant de petits morceaux de code appelés instrumentation pour aider à déterminer la couverture du code et répondre à la question, ai-je fait suffisamment de tests ?

Les erreurs sont signalées au fur et à mesure que l'application s'exécute et fournissent généralement des informations contextuelles afin que les développeurs puissent trouver et corriger les vulnérabilités détectées.

Les principales différences entre les outils de test de sécurité statiques et dynamiques sont les suivantes.

  • Utilisation dans le SDLC. Les outils statiques tels que SAST sont utilisés au début du développement et peuvent être appliqués au code tel qu'il est écrit par les développeurs. Une application en cours d'exécution n'est pas nécessaire pour obtenir des résultats significatifs des outils SAST. Cette détection précoce est très utile pour réduire l'impact des vulnérabilités plus tard dans le développement et les tests. Les outils SAST sont également utilisés pour appliquer les directives de codage sécurisé, qui aident à prévenir les vulnérabilités en premier lieu.

Les outils dynamiques tels que les outils DAST ne peuvent être appliqués qu'aux applications en cours d'exécution et sont donc mis en place plus tard dans le développement. Cependant, avec les pipelines CI/CD modernes, les applications en cours d'exécution sont disponibles plus tôt et plus souvent qu'auparavant, ce qui rend les outils DAST plus utiles.

  • Technologie. Comme mentionné, les outils statiques fonctionnent en analysant le code source et disposent d'algorithmes sophistiqués pour détecter les vulnérabilités. Ces outils se comportent de la même manière que les compilateurs et analysent le code lors des builds, mais ils sont également disponibles dans les IDE pour une utilisation locale par les développeurs. Une grande partie des outils SAST est le reporting et la gestion des alertes.

Les outils dynamiques, d'autre part, peuvent incorporer des frameworks de test pour automatiser la génération de cas de test, le stub, le mocking, tirer parti de l'instrumentation et utiliser des bibliothèques d'exécution spéciales pour détecter les vulnérabilités pendant l'exécution de l'application. Ils incluent également des capacités de capture et de rapport sur ces résultats. Les informations de trace sont généralement incluses, ce qui permet une correction rapide. Étant donné que ces erreurs se produisent réellement dans une application en cours d'exécution, il n'y a généralement pas de faux positifs.

  • Portée. Le champ d'application des outils SAST inclut l'ensemble de la base de code, c'est-à-dire la détection des vulnérabilités dans le code qui n'est pas exécuté pendant le fonctionnement « normal » de l'application. À l'aide de l'analyse de flux, il est possible pour les outils SAST d'explorer des branches de code, telles que des conditions d'erreur, qui ne sont pas déclenchées pendant les tests. Il est possible que des vulnérabilités se trouvent dans ces morceaux de code non testés.

Les outils DAST, quant à eux, détectent les vulnérabilités lors de l'exécution du code. Il y a un haut degré de confiance dans ces résultats. De plus, les conditions d'exécution, telles qu'un comportement multithread compliqué, introduisent de nouveaux types d'erreurs et de vulnérabilités qui manquent aux outils SAST.

  • Limitations. Les outils DAST et SAST ont des limites. Les outils DAST nécessitent une application en cours d'exécution et la portée des erreurs qu'ils peuvent détecter est souvent limitée. Cependant, lorsque les outils DAST détectent des vulnérabilités, elles présentent un risque élevé et méritent une correction immédiate. Il y a peu d'erreurs faussement signalées, appelées faux positifs, dans les outils SAST.

Les outils SAST doivent échanger les faux positifs avec des vulnérabilités réelles potentiellement manquantes, appelées faux négatifs, afin de fournir le meilleur retour sur investissement pour la sécurisation du code source. Les faux positifs sont toujours possibles avec l'analyse de l'outil SAST, mais le gain est la détection précoce des vulnérabilités qui pourraient être manquées lors des tests ultérieurs.

Les outils SAST et DAST peuvent manquer de vraies erreurs. Cependant, la meilleure pratique consiste à utiliser les deux outils ensemble pour réduire les erreurs.

Test de sécurité d'analyse statique

Outils SAST ne nécessitent pas d'application en cours d'exécution et peuvent donc être utilisés au début du cycle de vie du développement lorsque les coûts de correction sont faibles. À son niveau le plus élémentaire, SAST fonctionne en analysant le code source et en le comparant à un ensemble de règles. Habituellement associés à l'identification des vulnérabilités, les outils SAST fournissent des alertes précoces aux développeurs concernant des modèles de codage médiocres qui conduisent à des exploits, des violations des politiques de codage sécurisé ou un manque de conformité aux normes d'ingénierie qui conduiront à des fonctionnalités instables ou peu fiables.

Il existe deux principaux types d'analyse utilisés pour identifier les problèmes de sécurité.

  • Analyse de flux
  • Analyse de motifs

Analyse de flux

Dans l'analyse de flux, les outils analysent le code source pour comprendre le flux de contrôle sous-jacent et le flux de données du code.

Analyse statique Test de sécurité - Analyse de flux
Analyse statique Test de sécurité – Analyse de flux

Le résultat est une représentation intermédiaire, ou modèle, de l'application. Les outils exécutent des règles (ou vérificateurs) par rapport à ce modèle pour identifier les erreurs de codage qui entraînent des vulnérabilités de sécurité. Par exemple, dans une application C ou C ++, une règle peut identifier des copies de chaîne, puis parcourir le modèle pour déterminer s'il est possible que le tampon source soit plus grand que le tampon de destination. Si tel est le cas, une vulnérabilité de dépassement de mémoire tampon pourrait en résulter.

Analyse de modèle

Éviter certaines constructions de code critiques pour la sécurité est la base des normes modernes d'ingénierie logicielle telles que AUTOSAR C ++ 14, MISRA C 2023et Combattant d'attaque interarmées (JSF). Ces normes empêchent la possibilité d'une mauvaise interprétation, d'un malentendu ou d'une mise en œuvre incorrecte d'un code non fiable.

L'analyse de modèles aide les développeurs à utiliser un sous-ensemble plus sûr du langage de développement dans le contexte de la sûreté ou de la sécurité, en interdisant l'utilisation de constructions de code qui permettent en premier lieu à des vulnérabilités de se produire. Certaines règles peuvent identifier les erreurs en vérifiant la syntaxe, comme un correcteur orthographique dans un traitement de texte. Certains outils modernes peuvent détecter des modèles subtils associés à une mauvaise construction de codage.

Avantages de SAST

Chaque méthodologie de test a des atouts. De nombreuses organisations se concentrent trop sur le DAST et les tests d'intrusion. Mais il y a plusieurs avantages à utiliser SAST par rapport à d'autres techniques de test.

Couverture de code

La quantité de code testée est une métrique critique pour la sécurité logicielle. Les vulnérabilités peuvent être présentes dans n'importe quelle section de la base de code, et les parties non testées peuvent exposer une application aux attaques.

Les outils SAST, en particulier ceux qui utilisent des règles d'analyse de modèle, peuvent fournir une couverture de code beaucoup plus élevée que les techniques dynamiques ou les processus manuels. Ils ont accès au code source de l'application et aux entrées de l'application, y compris celles masquées qui ne sont pas exposées dans l'interface utilisateur.

Analyse des causes principales

Les outils SAST favorisent une correction efficace des vulnérabilités. Les tests de sécurité par analyse statique identifient facilement la ligne de code précise qui introduit l'erreur. Les intégrations avec l'IDE des développeurs peuvent accélérer la correction des erreurs détectées par les outils SAST.

Amélioration des compétences

Les développeurs reçoivent un retour immédiat sur leur code lorsqu'ils utilisent les outils SAST de l'EDI. Les données les renforcent et les éduquent sur les pratiques de codage sécurisées.

Efficacité opérationnelle

Les développeurs utilisent l'analyse statique au début du cycle de développement, y compris sur des fichiers uniques directement depuis leur IDE. La détection précoce des erreurs dans le SDLC réduit considérablement le coût de la correction. Il empêche les bogues en premier lieu, afin que les développeurs n'aient pas à les trouver et à les corriger plus tard.

Comment tirer le meilleur parti de SAST

SAST est une méthodologie de test complète qui nécessite un effort initial et une motivation pour l'adopter avec succès.

Déployez SAST le plus tôt possible

Tandis que les équipes peuvent utiliser les outils SAST au début du SDLC, certaines organisations choisissent de retarder l’analyse jusqu’à la phase de test. Même si l'analyse d'une application plus complète permet une analyse des flux de données inter-procédurales, « décaler vers la gauche » avec SAST et analyser le code directement depuis l'EDI peut identifier des vulnérabilités telles que des erreurs de validation d'entrée. Il permet également aux développeurs d'effectuer des corrections simples avant de soumettre le code pour les builds. Cela permet d’éviter les changements tardifs pour des raisons de sécurité.

Utiliser SAST avec des pipelines Agile et CI / CD

L'analyse SAST est mal comprise. De nombreuses équipes pensent que cela prend du temps en raison de son analyse approfondie de l'ensemble du code source du projet. Cela peut amener les organisations à croire que le SAST est incompatible avec les méthodologies de développement rapide, ce qui n'est pas fondé. Les résultats quasi instantanés des tests de sécurité de l'analyse statique sont disponibles dans l'EDI du développeur, fournissant une rétroaction immédiate et garantissant l'évitement des vulnérabilités. Les outils SAST modernes effectuent une analyse incrémentielle pour afficher les résultats uniquement à partir du code qui a changé entre deux versions différentes.

Traiter les résultats bruyants

Les outils de test de sécurité d'analyse statique traditionnels incluent souvent de nombreux résultats « informatifs » et des problèmes de faible gravité concernant les normes de codage appropriées. Les outils modernes, comme ceux proposés par Parasoft, permettent aux utilisateurs de sélectionner les règles/vérificateurs à utiliser et de filtrer les résultats en fonction de la gravité de l'erreur, en masquant ceux qui ne justifient pas une enquête.

De nombreuses normes de sécurité de l'OWASP, du CWE, du CERT, etc., ont des modèles de risque qui aident à identifier les vulnérabilités les plus importantes. Votre outil SAST doit utiliser ces informations pour vous aider à vous concentrer sur ce qui compte le plus. Les utilisateurs peuvent filtrer davantage les résultats en fonction d'autres informations contextuelles telles que les métadonnées sur le projet, l'âge du code et le développeur ou l'équipe responsable du code. Des outils comme Parasoft permettent d'utiliser ces informations avec l'intelligence artificielle (IA) et l'apprentissage automatique (ML) pour aider à mieux déterminer les problèmes les plus critiques.

Focus sur les développeurs

Les déploiements réussis sont souvent axés sur les développeurs. Ils fournissent les outils et les conseils dont les développeurs ont besoin pour intégrer la sécurité dans le logiciel. Ceci est important dans les environnements Agile et DevOps / DevSecOps, où une rétroaction rapide est essentielle pour maintenir la vitesse. Les intégrations IDE permettent des tests de sécurité directement à partir de l'environnement de travail du développeur - au niveau du fichier, au niveau du projet ou simplement pour évaluer le code qui a changé.

Utiliser la configuration de règle intelligente

Lors de l'analyse des logiciels pour les problèmes de sécurité, une taille unique ne convient pas à toutes les organisations. Il est essentiel que les règles / vérificateurs abordent les problèmes spécifiques critiques pour cette application spécifique. Les organisations qui commencent tout juste à tester la sécurité peuvent souhaiter limiter les règles aux problèmes de sécurité les plus courants tels que les scripts intersites et l'injection SQL. D'autres organisations ont des exigences de sécurité spécifiques basées sur des réglementations telles que PCI DSS. Recherchez des solutions qui permettent une configuration de règle / vérificateur contrôlée qui correspond à vos besoins spécifiques, et non une configuration générique.

Intégration de l'analyse statique et dynamique pour des tests de sécurité complets

Dans le cas des outils de sécurité logicielle, le tout vaut mieux que la somme des parties. Cela est vrai pour les tests de sécurité des applications car les différents outils ont des forces dans différents domaines et des faiblesses qui sont atténuées par la combinaison.

Avantages de l'intégration de SAST et DAST

La combinaison de SAST et DAST est un ajustement naturel en raison de la différence fondamentale entre la technologie utilisée dans les outils statiques et les outils dynamiques. Voici quelques-uns des avantages de l'intégration des deux dans vos tests de sécurité.

  • Meilleure couverture de sécurité. Les outils SAST couvrent une grande variété de problèmes de sécurité et peuvent appliquer des normes de codage sécurisées. Les outils DAST couvrent souvent des erreurs plus spécifiques, dont certaines sont propres aux environnements d'exécution, et détectent des vulnérabilités graves qui n'avaient pas été détectées auparavant lors du développement.
  • La détection précoce. Les outils SAST excellent dans la détection des vulnérabilités lors du développement au fur et à mesure de l'écriture du code. En outre, l'application de normes de codage sécurisées est essentielle pour empêcher les mauvaises pratiques logicielles qui conduisent à des vulnérabilités ultérieures. L'intégration de DAST a l'avantage supplémentaire de détecter les vulnérabilités graves qui sont manquées à ces premières étapes.
  • De meilleurs résultats. Dans l'ensemble, la combinaison de deux outils qui détectent les vulnérabilités de différentes manières est meilleure pour les tests de sécurité. Les outils SAST, bien que sensibles aux faux positifs, peuvent détecter les vulnérabilités manquées lors des tests. Les outils DAST, d'autre part, ont un degré élevé de confiance dans leurs résultats, éliminant la plupart du temps le problème des faux positifs.
  • Amélioration de la collaboration. Les outils SAST et DAST sont souvent utilisés par différentes équipes de l'organisation. Les outils SAST sont généralement le domaine des développeurs de logiciels, tandis que les développeurs de logiciels, les testeurs et les experts en sécurité utilisent tous les outils DAST. L'intégration des différents outils de sécurité applicative encourage ces équipes à partager et à collaborer sur un ensemble commun de vulnérabilités à traiter. La prévention précoce et la détection ultérieure de l'exécution sont le meilleur des deux mondes.
  • Moins de charge de travail et de risques liés à la conformité. La mise en conformité en matière de sécurité est une entreprise longue et coûteuse. Les risques de non-conformité peuvent être graves. L'intégration d'outils de sécurité des applications est une bonne pratique qui améliore la posture de sécurité d'une organisation. Ces outils créent également une trace « papier » automatisée des activités de test de sécurité qui démontre la diligence raisonnable. La couverture accrue et les meilleurs résultats de l'intégration de ces outils se traduisent par une réduction des risques de sécurité et de conformité.

Défis et meilleures pratiques pour l'intégration

L'intégration d'outils, en général, peut être difficile. Les outils de différents fournisseurs peuvent ne pas bien fonctionner ensemble et les rapports de chaque outil peuvent entrer en conflit et être dans des formats différents. Cela conduit aux défis suivants.

  • Intégration du flux de travail. Tous les outils de développement, liés à la sécurité ou non, doivent être bien intégrés dans les workflows de développement existants et les pipelines CI/CD. Par conséquent, chaque outil individuel doit bien s'intégrer dans l'environnement et avec chaque outil lié à la sécurité. Chaque outil doit ajouter de la valeur individuellement ainsi que dans une boîte à outils de sécurité intégrée.
  • Intégration de données. Chaque outil de sécurité crée son propre ensemble de rapports, qui peuvent être dans des formats incompatibles. En raison de la nature des outils SAST et DAST, par exemple, il peut également y avoir des cas où ils signalent les mêmes vulnérabilités. Il est essentiel que les données de tous les outils soient orchestrées d'une manière ou d'une autre.
  • Formation. Les outils ont des interfaces différentes. Les développeurs et les testeurs doivent être formés à l'utilisation de tous les outils. Ils doivent apprendre à utiliser les outils au quotidien et à traiter, corriger et mettre à jour les résultats de chaque outil.
  • Coût. Les outils de sécurité ont des frais de licence associés et nécessitent des efforts de formation pour chacun. De plus, il y a le coût d'intégration des outils et le temps nécessaire pour traiter les rapports qui en découlent.

Il existe un excellent retour sur investissement pour l'intégration de votre boîte à outils de sécurité des applications, donc cette liste ne devrait pas décourager l'effort. Voici quelques bonnes pratiques pour faciliter l'intégration :

  • Évaluez la compatibilité et la couverture de l'outil avant l'achat. Avant d'intégrer les outils SAST et DAST, évaluez leur compatibilité et leur couverture. Tenez compte des langages de programmation, des frameworks et des types d'applications qu'ils prennent en charge. Assurez-vous que les outils se complètent mutuellement et couvrent un large éventail de vulnérabilités de sécurité.
  • Établissez un flux de travail clair. Décrivez les étapes et les responsabilités liées à l'utilisation des outils SAST et DAST. Cela devrait inclure quand et comment chaque outil est utilisé, qui est responsable de l'exécution des tests et comment les résultats sont partagés et suivis. En outre, la manière d'utiliser efficacement les résultats des deux outils doit être définie.
  • Automatisez l'intégration des données. Utilisez des outils d'orchestration de la sécurité ou utilisez les capacités d'intégration intégrées des outils SAST et DAST. Établissez un référentiel commun ou une plate-forme centralisée qui peut agréger et corréler les résultats des deux outils. Automatisez la collecte des résultats des deux outils pour minimiser tout effort manuel et augmenter l'efficacité.
  • Mettre en place un programme de formation à la sécurité. Pour une meilleure efficacité et une meilleure intégration des flux de travail, établissez un programme de formation commun spécifique à votre organisation qui couvre des flux de travail, des outils, des politiques et des pratiques de sécurité spécifiques. Ceci est plus efficace que la formation au coup par coup pour chaque outil individuel. Un aspect important de la formation aux outils SAST et DAST est de savoir comment analyser les résultats, comprendre les risques liés aux vulnérabilités signalées et hiérarchiser les correctifs.
  • Rechercher des réductions de coûts et des gains d'efficacité. Certains fournisseurs proposent les deux types d'outils dans une suite intégrée, ce qui peut être plus attrayant. Analysez le coût total de possession par rapport au retour sur investissement potentiel de la solution combinée. Assurez-vous de comparer les coûts associés à l'intégration des outils, aux besoins en infrastructure et aux dépenses de maintenance.
  • Réévaluez régulièrement les intégrations des outils de sécurité. Examinez et mettez à jour les intégrations d'outils de sécurité, car les outils s'améliorent à chaque version, tout comme vos exigences en matière de sécurité. Tenez-vous au courant des nouvelles technologies, cadres et menaces de sécurité, car tout cela a un impact sur vos flux de travail de sécurité et l'utilisation des outils.

Autres types de tests de sécurité des applications

En plus des SAST et DAST, il existe d'autres types de tests de sécurité des applications.

  • Tests interactifs de sécurité des applications. IAST combine l'interaction avec le programme couplée à l'observation pour détecter les vulnérabilités du logiciel. En d'autres termes, il surveille le comportement de l'application pendant son exécution et fournit un retour d'information continu sur tous les problèmes de sécurité qu'il découvre.
  • Autoprotection des applications d'exécution. RASP utilise une technologie d'exécution installée dans une application pour fournir une couche de sécurité supplémentaire. Cette couche surveille l'application en temps réel et peut détecter et bloquer toute tentative d'exploit ou d'attaque.
  • Test de sécurité des applications mobiles. Axé sur les applications mobiles, MAST exploite DAST et SAST ainsi que des fonctionnalités supplémentaires axées sur la sécurité des applications mobiles. MAST peut également s'étendre à des exploits spécifiques à l'appareil comme le jailbreak, l'enracinement de l'appareil, la violation de la vie privée et la fuite de données.
  • Analyse de la composition du logiciel. SCA inspecte les images de conteneur, le code source, les fichiers binaires, etc. à la recherche d'open source. L'intention est de détecter les dépendances tierces et open source et de créer une nomenclature logicielle (SBOM). Une liste de tous les composants open source et tiers présents dans une base de code. Avec un SBOM, vous pouvez réagir rapidement aux risques de sécurité, de licence et opérationnels liés à l'utilisation de l'open source.

Il est important de noter qu'il s'agit de techniques de test de sécurité des applications qui s'intègrent dans un écosystème de techniques de sécurité. Par exemple, les équipes utilisent couramment des outils d'orchestration de la sécurité des applications pour organiser, analyser et générer des rapports sur les informations issues de toutes ces techniques.

Tirez parti de l'IA et du ML pour identifier les violations les plus importantes

Les technologies d'intelligence artificielle (IA) et d'apprentissage automatique (ML) améliorent les solutions d'analyse statique de Parasoft pour identifier les points chauds et les intersections entre toutes les violations trouvées. Cela permet aux équipes de concentrer leurs efforts sur la partie de la base de code qui est à l'origine de nombreux autres problèmes. De plus, ML surveille et apprend du comportement de vos équipes de développement pour différencier ce qui est important de ce qui ne l'est pas.

La formation de votre modèle d'IA sur la base du comportement historique de l'équipe de développement fournit une analyse multidimensionnelle des résultats, tandis que le ML regroupe les données pour identifier les violations corrélées, liées ou similaires.

Combiner les deux technologies, c'est encore mieux. La combinaison apprend quels résultats faux positifs ignorer et quels vrais positifs mettre en évidence. Il réduit une montagne d'informations à quelques diamants de grande valeur.

Par exemple, l'analyse statique peut révéler des milliers de violations dans une base de code typique. Même si vous êtes en mesure d'identifier des centaines de défauts à corriger, vous ne pourrez pas tout réparer dans le laps de temps disponible. Avec l'IA et le ML qui trouvent des points chauds de violation, vous pouvez corriger plusieurs défauts en même temps en identifiant le seul morceau de code qui les cause tous.

La prévention vaut mieux que la détection

Intégrez la sécurité à votre application. C'est beaucoup plus efficace et efficient que d'essayer de sécuriser une application en renforçant la sécurité sur une application finie à la fin du SDLC. Tout comme vous ne pouvez pas tester la qualité dans une application, il en va de même pour la sécurité. SAST est la clé de la détection précoce et empêche les failles de sécurité en écrivant du code sécurisé dès le début.

Les outils SAST permettent aux entreprises d'adopter la sécurité logicielle dès les premières étapes du développement et de fournir à leurs ingénieurs logiciels les outils et les conseils dont ils ont besoin pour créer des logiciels sécurisés.

Libérer la valeur de SAST

« MISRA », « MISRA C » et le logo triangulaire sont des marques déposées de The MISRA Consortium Limited. ©The MISRA Consortium Limited, 2021. Tous droits réservés.

Article connexe + ressources