Découvrez comment la solution Parasoft Continuous Quality permet de contrôler et de gérer les environnements de test pour fournir des logiciels de haute qualité en toute confiance. Inscrivez-vous pour la démo >>

BLOG

SAST vs DAST: comment les utiliser ensemble, pas séparément

SAST vs DAST: comment les utiliser ensemble, pas séparément Temps de lecture : 6 minutes
Lorsqu'ils comparent SAST et DAST, les développeurs disent souvent qu'ils se complètent, mais recommandent simplement d'utiliser les deux, ce qui n'est pas nécessairement complémentaire, car il s'agit simplement de faire deux choses différentes. Mais toi peut combinez SAST et DAST pour AppSec de manière complémentaire, en maximisant la valeur de SAST pour votre entreprise en tirant parti de DAST.

Le potentiel de synergie réelle entre SAST et DAST vient de vos outils SAST et DAST qui se soutiennent mutuellement d'une manière qui est vraiment au cœur de la méthodologie de sécurité des applications Secure-by-Design. Donc ce n'est pas vraiment SAST vs DAST, mais plutôt SAST informé DAST. Comment cela marche-t-il?

Commençons par les bases de ces deux méthodologies de test de sécurité des applications.

Qu'est-ce que SAST?

SAST est Test de sécurité des applications statiques, c'est-à-dire analyser une application sans l'exécuter. Il existe plusieurs façons de le faire, de la revue humaine à l'analyse des métriques en passant par l'analyse des modèles et l'analyse des flux de données. Ceci est considéré comme un test en boîte blanche. Le plus souvent, les utilisateurs de SAST sont concernés par l'analyse des flux de données, car elle leur permet de rechercher des failles de sécurité telles que des données corrompues avant que l'application ne soit terminée.

Au début de l'analyse statique, l'accent était mis non seulement sur la recherche de bogues, mais aussi sur la recherche de constructions de code suspectes ou risquées (voir Meyer C ++ efficace) ainsi que l'application des normes de génie logiciel. Dans le monde de la sécurité, SAST est devenu essentiellement une analyse de flux. Essentiellement, SAST est utilisé pour trouver des vulnérabilités, similaires à DAST, mais plus tôt dans le SDLC.

Avantages de SAST

Un test plus précoce est meilleur car il coûte beaucoup moins cher, donc le principal avantage de SAST est qu'il peut être fait plus tôt - bien avant que l'application ou le système complet ne soit prêt. Avec SAST, vous avez une connaissance interne approfondie du code afin de savoir exactement quel code est impliqué dans un problème.

Inconvénients de SAST

