Quels sont les avantages relatifs et les inconvénients de chaque forme de test?
C'est à dire. Quelle est la différence entre analyse de code statique et tests d'exécution/pénétration dynamique?
Quels sont les avantages et les inconvénients de chacun? Y a-t-il des situations où l'on est préférable sur l'autre?
Certaines réponses vraiment bonnes ici, mais quelques points supplémentaires, je pense être important d'ajouter:
Je crois que cette question est mieux adressée au chapitre 4 de l'art de l'évaluation de la sécurité logicielle, un livre de Mark Dowd, Justin Schuh, et John McDonald.
Sans cela comme référence, je peux vous dire en toute sécurité que la meilleure méthode utilise des données d'exécution avec le code source tout en déterminant des "hits" (ou des traces, une couverture alias) à l'aide d'un test de boîte noire - mais seulement après un modèle de menace et l'architecture générale du système est bien connue.
Les auteurs semblent également aiment l'analyse de code statique sécurisée lorsqu'il est associé à des stratégies de point candidates, bien que mon opinion soit mon opinion que celles-ci peuvent varier sauvagement de valeur en supposant que ce qui suit n'est pas vrai:
Pour les raisons ci-dessus, ainsi que les raisons exposées dans les études NIST Sate (effectuées par NIST Samate), j'ai du mal à recommander de nombreux outils d'analyse statiques sécurisés à utiliser dans une analyse de la boîte blanche. Il est presque toujours préférable d'utiliser des stratégies de compréhension du code qui impliquent probablement la lecture du code source de haut en bas, ce qui est vraiment très important si vous recherchez des rootkits de code gérés etc.
Au lieu de tester et d'audit/d'évaluation des applications, je prendrais une approche différente qui est en grande partie très technologique-agnostique. Ma suggestion serait de mettre en œuvre un portail de gestion des risques de sécurité des applications qui inclut un inventaire d'applications avec les contrôles de sécurité des applications actuellement appliqués de chaque application. Après une première base de référence, les contrôles de sécurité des applications doivent être évalués contre les normes de l'industrie telles que la CWE, le SafeCode et l'OWASP ASVS. Une analyse de l'écart (note qu'il s'agit d'un terme de gestion des risques standard et qui fonctionne mieux lors de la mise en œuvre dans un programme de gestion de la sécurité des informations basé sur l'ISO 27001 ou similaire) peut ensuite être utilisé pour déterminer les contrôles de sécurité des applications optimales, ainsi qu'un chemin d'accès à des contrôles actuellement mis en œuvre aux celles requises.
Vous devez mettre en œuvre ce portail de gestion des risques avant d'effectuer une activité d'évaluation des risques, telle que la boîte à blanc ou les tests sur la boîte à blanc afin d'obtenir de meilleurs résultats et de mesurer le succès de votre programme.
boîte noire
boîte blanche
En général, le test de la boîte blanche vous permet de plonger dans le code source et de procéder à des tests de pénétration complètes, mais peut consommer beaucoup de temps, tandis que la boîte noire est facile, rapide et simple. Je préfère Boîte grise Test - à l'aide de méthodes de boîte noire et d'entretien des développeurs/vérification du code source uniquement sur des parties spécifiques d'application (authentification, gestion de session, gestion de la configuration, ...).