Dieses Bild hat keinen alternativen Text.
iStock / loveguli

Security Testing

Noch heute lautet das am meisten verwendete Passwort der deutschen »123456«. Dass diese Zeichenfolge keinen adäquaten Schutz bietet, sollte den meisten Menschen 2019 bewusst sein. Da ein Sicherheitssystem immer nur so stark wie sein schwächstes Glied ist, ist der Mensch in der Regel das größte Sicherheitsrisiko. Aber auch automatisierte Systeme sind nicht immer fehlerfrei. Im Unterschied zum Menschen kann man maschinelle Systeme jedoch testen und gegebenenfalls verbessern. Dieses Sicherheitstesten, also das systematische Prüfen, inwieweit die Sicherheit eines Systems angemessen ist und durch entsprechende Konzepte nachhaltig garantiert werden kann, ist eine relativ junge Teildisziplin der Sicherheitsforschung von Systemen. Es gewinnt allerdings immer mehr an Gewicht. In dem Zuge, in dem die Abhängigkeit von Software und vernetzten Systemen permanent ansteigt, und immer mehr kritische Prozesse wie die menschliche Sicherheit, Industrieproduktion oder auch das Fahren eines Autos den Softwaresystemen übertragen werden, muss die Verlässlichkeit solcher Systeme durchgängig gegeben sein. Dem Aufbau des Internets und der weltweiten Tendenz, immer mehr Systeme an dieses öffentliche Netzwerk der Netzwerke anzuschließen hat zur Folge, dass Unbefugten der Zugang zu Systemen eröffnet wird, zu welchen sie eigentlich keinen Zugang haben sollten. Insofern sollte jedes Unternehmen, jede Institution und auch jeder Privathaushalt seine IT Systeme auf etwaige Sicherheitslücken testen. Mithilfe von Sicherheitstest kann eingeschätzt werden, inwieweit ergriffene Schutzmaßnahmen Bedrohungen von außen erfolgreich abwehren können und somit Vertrauen in die Sicherheit des Systems geschaffen werden kann. Bestehende Standards und Best Practices wie der Microsoft SDL oder der von Fraunhofer FOKUS mitgestaltete ETSI Guide ETSI EG 203 25 ordnen sicherheitsbezogenen Testaktivitäten zu einzelnen Phasen eines Softwarelebenszyklus zu und sorgen so für eine durchgängige und frühzeitige Integration von Sicherheit in den Entstehungsprozess von Software. Grundsätzlich gilt, dass, je kritischer ein System ist, es umso intensiver getestet werden sollte.

Aktuelle Sicherheitsrisiken

Fehler in der Software oder der IT Infrastruktur lassen verschiedene Angriffsstrategien wie bspw. eine SQL Injektion oder Pufferüberläufe zu. Dies sind jedoch vermeidbare Mängel, welche sich durch Security-Testing-Maßnahmen verhindern lassen. Fast alle gängigen Datenbanksysteme benutzen SQL (die Structured Query Language) um ihre Datenbanken zu bearbeiten. Durch Fehler bei der Abfrage einer solchen SQL Datenbank kann ein Angreifer unter Umständen über die Anwendung, die den Zugriff auf die Datenbank bereitstellt, eigene Datenbankbefehle einschleusen. Das Ziel ist dabei oftmals, Daten auszuspähen, in eigenem Sinne zu verändern, die Kontrolle über Server zu erhalten oder einfach größtmöglichen Schaden anzurichten. Dies war zum Beispiel im August 2014 der Fall, als die Sicherheitsfirma Hold Security bei über 420.000 Websites ein Datenleck entdeckte, welches zu der Entwendung von etwa 1,2 Milliarden Benutzerdaten führte, darunter Emailadressen, Passwörter und andere Daten. Allerdings sind nicht alle Security Maßnahmen für alle Umstände angemessen. Im Kontext der IT-Sicherheit sollten die Sicherheitsziele an den Zielen des Unternehmens ausgerichtet sein. Hierbei ist jedoch wichtig zu betonen, dass absolute Sicherheit niemals gegeben sein kann. Kein System ist unangreifbar, und Security Testing hilft beim finden bestehender Fehler und kann insofern nur eine ungefähre Einschätzung der Sicherheitslage in einem vorher festgelegten Rahmen zur Verfügung stellen.

Priorisierung durch Risikoanalyse

