Découvrez comment intégrer facilement l'analyse statique, les tests unitaires et d'autres méthodes de test de logiciels C et C++ dans votre pipeline CI/CD. Inscrivez-vous pour la démo >>

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

Par Arthur Hicken

26 août 2020

5  min lire

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
Figure 1: L'augmentation des coûts de correction des vulnérabilités au fur et à 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.

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
Figure 2: Test de sécurité d'analyse statique - 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 2012 et 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 vie du développement, y compris sur des fichiers uniques directement à partir de leur IDE. La détection d'erreurs au début du SDLC réduit considérablement le coût de la correction. Cela évite 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

Alors 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 inter-procédurale des flux de données, «passer à gauche» avec SAST et analyser le code directement à partir de l'EDI peut identifier des vulnérabilités telles que des erreurs de validation d'entrée. Il permet également aux développeurs d'apporter des corrections simples avant de soumettre du code pour les builds. Cela permet d'éviter les changements de fin de cycle pour la 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é liés aux 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, masquant ceux qui ne justifient pas une enquête. De nombreuses normes de sécurité OWASP, CWE, 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 tels que 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.

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.

Analyse statique: la valeur commerciale des logiciels sécurisés

« 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.

Par Arthur Hicken

Arthur est impliqué dans la sécurité logicielle et l'automatisation des tests chez Parasoft depuis plus de 25 ans, aidant à la recherche de nouvelles méthodes et techniques (dont 5 brevets) tout en aidant les clients à améliorer leurs pratiques logicielles.

Recevez les dernières nouvelles et ressources sur les tests de logiciels dans votre boîte de réception.