In this article
Gray-Box-Testverfahren verstehen
Beim Testen von Software decken wir Schwachstellen, Sicherheitslücken, Risiken und Bedrohungen auf, die böswillige Angreifer ausnutzen und so die Software kompromittieren könnten. Unter den verschiedenen Methoden des Application-Security-Tests zählt Gray-Box-Testing (auch Grey-Box-Testing) – auch als transluzentes Testen bekannt – zu den beliebtesten.
Gray-Box-Testing erklärt
Was ist Gray-Box-Testing?
Die Gray-Box-Testmethode kombiniert White-Box- und Black-Box-Testtechniken, um Softwareprodukte und Anwendungen auf Fehler und Sicherheitslücken zu prüfen. Sie eignet sich für die Prüfung webbasierter Anwendungen und ist bei Integrationstests, Penetrationstests und Domänentests hilfreich. Gray-Box-Penetrationstests werden häufig mit Zugriff auf das System durchgeführt. So kann der Tester komplexe Angriffe starten, um Schwachstellen in der Software aufzudecken.
Beim White-Box-Testing kennen die Tester den Quellcode und die internen Abläufe der Software. So können sie die Anwendung aus Sicht der Entwickler testen und die interne Struktur oder den Code ändern, um Fehler zu beheben. Beim Black-Box-Testing hingegen haben weder der Nutzer noch das Tool Vorkenntnisse über die interne Struktur der Anwendung. Diese Testmethode konzentriert sich stattdessen auf die äußeren Ebenen der Anwendung – also auf diejenigen, auf die externe Angreifer normalerweise Zugriff hätten. Beim Gray-Box-Testing verfügen die Tester über Teilwissen zur getesteten Anwendung.
Da Gray-Box-Testing ein ausgewogenes Verhältnis zwischen der Effizienz von Black-Box-Tests und der Prüftiefe von White-Box-Tests bietet, ist es oft die bevorzugte Testmethode.
Beispiel für Gray-Box-Testing
Betrachten wir zum besseren Verständnis von Gray-Box-Testing eine Webanwendung, die eine Liste von Beiträgen anzeigt. Klickt ein Nutzer auf einen Beitrag, wird er zu einer Seite mit weiteren Informationen über den Beitrag weitergeleitet. Die URL einer Seite mit Beitragsdetails könnte beispielsweise so aussehen: www.example.com/post/title-of-the-post/12345. Dabei steht 12345 für die eindeutige ID des Beitrags in der Datenbank.
Beim Gray-Box-Test können Sie beispielsweise folgende Schritte durchführen:
Klicken Sie auf den Beitrag, um zu prüfen, ob tatsächlich eine neue Seite geöffnet wird.
Prüfen Sie, ob der ID-Parameter in der URL der Seite mit der ID des aus der Datenbank abgerufenen Beitrags übereinstimmt.
Prüfen Sie, ob Nutzer ohne entsprechende Berechtigungen URL-Parameter manipulieren können, um auf nicht autorisierte Beitragsdaten zuzugreifen.
Prüfen Sie, ob die Integrität der bereitgestellten Daten gewahrt wurde.
Ein reiner Black-Box-Test würde hingegen Folgendes umfassen:
Klicken Sie auf den Link, um zu prüfen, ob eine neue Seite mit weiteren Informationen zum Artikel geöffnet wird.
Da der Tester in diesem Fall jedoch keinen Zugriff auf die internen Abläufe der Anwendung hat, lässt sich nicht feststellen, ob der richtige Beitrag bereitgestellt wurde – abgesehen von dem, was sich über die Benutzeroberfläche überprüfen lässt.
Der Hauptunterschied zwischen White-Box- und Black-Box-Testing liegt in der Prüftiefe. Mit White-Box-Testverfahren, bei denen der Tester Zugriff auf den Quellcode hat, können Sie Dinge eingehender überprüfen: Sie können die tatsächlichen Daten des Anwendungscodes einsehen und damit unter anderem die Korrektheit der Logik und die Datenintegrität validieren.
Gray-Box-Testing verbindet die Perspektive eines Angreifers mit Kenntnissen über die Anwendung, um Schwachstellen aufzudecken.
Jede Technologie und jedes Framework hat Stärken und Schwächen. Mit Gray-Box-Testing können Sie dieses Wissen nutzen, um eine Anwendung einem Penetrationstest zu unterziehen und gezielte, ausgefeilte Angriffe auf diese Schwächen zu entwickeln. Wissen Sie beispielsweise, dass die Anwendung in Java geschrieben ist und das Java-Logging-Framework verwendet, können Sie sie auf Log4J-Schwachstellen testen.
Starten Sie mit Capture the Flag
Erfahren Sie in unserem virtuellen On-Demand-Workshop für Einsteiger, wie Sie Capture-the-Flag-Herausforderungen lösen.
Gray Box, White Box und Black Box: Testmethoden im Vergleich
Sehen wir uns nun die wichtigsten Unterschiede zwischen den drei Testverfahren an: White-Box-, Black-Box- und Gray-Box-Testing.
Testniveau
Beim White-Box-Testing können Sicherheitstester eine Anwendung mit umfassenden Kenntnissen über sie testen. Beim Black-Box-Testing wird die Anwendung hingegen aus der Sicht eines externen Angreifers geprüft, dem keinerlei Informationen vorliegen. Gray-Box-Testing erfolgt mit Teilwissen über die Anwendung.
Rolle der Tester
White-Box-Tests werden typischerweise von Entwicklern und Testern durchgeführt, die den Code schreiben oder verstehen. Black-Box-Tests können Tester durchführen, die weder die interne Struktur noch den Code der Anwendung kennen. Gray-Box-Tests können sowohl Entwickler als auch Sicherheitstester durchführen.
Erforderliche Kenntnisse
Für Black-Box-Tests sind Kenntnisse der verwendeten Programmiersprache nicht unbedingt erforderlich; außerdem benötigen sie weniger Zeit. White-Box-Tests hingegen können fundierte Kenntnisse der verwendeten Programmiersprache und Technologie erfordern und sind zeitaufwendiger. Gray-Box-Tests setzen Teilkenntnisse der verwendeten Sprache und Technologie voraus. Daher sind White-Box-Tests anspruchsvoller als Gray-Box- oder Black-Box-Tests.
Kosten
Black-Box-Testing ist die kostengünstigste Testmethode, deckt aber meist weniger Schwachstellen auf. White-Box-Testing ist am teuersten und findet in der Regel mehr Schwachstellen. Gray-Box-Testing liegt hinsichtlich Kosten und Anzahl der entdeckten Schwachstellen zwischen den beiden Methoden.
Arten von Gray-Box-Testing
Sehen wir uns nun die verschiedenen Arten des Gray-Box-Testings an.
Matrix-Testing
Mit Matrix-Testing können Entwickler und Tester ermitteln, welche Variablen eine Anwendung verwendet. Dieses Verfahren hilft auch dabei, redundante und ungenutzte Variablen zu identifizieren.
Regressionstests
Regressionstests sind eine Art von Softwaretests, die nach Änderungen am Produkt durchgeführt werden, um sicherzustellen, dass die Software weiterhin wie geplant funktioniert. Software wird regelmäßig aktualisiert. Regressionstests stellen sicher, dass diese Updates und Änderungen keine Probleme in anderen Teilen der Anwendung verursachen.
Pattern-Testing
Bei diesem Test wird die vorherige Softwareversion untersucht, um Muster zu erkennen, die zu Defekten oder Fehlern führen. Diese Fehler lassen sich nutzen, um ähnliche Probleme in der neueren Version Ihrer Anwendung zu erkennen und zu vermeiden.
Orthogonal-Array-Testing
Diese statistische Methode für Performance-Tests erzielt beim Testen komplexer Anwendungen eine maximale Codeabdeckung mit möglichst wenigen Testfällen.
Was beim Gray-Box-Testing zu prüfen ist
Beim Gray-Box-Testing gibt es mehrere wichtige Aspekte, die geprüft werden sollten:
Interne Sicherheitslücken: Testen Sie eine Anwendung auf interne Sicherheitslücken. Prüfen Sie beispielsweise bestimmte eingeschränkte Aktionen, die nur angemeldete Nutzer mit Mitarbeiter- oder Mitgliederberechtigungen ausführen können.
Eingabefluss: Testen und untersuchen Sie, wie bestimmte Eingaben durch die Anwendung fließen.
Ausgabevalidierung: Ermitteln und prüfen Sie, ob die erwartete Ausgabe zurückgegeben wird.
Codepfad: Testen Sie auf fehlerhafte oder schlecht strukturierte Codepfade.
Bedingte Schleifen: Testen Sie das Verhalten einer bedingten Schleife.
Zugriffsvalidierung: Prüfen Sie, ob nur Nutzer mit den erforderlichen Zugriffsrechten eine Aktion ausführen können. Testen Sie beispielsweise einen Endpunkt, über den nur Administratoren Artikel aus einem Bestand löschen dürfen.
Gray-Box-Testverfahren
Mit der Weiterentwicklung automatisierter Testtools und -prozesse ist das Ausführen und Testen von Anwendungen einfacher geworden. Tools wie SAST, DAST und IAST helfen Ihnen, Codequalität und -integrität mit geringem Aufwand automatisch zu verbessern.
Neben den passenden Tools setzt Gray-Box-Testing Teilkenntnisse und Zugriff auf den Quellcode voraus. Ohne Zugriff auf den Anwendungscode sind Sie auf Black-Box-Tests beschränkt.
Gray-Box-Testing umfasst die folgenden Schritte:
Eingaben auswählen: Ermitteln und wählen Sie Eingaben für White-Box- und Black-Box-Testverfahren aus.
Ausgaben bestimmen: Ermitteln Sie die erwarteten Ausgaben für die ausgewählten Eingaben.
Pfade bestimmen: Bestimmen Sie für die Testphase die wichtigsten oder alle relevanten Pfade. Berücksichtigen Sie zusätzliche Funktionen (Unterfunktionen) innerhalb des Pfads, da sie für gründliche Tests zu den primären Testfunktionen gehören.
Eingaben für Unterfunktionen: Ermitteln Sie Eingaben für die ausgewählten Unterfunktionen.
Ausgaben von Unterfunktionen: Ermitteln Sie erneut die erwarteten Ausgaben der ausgewählten Unterfunktionen.
Testfälle ausführen: Prüfen Sie die Genauigkeit Ihrer Testergebnisse, indem Sie einen Testfall für die Unterfunktionen ausführen.
Wiederholen: Wiederholen Sie die Schritte 4 bis 6 für die übrigen Unterfunktionen und Funktionen.
Vor- und Nachteile von Gray-Box-Testing
Gray-Box-Testing ist für Penetrationstests von Anwendungen wichtig, da es die Stärken von Black-Box- und White-Box-Tests vereint. Im Folgenden finden Sie die wichtigsten Vorteile und Nachteile.
Vorteile:
Vereint die Vorteile von White-Box- und Black-Box-Tests und verbessert so die Qualität Ihrer Anwendung.
Tester müssen nicht unbedingt über umfassende Programmierkenntnisse verfügen, benötigen aber Kenntnisse des Codes.
Verbessert die Zusammenarbeit zwischen Testern und Entwicklern.
Sehr effektiv und vergleichsweise zeitsparend.
Nachteile:
Tester haben möglicherweise keinen Zugriff auf alle Codepfade.
Das Entwerfen von Testfällen kann anspruchsvoll sein.
Vollständiges White-Box-Testing ist nicht möglich, da dem Tester nur ein begrenzter Teil der internen Struktur bekannt ist.
Von Entwicklern geschätzt. Von der Security vertraut.
Die Developer-first-Tools von Snyk bieten integrierte und automatisierte Security, die Ihren Governance- und Compliance-Anforderungen gerecht wird.
Fazit
Gray-Box-Testing vereint White-Box-Testverfahren wie SAST und Black-Box-Testmethoden wie DAST. Black-Box-Testing sucht nach Schwachstellen und Fehlern im Code – aus der Perspektive eines externen Angreifers. Der White-Box-Ansatz scannt Ihren Quellcode und sucht nach Schwachstellen, die sich darin ausnutzen lassen.