Ouvrir le menu Fermer le menu

Les Techniques de Test de Sécurité d'Application (AST) recommandées

trait de séparation
Temps de lecture : 6 minutes

Le rapport GARTNER, « How to Deploy and Perform Application Security Testing » (Comment effectuer et déployer des tests de sécurité des applications) publié en 2020, amène des enseignements très intéressants.
Blog_GT_Techniques_AST_ GrammaTech_ISIT
En premier lieu, ce rapport indique que « les tests de sécurité des applications (AST) sont des phases cruciales dans le cycle de vie du développement logiciel (Software Development Life Cycle - SDLC) et qu’ils regroupent plusieurs techniques, et ce dès les premiers stades du développement jusqu'à la production et le déploiement du produit ». Clairement, les outils d'Analyse Statique ou de Tests Statiques de Sécurité des Applications (Static Application Security Testing - SAST) jouent un rôle important dans le développement de logiciels sécurisés.

Cet article examine certaines des conclusions du rapport Gartner et comment des outils SAST avancés tel que CodeSonar de GrammaTech peuvent aider à relever les défis liés au développement d’une application sécurisée ainsi qu’à aider dans la mise en œuvre de ces recommandations.

Les Défis

Le rapport Gartner indique que :

« Les organisations sont confrontées au problème de vérification et de hiérarchisation d’un volume élevé de vulnérabilités à traiter, ainsi qu'à la fourniture de conseils techniques utiles aux équipes de développement logiciel pour faciliter leurs corrections. »

Ce n'est pas inhabituel car nous voyons ce même défi avec de nouveaux utilisateurs adoptant les techniques SAST pour la première fois. Cependant, il est important que les responsables s'y tiennent et apprennent à surmonter ces défis et fassent adopter ces outils dès les premiers stades de développement. De plus, Gartner a noté que :

« L'exécution manuelle des outils de test de sécurité des applications (AST) ou uniquement aux étapes finales du cycle de vie de développement du logiciel (SDLC) est à la fois couteux et perturbateur. De nos jours les cycles et le nombre de « builds » des logiciels se sont fortement accélérés avec l'adoption de l'Intégration Continue/Livraison Continue (Continuous Integration / Continuous Delivery - CI/CD), nécessitant l'intégration et/ou l'automatisation des tests de type AST ».

Encore une fois, c'est également un point important à souligner auprès des équipes qui démarrent un nouveau projet : il est très difficile « d'ajouter » de la sécurité à un produit presque terminé.

Les Recommandations

Le rapport Gartner contient des recommandations partagées par beaucoup, notamment les équipes de GrammaTech.

Il est important d'intégrer les solutions AST à toutes les étapes du développement, aussi bien au début de la conception que durant le développement, mais elles sont également essentielles durant les phases de production, de déploiement et de maintenance.

Tout d'abord, Gartner recommande « d’intégrer les solutions AST dans les phases de développement, de pré-lancement et de production. Assurez-vous de tester toutes les applications critiques et/ou exposées tôt dans le cycle, en continu et à mesure que le code évolue ou que les outils AST s'améliorent. »

Cette recommandation est partagée par GrammaTech qui pense que les outils SAST ne sont qu'une partie d'un ensemble complet d'outils. L'analyse statique est importante mais doit être associée à un programme d'amélioration de la qualité et de la sécurité logicielle combinant l’état de l’art des meilleures pratiques.

Deuxièmement, Gartner recommande « d’utiliser une combinaison de tests de sécurité allant des analyses SCA, Statiques, Dynamiques et interactifs pour une couverture optimale. L’utilisation de solutions SaaS (Software as a Service) peut réduire la complexité d'intégration et faire évoluer la capacité de test pour absorber les charges croissante de sortie des logiciels ».

Il est également essentiel que ces solutions AST s’intègrent facilement et fonctionnent de manière transparente avec les produits existants. Pour augmenter leur adoption et rationaliser leur utilisation, l’intégration des outils AST (SAST inclus) dans un process existant doit être le moins perturbant possible. Concernant les solutions SaaS, bien qu’elles soient efficaces et économiquement rentables dans bon nombre de cas, elles peuvent néanmoins s’avérer moins adaptées pour certains industriels pour des raisons de sécurité et de propriété intellectuelle. L’utilisation d’outils SAST « on-premise » (déployés sur site) peut donc se révéler préférable pour beaucoup d’utilisateurs.

