In this article
Comprendre les techniques de test en boîte grise
Les tests logiciels permettent de mettre au jour les failles, les vulnérabilités, les risques et les menaces dont des attaquants malveillants pourraient tirer parti et ainsi compromettre le logiciel. Parmi les différentes méthodes de tests de sécurité des applications, le test en boîte grise (ou « grey box »), également appelé test en boîte translucide, est l’une des plus populaires.
Qu’est-ce que le test en boîte grise ?
Qu’est-ce que le test boîte grise ?
La méthode de test boîte grise combine des techniques de test boîte blanche et boîte noire pour détecter les défauts et les failles de sécurité des produits logiciels et des applications. Elle est utile pour tester les applications web et présente des avantages pour les tests d’intégration, les tests d’intrusion et les tests de domaine. Les tests d’intrusion en boîte grise sont souvent réalisés avec un accès au système, ce qui permet au testeur de lancer des attaques sophistiquées pour découvrir les failles du logiciel.
Dans le cadre d’un test en boîte blanche, les testeurs connaissent le code source et les composants internes du logiciel. Ils peuvent donc tester l’application du point de vue du développeur et modifier sa structure interne ou son code pour corriger les failles. À l’inverse, lors d’un test en boîte noire, l’utilisateur ou l’outil ne connaît pas au préalable la structure interne de l’application. Cette méthode se concentre plutôt sur ses couches externes, auxquelles un attaquant externe aurait généralement accès. Dans le cadre d’un test en boîte grise, le testeur possède des connaissances partielles sur l’application testée.
Le test en boîte grise offrant un bon équilibre entre l’efficacité du test en boîte noire et la profondeur du test en boîte blanche, il s’agit souvent de la méthode privilégiée.
Exemple de test en boîte grise
Pour mieux comprendre le test en boîte grise, prenons l’exemple d’une application web qui affiche une liste d’articles. Lorsqu’un utilisateur clique sur un article, il est redirigé vers une page qui contient davantage d’informations à son sujet. Par exemple, l’URL d’une page affichant les détails d’un article pourrait être www.example.com/post/title-of-the-post/12345, où 12345 correspond à l’identifiant unique de l’article dans la base de données.
Avec une approche de test en boîte grise, vous pourriez procéder comme suit :
Cliquez sur l’article pour vérifier qu’une nouvelle page s’ouvre.
Vérifiez que le paramètre d’identifiant dans l’URL de la page correspond à l’identifiant de l’article récupéré dans la base de données.
Vérifiez que les utilisateurs non autorisés ne peuvent pas manipuler les paramètres de l’URL pour accéder à des données sur l’article auxquelles ils n’ont pas droit.
Vérifiez que l’intégrité des données fournies n’a pas été compromise.
En revanche, une approche de test en boîte noire se limiterait à :
Cliquer sur le lien pour vérifier qu’il ouvre une nouvelle page contenant plus d’informations sur l’article.
Dans ce cas, toutefois, comme le testeur n’a pas accès aux composants internes de l’application, il est impossible de savoir si le bon article a été fourni, au-delà de ce que l’utilisateur peut vérifier dans l’interface.
La principale différence entre les tests en boîte blanche et en boîte noire réside dans leur niveau de profondeur. Les techniques de test en boîte blanche donnent accès au code source et permettent de vérifier les choses plus en profondeur : vous pouvez examiner les données du code réel de l’application afin de valider, entre autres, la logique et l’intégrité des données.
Le test en boîte grise vous permet de combiner le point de vue d’un attaquant et la connaissance de l’application pour détecter les vulnérabilités.
Chaque technologie et framework a ses forces et ses faiblesses. Le test en boîte grise vous permet de vous appuyer sur ces connaissances pour réaliser un test d’intrusion de l’application et concevoir des attaques sophistiquées ciblant ces faiblesses. Par exemple, si vous savez que l’application est écrite en Java et utilise le framework de journalisation Java, vous pouvez rechercher les vulnérabilités Log4J.
Lancez-vous dans les compétitions Capture The Flag
Apprenez à résoudre des défis Capture The Flag en regardant à la demande notre atelier virtuel d’initiation.
Test en boîte grise, blanche ou noire : quelles différences ?
Examinons maintenant les principales différences entre ces trois techniques de test : en boîte blanche, noire et grise.
Niveau de test
Le test en boîte blanche permet au testeur de sécurité d’évaluer une application en disposant du niveau de connaissances le plus élevé à son sujet. À l’inverse, le test en boîte noire évalue l’application du point de vue d’un attaquant externe, sans lui fournir aucune information. Quant au test en boîte grise, il évalue l’application avec des connaissances partielles à son sujet.
Rôle du testeur
Les tests en boîte blanche sont généralement effectués par des développeurs et des testeurs qui écrivent ou comprennent le code. Les tests en boîte noire peuvent être réalisés par des testeurs qui ne connaissent ni la structure interne ni le code de l’application. Enfin, les tests en boîte grise peuvent être effectués aussi bien par des développeurs que par des testeurs en sécurité.
Compétences requises
Le test en boîte noire ne nécessite pas forcément de connaître le langage de programmation utilisé et prend moins de temps. Le test en boîte blanche peut, quant à lui, exiger une connaissance approfondie du langage de programmation et des technologies utilisées, et demande davantage de temps. Le test en boîte grise requiert une connaissance partielle du langage et des technologies utilisés. Le test en boîte blanche est donc plus difficile que les tests en boîte grise ou en boîte noire.
Coût
En matière de coûts, le test en boîte noire est la méthode la moins chère, mais il révèle généralement moins de vulnérabilités. Le test en boîte blanche est le plus coûteux et permet habituellement d’en découvrir davantage. Le test en boîte grise se situe entre les deux, tant en matière de coût que de nombre de vulnérabilités détectées.
Types de tests en boîte grise
Examinons maintenant les différents types de tests en boîte grise.
Test matriciel
Le test matriciel permet aux développeurs et aux testeurs de déterminer les variables utilisées par une application. Cette technique aide également à repérer les variables redondantes ou inutilisées.
Tests de régression
Le test de régression est un type de test logiciel réalisé après des modifications du produit afin de vérifier que le logiciel fonctionne toujours comme prévu. Les mises à niveau logicielles sont régulières ; les tests de régression permettent de s’assurer que ces mises à jour et modifications ne créent pas de problèmes dans d’autres parties de l’application.
Test par motifs
Ce test consiste à examiner une version précédente du logiciel afin de repérer les motifs à l’origine de défauts ou de failles. Ces failles peuvent aider à identifier et à prévenir des problèmes similaires dans la nouvelle version de votre application.
Test par tableaux orthogonaux
Cette méthode statistique de test des performances assure une couverture maximale du code avec un nombre minimal de cas de test, même pour des applications complexes.
Éléments à tester en boîte grise
Voici quelques aspects essentiels à tester en boîte grise :
Failles de sécurité internes : recherchez les failles de sécurité internes à l’application. Vous pouvez, par exemple, tester certaines actions restreintes qu’un utilisateur connecté disposant de privilèges d’employé ou de membre est le seul à pouvoir effectuer.
Flux des entrées : testez et comprenez la manière dont certaines entrées circulent dans l’application.
Validation des sorties : détectez et vérifiez que la sortie attendue est renvoyée.
Chemins d’exécution du code : recherchez les chemins d’exécution défectueux ou mal structurés.
Boucles conditionnelles : testez le comportement d’une boucle conditionnelle.
Contrôle des accès : vérifiez que seuls les utilisateurs disposant des droits appropriés peuvent effectuer une action. Vous pouvez, par exemple, tester un endpoint qui permet uniquement aux administrateurs de supprimer des articles d’un inventaire.
Techniques de test en boîte grise
À mesure que les outils et les processus de test automatisé ont gagné en maturité, ils ont simplifié l’exécution et le test des applications. Des outils comme SAST, DAST et IAST vous permettent d’améliorer automatiquement la qualité et l’intégrité du code avec peu d’efforts.
En plus de disposer des bons outils, le test en boîte grise nécessite une connaissance partielle du code source et un accès à celui-ci. Sans accès au code de l’application, vous serez limité aux seuls tests en boîte noire.
Le test en boîte grise comprend les étapes suivantes :
Sélection des entrées : identifiez et choisissez les entrées pour les tests en boîte blanche et en boîte noire.
Identification des sorties : déterminez les sorties attendues pour les entrées sélectionnées.
Identification des chemins : déterminez les principaux chemins, voire tous les chemins essentiels, pour la phase de test. Notez les fonctions supplémentaires (sous-fonctions) présentes dans le chemin : elles font partie des fonctions de test principales pour les tests approfondis.
Entrées des sous-fonctions : identifiez les entrées des sous-fonctions choisies.
Sorties des sous-fonctions : identifiez à nouveau les sorties attendues des sous-fonctions sélectionnées.
Exécution des cas de test : vérifiez l’exactitude de vos résultats en exécutant un cas de test pour les sous-fonctions.
Répétition : répétez les étapes 4 à 6 pour les autres sous-fonctions et fonctions.
Avantages et inconvénients du test en boîte grise
Le test en boîte grise joue un rôle essentiel dans les tests d’intrusion des applications, car il tire parti des points forts des tests en boîte noire et en boîte blanche. Voici ses principaux avantages et inconvénients.
Avantages :
Il réunit les avantages des tests en boîte blanche et en boîte noire, ce qui améliore la qualité de votre application.
Les testeurs n’ont pas nécessairement besoin d’être très compétents en programmation, mais doivent connaître le code.
Il améliore la collaboration entre testeurs et développeurs.
Il est très efficace et prend peu de temps.
Inconvénients :
Les testeurs peuvent ne pas avoir accès à tous les chemins d’exécution du code.
La conception des cas de test peut être difficile.
Il est impossible de réaliser un test complet en boîte blanche, car le testeur ne connaît qu’une partie limitée de la structure interne.
Apprécié par les développeurs. Les équipes de sécurité lui font confiance.
Les outils Snyk, conçus pour les développeurs, offrent une sécurité intégrée et automatisée qui répond à vos exigences de gouvernance et de conformité.
Conclusion
Le test en boîte grise combine des techniques de test en boîte blanche comme SAST et des méthodes de test en boîte noire comme DAST. Le test en boîte noire recherche les vulnérabilités et les défauts du code, comme le ferait un attaquant externe, tandis que l’approche en boîte blanche analyse le code source pour repérer les vulnérabilités susceptibles d’être exploitées.