Ist die Geschäftskontinuität nicht Teil der Sicherheit?
Andrea Covello
Ein Penetration Test Auftrag besteht aus den Etappen Scoping, Testing und Dokumentation. Bei allen drei gibt es wiederholt Diskussionen in der IT Security Community, wenngleich in unterschiedlichen Qualitäten. Im Scoping wird manchmal recht polemisch diskutiert, ob nicht auch Social Engineering beinhaltet sein muss. Andernorts wird behauptet, es müssen alle Umsysteme der Firma im Scope liegen. Die Diskussion ist wichtig, zu oft werden allerdings Risikoszenarien und Aussagekontexte durcheinander geworfen. Darunter leidet die Nachvollziehbarkeit für Laien, welche der Diskussionen folgen wollen. Auch im Testing kommt es zu solchen Debatten. Zwei lesenswerte Artikel zum Thema sind Purple Testing, welcher eine Kombination des klassischen Schemas Red (Angriff) versus Blue (Verteidigung) aufzeichnet. Im Artikel Interactive Pentesting plädiert der Autor für eine stärkere Einbindung des Kunden während der Tests. Interessant sind die Artikel, weil sie ausserhalb der regulären Linien zeichnen. Weniger lesenswert sind die Artikel zu Haarspaltereien, wie der Definition von Wörtern wie Penetration Test und Security Assessment.
Dokumentation ist manchmal ein etwas stiefmütterlich behandeltes Thema, denn was für Vampire Knoblauch und Sonnenlicht ist, ist für Tester oftmals Dokumentation. Häufig wird dabei beispielsweise übersehen, dass nicht für den Tester, sondern für den Leser des Berichts geschrieben werden muss. Wird direkt mit dem Entwicklerteam zusammengearbeitet, reicht manchmal das reine Auflisten von Schwachstellen. Muss aus einem Bericht anschliessend neues Budget bewilligt werden, dann reicht ein rein technischer Bericht meist nicht mehr.
Bei scip versuchen wir ständig uns zu verbessern und das führt zu Diskussionen darüber, was und wie getestet wird und natürlich auch die Dokumentation der Findings. Im Folgenden möchte ich zwei Test-Ansätzen reflektieren: checklistenbasiertes Testen versus szenariobasiertes Testen in Bezug auf (Web)-Applikationen und deren Implikationen auf Dokumentation.
Grundsätzlich ist dies bereits in vielen automatisieren Scannern für Netzwerk und Web Applications vorhanden. Im Programm sind Testfälle – was nichts anderes als Punkte auf einer Checkliste sind – definiert und diese werden durchgespielt. Es stellt sich die Frage, wie sieht dieser Ansatz für manuelle Tests aus und wie sinnvoll ist er?
Viele Vor- und Nachteile stehen und fallen mit der Implementation/Qualität der Checkliste. Sind Punkte in der Liste ein Risiko oder ein Testfall/Payload? Betrachten wir das am Fall des Session-Managements. Je nach Ansatz können wir entweder die vier folgenden Punkte einzeln in der Checkliste führen:
Oder sie nur als einen Punkt zusammenfassen:
Es sind vier verschiedene Probleme und daher ist es durchaus möglich zu argumentieren, dass sie alle ihren eigenen Punkt in der Checkliste verdienen. Auf der anderen Seite kann allerdings auch argumentiert werden, dass die vier Punkte alle in dem gleichen Risiko enden: Eine Session kann übernommen werden. Hinzu kommt, dass für den Test der ersten drei Punkte vermutlich nur ein Werkzeug notwendig ist, denn die Punkte sind aus der Sicht der Implementation voneinander abhängig. So ist die Kollisionswahrscheinlichkeit beispielsweise höher, wenn der Token kurz ist. Die meisten Anwendungen verwenden heutzutage glücklicherweise Session Token Technologien, welche bereits existiert, oft getestet sind und als sicher gelten. Wird als Session Token z.B. einfach der Benutzername verwendet, dann wird das im Test auffallen und dokumentiert werden. Diesen Punkt ebenfalls in Session Token Technologie zu integrieren ist aber sinnvoll.
Wird die Frage von Risiko versus Testfall als Eintrag auf der Checkliste in Bezug auf Cross-Site Scripting (XSS) gestellt, ist es hingegen einfach zu entscheiden, ob eine Trennung nach Risiko oder Test sinnvoll ist:
XSS die aufgrund von Browserfehlern existieren (Universal-XSS und Mutation-based XSS), gehören in eine Browser-Testing Checkliste. Gibt es einen Filter und ist es möglich diesen zu umgehen, dann ist dies eine weitere Schwachstelle und wird besser in einem eigenen Punkt aufgelistet.
Die Frage nach Testfall oder Risiko lässt sich nicht allgemein beantworten und muss von Fall zu Fall entschieden werden. Als oberste Prämisse definiert sich eine möglichst hohe und umfassende Abdeckung des definierten Scopes.
Vorteile, die Checklisten für Tests bieten:
Bei Checklisten ist es wichtig, dass Tester die Checkliste nicht als vollumfänglich betrachten, sondern als Minimalanforderung. Dies ist allerdings mehr ein Problem des Umgangs mit Checklisten, als der Ansatz an sich. Wird ein Finding gefunden, welches selten ist und nicht in der Checkliste, lohnt es sich möglicherweise nicht, dies als zusätzlichen Punkt aufzunehmen. Stattdessen sollte es zusätzlich dokumentiert werden. Sich in diesem Fall auf die Liste einzuschränken, wäre schädlich durch den in Zukunft generierten Aufwand ohne Mehrwert.
Auch bei der Dokumentation hilft die Checkliste:
Dass Schwachstellen im Kontext von allen geprüften Punkten stehen, ist dann eigentlich mehr ein Seiteneffekt von vollständiger Dokumentation. Dadurch wird vermieden, dass eine grosse Schwachstelle von 100 Tests, die ansonsten positiv ausfielen, den Ton angibt. Zum Beispiel war die Codierung der Ausgabe nicht vollständig, aber Session und Konfiguration der Server Header fehlerlos.
Berichte, welche nicht nur kritisieren, werden tendenziell leichter akzeptiert. Denn wir wollen mit einem Bericht die Sicherheit verbessern und die Entwickler unterstützen – Und nicht Widerstand erzeugen.
Als zusätzlicher positiver Nebeneffekt werden nebenbei Administratoren und Entwickler geschult. Nur weil eine Schwachstelle nicht in einer Anwendung vorhanden ist, heisst dies nicht, dass sie aktiv vermieden wurde oder überhaupt ein Bewusstsein für ihre Existenz vorhanden ist.
Der Ansatz des szenariobasierten Testens kommt ursprünglich aus der Risikoanalyse. Bei einer Risikoanalyse wird überprüft, welche Risiken bestehen und diese nach ihrer Auswirkung beurteilt. Aufgrund dessen kann dann jeweils eine angemessene Gegenmassnahme entwickelt werden. Dieser Ansatz kann auch für Web Application Penetration Tests verwendet werden.
Generelle Risiken sind immer Kompromittierung des Servers oder Entstellung (engl. defacing) der Webseite. Aber jede Anwendung hat ihre spezifischen Risiken. In einer Banking Application wäre es fatal, wenn ein Benutzer Überweisungen im Namen eines anderen Benutzers durchführen könnte. Bei einem Mailanbieter wäre das Lesen von E-Mails anderer Benutzer ein Risiko, welches unter keinen Umständen auftreten darf.
Analog zum Checklistenansatz müssen erst einmal Szenarien erarbeitet werden. Manche können unabhängig vom Kunden entwickelt werden, andere brauchen hingegen ein Insiderwissen. So kann beispielsweise bei einer Anwendung, welche als Trainingsplattform fungiert, eine Künstliche Intelligenz im Hintergrund agieren. Ist es für einen Angreifer möglich diese zu stehlen, würde das komplette Geschäftsmodell der Firma zusammenbrechen. Ohne diese Hintergrundinformation wäre dies möglicherweise kein Testziel. Eine Aussage im Bericht hierzu ist hingegen sicherlich willkommen.
Die Vorteile von szenariobasiertem Testen sind:
Auch für die Dokumentation bietet diese Art zu testen Vorteile:
Probleme können entstehen, wenn dieser Ansatz ins Extreme getrieben wird. Werden nur vollständige Szenarien dokumentiert, so verliert der Bericht unter Umständen gefundene Schwachstellen. Diese sind möglicherweise erst in einem zukünftigen Szenario relevant, aber die Möglichkeit, dass das Angriffsszenario überhaupt auftritt, könnte bereits verhindert werden. Deshalb müssen diese Schwachstellen trotzdem ihren Weg in die Dokumentation finden.
Beide Ansätze haben ihre positiven Seiten. Im Red Team der scip versuchen wir das Beste von beiden Seiten gewinnen zu können. Bei den Tests verwenden wir Checklisten, um Vollständigkeit und Vergleichbarkeit zu gewährleisten. Die gefundenen einzelnen Schwachstellen ergeben manchmal neue Szenarien, welche vorher nicht ersichtlich waren. Umgekehrt verwenden wir aber auch Szenarien, welche manchmal dazu führen, dass neue Punkte in die Checkliste aufgenommen werden. Auch bei den Berichten verwenden wir eine Kombination der beiden Ansätze. Das Ziel eines jeden Berichts ist:
Für die Transparenz hilft der Checklistenansatz enorm. Es ist leicht ersichtlich, was getestet wurde, welche Bereiche gut waren und welche Verbesserungsbedarf haben. Auch hilft dieser Ansatz die Vollständigkeit zu wahren. Die Verständlichkeit und Relevanz werden so gut wie möglich durch Szenarien abgedeckt. Szenarien fliessen dabei so oft wie möglich in den einzelnen Checklistepunkten ein und ihnen wird sich im Management Summary gewidmet. Mit den Szenarien können wir dementsprechend auch eine kundenspezifische Relevanz sicherstellen.
Unsere Spezialisten kontaktieren Sie gern!
Andrea Covello
Michèle Trebo
Lucie Hoffmann
Yann Santschi
Unsere Spezialisten kontaktieren Sie gern!