Aus der steigenden Komplexität der Softwarearchitekturen und der hohen Qualitätserwartung der Kunden ergibt sich in der Regel ein steigender Aufwand für die komplexeren Sicherheitstests und damit verbunden ebenso steigende Kosten. Es muss daher versucht werden, mittels einer Fokussierung auf kritische Systembereiche und Strukturen den Aufwand zu verringern, ohne dabei eine Vernachlässigung der Sicherheitsstandards in Kauf nehmen zu müssen. Abhilfe schafft hierbei das risikobasierte Testen. Security-Risikoanalysen dienen dazu, die potenziellen Bedrohungen eines Systems zu erkennen, um die Wahrscheinlichkeit ihres Auftretens und ihre Schadwirkung zu ermitteln. Hierbei werden in einem ersten Schritt die zu testenden Sicherheitsrisiken identifiziert. In diese Bewertung fließt die Situation des Marktes und der Mitbewerber ebenso ein wie die Systemanforderungen, die Architekturkomponenten, sowie Prozesse und beteiligte Menschen. 

Dieses Bild hat keinen alternativen Text.
Risikobewertung über eine Risikofunktion Fraunhofer FOKUS

Nach einer solchen Korrelation bewertet können die Testziele nach dem Risikowert priorisiert werden. Ausgehend von der Risikoanalyse können anschließend mithilfe von Security Test Patterns für ein bestimmtes Problem des Security-Testens, z.B. das Finden einer konkreten SQL-Injection-Sicherheitslücke, geeignete Testfälle abgeleitet werden. Wenn diese gefunden wurden, kommt die eigentliche Stärke solcher Security Test Patterns in Verbindung mit der Automatisierung des Testentwurfs und der Testausführung zum Vorschein: Nachdem von den Security Test Patterns bestimmte Lücken erkannt worden sind, kann mithilfe von speziellen Tools auf konkrete Sicherheitslücken getestet werden. Security Test Pattern beschreiben dabei deklarativ, mit welchen Strategien Sicherheitslücken angemessen geprüft werden können.

Werkzeug für Testing: Fuzzino

Eine Technik zum automatisierten Aufdecken von Sicherheitslücken ist Fuzz Testing bzw. Fuzzing. Fuzzing stimuliert ein System mit ungültigen oder unerwarteten Eingaben und testet so dessen Robustheit. Fuzzing ist eine äußerst effiziente Methode, Schwachstellen in einem System zu entdecken. Als Technik hat es sich besonders bewährt, um 0-Day-Vulnerabilities zu entdecken. Mit Fuzzing können bspw. die weit verbreiteten Pufferüberläufe aufgedeckt werden, die dadurch entstehen, dass die Länge eines Eingabedatums vor der Verarbeitung nicht überprüft wird. Es gibt verschiedenste Fuzzing-Werkzeuge, sowohl kommerzieller Natur als auch Open Source. Allen diesen Werkzeugen ist gemein, dass sie Protokollmodellierung, Testgenerierung und Testausführung vereinen. Fraunhofer FOKUS verfolgt mit Fuzzino einen leichtgewichtigen Ansatz. Mit Hilfe der Open Source-Fuzzing-Library Fuzzino ist es möglich, mit vorhandenen funktionalen Testwerkzeugen auf Fuzzing basierende Sicherheitstests durchzuführen. Das Ziel bei der Entwicklung von Fuzzino war es, Fuzzing einem breiten Publikum zugänglich zu machen, ohne dass dabei detailliertes Vorwissen benötigt wird. Fuzzino nimmt dem Benutzer dazu viel Arbeit ab, indem es viele Konfigurationsoptionen automatisch auf Basis des Testobjekts vornehmen kann. Somit können auch mit Fuzzing wenig erfahrene Tester schnell befähigt werden, diese Technik anzuwenden.

Fraunhofer FOKUS unterstützt außerdem das Bundesamt für Sicherheit in der Informationstechnik (BSI) bei der Durchführung von Sicherheitszertifizierungen von IT-Produkten nach dem Prüfkriterienwerk »Common Criteria for Information Technology Security Evaluation« (ISO/IEC 15408, kurz CC). Aufgrund der hohen praktischen Relevanz von Fuzzing für CC-Verfahren hat das BSI Fraunhofer FOKUS beauftragt, den systematischen Einsatz von Fuzzing für Sicherheitszertifizierungen zu untersuchen. Das Hauptergebnis des Projekts ist ein Leitfaden, der eine Beziehung zwischen den CC und Fuzzing herstellt sowie Empfehlungen für den Einsatz von Fuzzing abhängig vom Zertifizierungsziel und Evaluierungsgegenstand gibt. Das Projekt wird auf dem 16. Deutschen IT-Sicherheitskongress im Mai 2019 vorgestellt.

