web-dev-qa-db-fra.com

Boîte à blanc vs. Black-box

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?

21
AviD

Certaines réponses vraiment bonnes ici, mais quelques points supplémentaires, je pense être important d'ajouter:

  • Comme @atdre mentionné, il ne devrait pas être non plus/ni deux créatures différentes et mesurent différentes choses. Si possible, vous devriez faire les deux.
  • Aussi comme @atdre dit, des tests - même Whitebox + Blackbox - ne suffit pas. Il y a d'autres choses que vous devez faire pour être en sécurité, y compris tout un SDL holistique, avec une gestion appropriée des risques, une analyse, etc.
  • Au point ... Blackbox est généralement plus rapide, souvent par ordre de grandeur. Whitebox (y compris la revue de code) nécessite généralement beaucoup plus de travail.
  • Blackbox (c'est-à-dire pentestes) a généralement un coût moins cher que la Whitebox, pas seulement au total mais aussi par heure.
  • Il y a plus de fournisseurs de blackbox 3ème partie de qualité que Whitebox - pas au total, mais comptant uniquement ceux qui vraiment savent ce qu'ils font. (Ou est-ce juste ma perception?)
  • WB trouve souvent beaucoup de vulnérabilités plus profondes que BB.
  • WB peut souvent trouver des filtres défectueux, que BB n'était pas capable de contourner (jusqu'à ce que le filtre est construit - un autre point vers boîte grise Test).
  • Il existe de nombreux types de défauts que BB ne peut même pas tester - par exemple. Journaux d'audit, défauts crypto, durcissement backend, etc.
  • BB peut tester l'ensemble du système, avec toutes les protections de non-code en place (E.G. WAF, IPS, le durcissement du système d'exploitation, etc.) où WB ne se trouve que sur le niveau d'application (E.G. Code/Conception, etc.). Notez que cela peut aller les deux manières - parfois, vous empêchez de remplir une analyse BB, même si une fois que vous connaissez le vecteur , vous seriez capable de contourner le Protections.
  • De même, BB peut découvrir des interactions défectueuses entre les sous-systèmes, où la WB la manquait généralement. Considérez cela comme test unitaire et test du système.
  • La WB peut souvent être effectuée bien avant que le système soit terminé, BB doit être construit, compilé, opérationnel (et de préférence la plupart des bugs fonctionnels épargnés). Cela peut rendre une SDL plus efficace, lorsque des critiques peuvent être effectuées tôt dans le cycle de vie.
  • D'autre part, si un système est déjà en place, il est simple de démarrer un BB, mais si vous voulez faire du wb (le faire à droite), vous devez commencer à chasser tout le code source, les bibliothèques, les outils, etc. Vous n'avez même pas le code source car sa tierce, lits, etc.
7
AviD

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:

  • La langue et ses bibliothèques de classe de base doivent être prises en charge par l'outil d'analyse statique sécurisé
  • L'ensemble du système doit généralement être disponible. C'est à dire. Il doit inclure un code source constructible comprenant toutes les composantes tierces/contributions et les bibliothèques externes - peut-être même pour inclure le compilateur système, la machine virtuelle VM ou d'autres artefacts du système d'origine.
  • Tous les composants/bibliothèques externes qui ne font pas partie des bibliothèques de la classe de base doivent avoir des sources et des puits définis dans la base de données Source-Skin-PassThru de l'outil d'analyse statique sécurisée. Les complexités de certains passthus (c'est-à-dire des filtres) peuvent varier selon la mise en œuvre ou la mise en œuvre, et nécessitent donc presque toujours une configuration personnalisée.
  • L'utilisation supplémentaire de certains modèles ou éléments de code architectural pourrait provoquer d'autres variations, ce qui pourrait nécessiter une personnalisation qui n'est pas possible avec la plupart des outils d'analyse statique sécurisés modernes.

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.

9
atdre

boîte noire

  • avantages: tests faciles, rapides et simples
  • inconvénients: Parfois, il n'est pas possible de tester certaines parties de l'application (pour vérifier les algorithmes de hachage, l'entropie d'identité de session, ...); Vous ne pouvez pas être sûr que toute application a été testée

boîte blanche

  • avantages: Possibilité de vérifier les codes source (économies de temps - pas besoin de tester l'injection SQL si vous pouvez voir que les paramètres sont utilisés de manière sûre partout); Vous pouvez tester des pièces d'application qui ne sont pas accessibles/testables à l'aide de GUI
  • inconvénients: les tests peuvent devenir vraiment complexes

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, ...).

5
bretik