Gartner continue en recommandant de « de sélectionner des outils AST qui s'intègrent à vos outils de développement tels que les environnements de développement intégrés (IDE), les systèmes de contrôle de version et les solutions de tests automatisés. Cela devrait prendre la forme d'une intégration soit native, soit via des plugins ou encore via des API Web qui autorisent la personnalisation »

CodeSonar dans le cadre d'un ensemble complet d'outils AST

Les outils SAST tel que CodeSonar fournissent une aide cruciale durant les phases de codage et d'intégration et se révèlent d’une adoption et d’une utilisation des plus faciles tout au long du cycle de vie du logiciel.

  • Priorisation et filtrage des vulnérabilités : CodeSonar donne un score sur les vulnérabilités (warning) permettant de hiérarchiser les violations en combinant plusieurs facteurs, y compris le niveau de confiance que l'outil a dans l'exactitude du warning décelé, la sévérité du warning et la complexité du chemin pour atteindre le warning, sachant que généralement, plus le chemin du warning est complexe moins le score est élevé.
  • Historique d'évaluation Build après Build : toutes les évaluations effectuées sur les vulnérabilités détectées sont persistantes d'une analyse à l'autre. Une fois qu'une vulnérabilité est qualifiée comme un défaut réel, il n'est pas nécessaire de refaire les évaluations à l'avenir et ce travail n'est pas perdu (contrairement aux avertissements de type compilateur qui changent de build à build.) Il existe plusieurs attributs différents stockés pour un warning comme, entre autres, l'état du warning qui indique sa place dans le processus d'évaluation. Ensuite il y a l'affectation du warning à un développeur spécifique pour indiquer qu’il est « attribué ». Il est également possible de reporter le traitement de ces vulnérabilités à plus tard. Les ingénieurs en développement utilisent généralement la priorité d'un warning pour indiquer l'urgence du warning ou pour le supprimer (s’il est faible) des recherches ultérieures.
  • Les approches clés pour traiter les vulnérabilités : sur les premières analyses, le nombre d'avertissements peut rapidement submerger une équipe de développement et les dissuader d’adopter l’outils dès le début du projet alors que c’est la phase ou elle en profite le plus. Il existe trois méthodes clés pour faciliter cette adoption :
  • Filtrer et concentrer : filtrer les résultats obtenus à partir de l'interface Web de CodeSonar, en se concentrant sur ce qui est le plus important pour le projet à ce moment-là et en affectant les développeurs à la résolution des problèmes critiques par ordre de priorité.
  • Marquer et différer : réduire la priorité du warning ou modifier son état sur « plus tard », par exemple, sur tout ou partie de warnings en fonction d'un ensemble de conditions moins cruciales pour le projet.
  • « Arrêtez le saignement » : en utilisant les techniques ci-dessus, pour différer temporairement les warnings existants en mettant l'accent sur la correction de nouveaux défauts introduits lorsque des modifications de code ou de nouveaux codes sont ajoutés.
  • Intégration aux IDEs : la clé pour intégrer l'analyse statique dans n'importe quel IDE est de suivre les conventions relatives aux rapports d'erreur et d'avertissement de la plateforme. Dans ce cas, CodeSonar signale les warnings dus à l’analyse statique de la même manière que le compilateur dans l'IDE (par exemple Eclipse ou Visual Studio) mais marqués d'un petit logo GrammaTech afin d'aider à différencier le type d'avertissement émis par l’IDE. Parmi les autres fonctionnalités clés, il y a la possibilité d'évaluer et de définir l'état des warnings et d'accéder à d'autres informations sur les warnings, ainsi que de créer un lien vers le warning directement dans l’IHM de CodeSonar afin de disposer des détails complets.
  • Intégration dans le workflow : les processus d'intégration et de déploiement continus s'appuient sur l'automatisation pour en tirer tous les avantages. Sans progrès efficace tout au long du cycle, la nature continue des processus amplifie les inefficacités. Par exemple, l'introduction de bogues inévitables chaque fois que des modifications de code et de nouvelles fonctionnalités sont mises en œuvre, la détection, le diagnostic et la correction de ces bogues peuvent ralentir l'ensemble du processus. L'introduction de l’analyse statique dans le processus garantit une meilleure qualité du code introduit dans le processus continu et détecte les nouvelles erreurs introduites avant que les tests unitaires (et souvent après !) soient effectués par exemple.
  • L'avantage de l'analyse statique des codes binaires : CodeConar de GrammaTech a la capacité unique d'effectuer une analyse statique avancée sur les codes binaires. Cela offre des avantages supplémentaires dans un processus d'intégration continue, en particulier lors de l'incorporation de fichiers binaires tiers ou de bibliothèques héritées. Même si le code source n'est pas disponible, cela n'empêche pas la capacité de détecter des erreurs et des failles de sécurité. De plus, les équipes de sécurité peuvent utiliser l'analyse binaire pour effectuer une analyse « boîte noire » des livrables du produit.
  • Détecter les failles de sécurité complexes que d'autres techniques de test peuvent manquer : l'analyse des flux de données depuis les sources (c'est-à-dire les interfaces) vers les synchronisations (où les données sont utilisées dans un programme) est essentielle pour détecter les vulnérabilités potentielles des données corrompues (tainted datas). Toute entrée, qu'elle provienne d'une interface utilisateur ou d'une connexion réseau, utilisée sans vérifier son intégrité est une vulnérabilité de sécurité potentielle.
De nombreuses attaques sont réalisées en introduisant des données, via les points d’entrées des applications, spécialement conçues pour altérer le comportement du système cible. Si ces données d’entrées sont utilisées sans vérifier leur validité (taille et valeur de la variable), elles peuvent être utilisées pour déclencher des conditions d'erreur ou pire. L'injection de code et la fuite de données sont des conséquences possibles de ces attaques, qui peuvent avoir de graves conséquences.
  • Vérifier l’application de règles de codage Secure : les outils d'analyse statique permettent de vérifier la syntaxe des codes sources et d’assurer la conformité vis-à-vis de règles (normes) de codage de sécurité. Divers standards de règles de codage de sécurité sont disponibles telles que SEI CERT C et les directives de codage sécurisé de Microsoft. Les normes de codage sont de bonnes pratiques car elles empêchent qu’un code critique puisse devenir une vulnérabilité future. Comme mentionné ci-dessus, l'intégration de ces vérifications dans le système de gestion de build et de configuration améliore la qualité et la sécurité du code dans le produit.

En résumé

Pour GrammaTech, le rapport Gartner fait des recommandations intéressantes et opportunes. Bon nombre des défis et des problèmes que GrammaTech a observé correspondent à ceux que l'on trouve sur le marché, en particulier lorsque les équipes logicielles sont dépassées lors de la première utilisation d’outils AST, y compris l'analyse statique. L’analyse statique peut sembler complexe au premier abord, cependant, CodeSonar fournit des fonctionnalités qui facilitent grandement son adoption permettant aux équipes d'utiliser ces outils dans le cadre de leur flux de travail quotidien. L'intégration de l'analyse statique dans un processus existant ne devrait donc pas être un obstacle majeur pour les équipes de développement logiciel.

Auteur : Vince ARNEJA – Chief Product Officer chez GrammaTech

Références : Gartner “How to Deploy and Perform Application Security Testing,” Frank Catucci, Michael Isbitski, 20 March 2020.

0

Ces articles peuvent vous intéresser

image blog article

SAST vs SCA

7 différences clés pour choisir la solution qui répondra à votre besoin !

image blog article

Accélérer l’analyse SAST

Pourquoi équilibrer les résultats et les ressources des tests de sécurité des applications est-ce important ?

image blog article

Benchmark de Faux positifs avec les outils SAST

Comment définir une référence de faux positifs avec les outils SAST ?

image blog article

Apports de l’Analyse Statique pour les codes propriétaires et OpenSource

Webinar en REPLAY : Vidéo de la 2e session sur les différents aspects de l’Analyse Statique !