Fuzzing
Fuzzing von der Analyse bis zur Testausführung Fraunhofer FOKUS

RACOMAT – Risiko Assessment und Testtool in einem

Ein weiteres von FOKUS Wissenschaftlern entwickeltes Tool ist RACOMAT. Dieses Werkzeug ist ein mit dem Industrie-Standard ISO 31000 konformes Risiko-Management Tool, bei dem das Risiko Assessment mit Sicherheitstests kombiniert werden. Während klassische Risiko Assessments von subjektiven Expertenmeinungen abhängen, ermöglich es das RACOMAT Tool eine objektive, ganzheitliche Analyse der zu evaluierenden Systeme zu erstellen. Ausgehend von einem Gesamtbudget für die Risikoanalyse und initialen Risikoabschätzungen berechnet das RACOMAT-Tool, wie viel Aufwand für das Security-Testen investiert werden sollte ist, um die Qualität des Risikobildes durch Reduktion von Unsicherheiten zu verbessern. Sicherheitstests können verwendet werden, um die Verwundbarkeit von Systemen durch Angriffe wie beispielsweise eine SQL Injektion aufzudecken. Das RACOMAT-Tool leistet eine Priorisierung der potenziellen Sicherheitstests, um mit dem vorhandenen Budget möglichst effizient genau die gefährlichsten Bedrohungen der wichtigsten Assets zu analysieren. Vollständig automatisches oder zumindest semi-automatisches Testen lässt sich mit dem RACOMAT-Tool mithilfe von wiederverwendbaren Security Test Pattern für gängige Angriffsmuster realisieren. Im Anschluss an durchgeführte Tests unterstützt das Tool seine Nutzer bei der Interpretation der Ergebnisse im Hinblick auf das Risikobild, um neu ausgemachte Sicherheitslücken und Schwachstellen zu ergänzen oder um Eintrittswahrscheinlichkeiten anzupassen. Anhand des so verbesserten Risikomodells kann der weitere Einsatz der noch verfügbaren Ressourcen für Sicherheitstests neu geplant werden. Dieser Kreislauf wird fortgesetzt, bis das Gesamtbudget für das Assessment aufgebraucht ist. Anschließend kann mit RACOMAT anhand des finalen Risikobilds mit der Planung das Treatments der unakzeptabel hoch bewerteten Risiken begonnen werden. Dazu werden die zu erwartenden Kosten der unbehandelten Risiken in einem gewissen Zeitraum mit den Kosten von Treatment-Maßnahmen verglichen.

Dieses Bild hat keinen alternativen Text.
Iteratives Riskomanagement  Fraunhofer FOKUS

Security Testing Improvement Profile

Fuzzing und RACOMAT bilden allerdings nur einen kleinen Ausschnitt aus der Vielfalt der verschiedenen Aktivitäten in einem Security Testprozess ab. Um den Einfluss der Techniken auf die Reife der Security-Testprozesse und speziell der modellbasierten Security-Testprozesse bewerten zu können, wurde von Fraunhofer FOKUS mit dem Security Testing Improvement Profile (STIP) ein Bewertungsschema entwickelt, mit dem sich diese Testprozesse systematisch evaluieren lassen. STIP lässt sich sowohl eigenständig, als auch in Kombination mit etablierten Methoden zur Bewertung von Sicherheitstest - die bekanntesten Vertreter sind TPI (Test Process Improvement) bzw. dessen Nachfolger TPI NEXT und die Test Maturity Model Integration (TMMI) - einsetzen. Über Schlüsselbereiche werden verschiedene Aktivitäten identifiziert, die hierarchisch angeordnet den Reifegrad einer Software bewerten. Je höher dieser Reifegrad, desto besser wird der Prozess im Hinblick auf seine Leistungsfähigkeit bzw. die Ergebnisqualität für den durch den Schlüsselbereich charakterisiert. Die systematische Gliederung und die Definition von Abhängigkeiten zwischen den Reifegradstufen in den Schlüsselbereichen erlaubt darüber hinaus Verbesserungsmaßnahmen gezielt zu identifizieren und effizient zu strukturieren.