Par contre, avec SAST, vos tests ne sont pas contre un système réel, et les outils doivent synthétiser des données afin d'essayer de piloter la couverture d'une fonction ou d'un chemin de données. Pour cette raison, les outils SAST risquent de renvoyer un rapport faussement positif, ce qui signifie qu'ils peut vous dire qu'un morceau de code a une vulnérabilité alors qu'il est réellement sûr. De plus, les outils SAST sont généralement spécifiques à une langue particulière. Cela les rend coûteux pour les organisations à construire et à maintenir (principalement un problème pour les fournisseurs d'outils) et signifie que vous avez besoin d'outils pour chaque langue utilisée dans vos applications.

Qu'est-ce que DAST?

DAST est Test de sécurité dynamique des applications. Cela signifie tester une application (ou un appareil) en état de marche, généralement via ses entrées et ses interfaces. Il s'agit souvent de tests en boîte noire, dans le sens où vous utilisez l'application sans examiner en profondeur ses composants internes (code source).

Avantages de DAST

Le plus grand avantage de DAST est qu'il s'agira évidemment de tests réalistes qui prennent en compte l'application complète et / ou le système de bout en bout. Deuxièmement, les tests DAST ne dépendent pas d'une connaissance approfondie du code et les outils ne nécessitent pas de support spécifique pour chaque langage.

Inconvénients de DAST

Le gros inconvénient de DAST, en revanche, est qu'il n'inclut pas une connaissance approfondie de votre code. Cela signifie que lorsque vous trouvez un problème, cela peut prendre du temps réel et des efforts pour déterminer exactement quel code sous-jacent est à l'origine du problème.

De plus, DAST est une technologie de «test», c'est-à-dire qu'elle intervient après la conception et le codage. C'est donc un très bon moyen de vérifier qu'une application est sécurisée, mais si c'est le principal moyen utilisé pour sécuriser le logiciel, vous essayez vraiment de tester la sécurité de votre application, ce qui est une tâche sisyphe. Vous ne pouvez pas plus tester la sécurité dans une application que vous pouvez tester la qualité dans une application - c'est pourquoi de nouvelles réglementations telles que (RGPD) et les prochaines directives de la FDA reposent sur la méthodologie Security-by-Design.

Compléter DAST avec SAST

Maintenant que vous connaissez la différence entre DAST et SAST, et quelques-uns de leurs avantages et inconvénients, il est temps de voir comment vous pouvez les faire fonctionner ensemble. Mais pourquoi voudriez-vous faire cela en premier lieu?

Avoir une stratégie SAST forte qui intègre des vérificateurs de détection précoce pour des faiblesses telles que CWE ainsi que des normes de codage sécurisées comme CERT est le moyen le plus complet de sécuriser une application et de ne plus avoir les mêmes problèmes de sécurité. Mais afin de compléter DAST, nous pouvons connecter SAST à ce que fait DAST, en informant nos activités SAST avec les informations obtenues de DAST.

Pour mieux comprendre son fonctionnement, j'aime penser à un logiciel comme une ligne d'assemblage et commencer par la fin de la ligne, en utilisant un processus d'amélioration en 3 étapes pour la sécurité. La phase 1 est meilleure que rien, mais elle est loin d'être aussi bonne que la phase 3.

Test de sécurité avant la publication (La phase 1)

La première phase de la sécurité des applications est entièrement DAST. Pour la sécurité des applications, nous prenons l'application finale, compilons avant la publication, et nous la martelons, essayant de la pénétrer de toutes les manières possibles - c'est DAST. Si nous trouvons quelque chose, nous évaluons à quel point c'est méchant et le réparons quand nous le pouvons, en libérant quand nous le devons. Il y a un énorme sujet en soi autour de ce problème (publier des logiciels avec des faiblesses et des vulnérabilités connues), mais je laisserai cela pour un autre jour.

Parce que ces tests arrivent à la fin, il y a toujours une pression de temps, ainsi que des difficultés supplémentaires pour trouver et résoudre le problème sous-jacent, mais il est certainement préférable de faire ces tests que de ne pas le faire du tout, c'est donc un bon début.

Détection précoce - Déplacer la sécurité vers la gauche (La phase 2)

La deuxième phase du processus d'amélioration de la sécurité des applications ajoute SAST, pour résoudre ce problème de fin de cycle. Comment pouvons-nous commencer les tests de sécurité avant que l'application ne soit prête? SAST est notre réponse évidente. Les vérificateurs SAST peuvent s'exécuter dès que nous avons du code. Les vérificateurs de flux de données dans SAST peuvent généralement être directement corrélés aux types de problèmes détectés par DAST, il est donc facile de savoir ce qu'il faut rechercher et ce que cela signifie lorsque SAST trouve une faiblesse.

C'est une bonne prochaine étape, car nous avons non seulement plus de temps pour corriger, mais aussi les tests sont plus proches de la source, donc le temps qu'il faut pour comprendre ce qui ne va pas est beaucoup plus court. Notre SAST prend maintenant le travail de notre DAST et le fait plus tôt.

Prévention - Prendre de l'avance sur la courbe (La phase 3)

Le flux de données ne fait que faire plus de tests de sécurité, alors comment passer au niveau suivant et combiner SAST et DAST pour se compléter? La troisième phase est celle où nous réalisons réellement la valeur de l'utilisation conjointe des deux outils.

Pour passer SAST vs DAST dans une situation totalement complémentaire, nous pouvons prendre le résultats de DAST à informer notre SAST, en ajustant nos configurations de règles d'analyse statique et en nous indiquant quels types de faiblesses de sécurité nous devons rechercher. En utilisant DAST de cette façon, il peut permettre à SAST de nous dire tout ce dont nous avons besoin sur l'origine des vulnérabilités de sécurité, comment nous pouvons les atténuer et comment nous pouvons coder de manière à ce qu'elles ne se produisent pas.

Donc comment ça fonctionne? Tout d'abord, nous devons effectuer une analyse des causes profondes à l'aide des résultats de DAST. Par exemple, avec l'injection SQL, nous devons nous assurer que les données sont nettoyées au fur et à mesure qu'elles entrent, nous n'avons donc pas à compter sur la poursuite des données à travers une myriade de chemins pour voir si elles peuvent échapper au nettoyage. Nous devons également examiner les normes SAST comme celles de CERT afin que nous puissions à la fois éviter les constructions qui pourraient fonctionner mais qui ne sont pas sécurisées, et imposer de bons comportements qui durciront notre application, même si elles pourraient ne pas être nécessaires dans une programmation normale (non sécurisée). Des règles SAST appropriées empêchent les problèmes rencontrés avec DAST, et nous continuons à apprendre de DAST sur la façon de configurer et d'ajuster notre SAST.

Bénéficiez d'une approche à sécurité intégrée

En utilisant SAST et DAST ensemble, vous vous retrouvez avec ce que j'aime à penser comme une mentalité de sécurité intégrée. Ainsi par exemple, sans secure-by-design, avant (RGPD), nous avons stocké toutes les données des utilisateurs sans cryptage, puis avons discuté des données particulières qui méritaient une protection supplémentaire, comme les mots de passe ou les numéros de sécurité sociale. Dans un environnement sécurisé par conception et à sécurité intégrée, nous adoptons l'approche opposée et chiffrons tout, puis discutons de ce qui est sûr à ne pas chiffrer. De cette façon, le comportement par défaut est sûr ou «à sécurité intégrée», et vous maximisez avec succès votre SAST et DAST.

Donc sois prudent! Les vérificateurs SAST qui effectuent des tests de type DAST sont ceux qui attirent l'intérêt des utilisateurs et des analystes, mais la plus grande valeur provient des vérificateurs ennuyeux basés sur des normes qui appliquent un comportement sécurisé approprié. Ces vérificateurs vous permettent de passer des tests tardifs à la détection précoce, en passant par les normes de codage préventives réelles qui renforcent votre application. SAST peut complètent DAST en fournissant une atténuation précoce et en permettant à DAST d'être utilisé principalement pour vérifier que l'application est sécurisée, plutôt que d'essayer de briser l'application.

Intégrez la sécurité dans votre application dès le début

Écrit 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.