Henrik Dolle - Fotolia
Checkliste für Web Application Security Tests
Die Sicherheitsrisiken von über das Web verfügbaren Anwendungen werden häufig unterschätzt. Welche Maßnahmen und Tools helfen wirklich, um Schwachstellen zu finden?
Bei Sicherheitstests von Webanwendungen gilt es viele Faktoren zu beachten. Aber selbst trotz ihrer hohen Komplexität, ist das eigentliche Vorgehen bei diesen Tests nicht schwierig. Entscheidend ist, genau zu wissen, was Sie benötigen und was Sie wollen. Auf dieser Grundlage können Sie eine geeignete Vorgehensweise entwickeln, um Ihre Anstrengungen auf die wichtigsten Anwendungen zu konzentrieren.
Wie gehen Sie also am besten vor, wenn Sie Ihre Anwendungsumgebung sorgfältig überprüfen wollen, um vor allem in Ihren kritischen Applikationen keine bedeutenden Sicherheitslücken zu übersehen? Selbst in den komplexesten Umgebungen ist diese Art von Tests möglich.
Die folgenden fünf Tipps beschreiben die wichtigsten Maßnahmen, wenn es um Sicherheitstests Ihrer Webapplikationen geht. Wesentlich dabei ist herauszufinden, welche Systeme Sie wirklich testen müssen, welche Tools sich dafür am besten eignen, wie Sie die passenden Schwachstellen-Scanner finden und einsetzen und wie Sie Ihre Maßnahmen und Ergebnisse kontrollieren und zum Vorteil Ihres Unternehmens nutzen.
Was muss überhaupt getestet werden?
Die anfängliche Bestandsaufnahme und die Festlegung der Notwendigkeiten sind extrem wichtig. Vielleicht haben Sie dabei eigene interne Anforderungen oder Sie müssen den Vorgaben eines Geschäftspartners oder eines Kunden folgen. Sorgen Sie auf jeden Fall dafür, dass von Anfang an die richtigen Personen an den Maßnahmen beteiligt sind.
Außerdem muss unbedingt klar sein, welche Anwendungen, Netzwerke und welcher Code überprüft werden müssen, wie Sie dieses Tests durchführen können und welche besonderen Ansprüche Sie an die Ergebnisse haben. Dieser Teil umfasst auch die Anforderungen zum Test bestimmter Nutzergruppen. Es empfiehlt sich, die Tests als typischer Endnutzer, als nicht vertrauenswürdiger Außenseiter und als Admin mit allen Rechten für die jeweilige Applikation durchzuführen.
Welche Tools eignen sich am besten für diese Aufgabe?
Zum absoluten Minimum beim Test von Webapplikationen auf Sicherheitslücken gehört der Einsatz eines geeigneten Web Vulnerability Scanners wie Netsparker oder der Acunetix Web Vulnerability Scanner. Für Tests mit authentifizierten Accounts benötigen Sie einen HTTP-Proxy wie ihn zum Beispiel die Burp Suite bietet. Damit ist es möglich, unter anderem Nutzer-Logins, das Session Management sowie Application Workflows zu manipulieren und auf Lücken zu testen.
Darüber hinaus gibt es weitere Werkzeuge, die Sie für eine Analyse des Quellcodes einsetzen können. Seien Sie in diesem Bereich aber vorsichtig. Die leistungsfähigeren Tools in dieser Kategorie sind sehr teuer. Ich bin deswegen nicht in jedem Fall überzeugt, dass eine Analyse des Quellcodes ihr Geld und die dabei erforderlichen, teilweise erheblichen Anstrengungen wirklich wert sind. Möglicherweise ist es aber eine Ihrer essentiellen Anforderungen. In diesem Fall kommen Sie natürlich nicht darum herum.
Scans nach Schwachstellen
Sie benötigen keine eigene Checkliste für jede einzelne Schwachstelle, auf die Sie Ihre Anwendungen testen wollen. Weit sinnvoller ist es, die Tests in die wesentlichsten Kategorien aufzuteilen. Wenn Sie eine Suche nach Schwachstellen durchführen, dann stellen Sie zum Beispiel sicher, dass Sie vor allem nach den wichtigsten Sicherheitsrisiken und Exploit-Möglichkeiten suchen. Dazu gehören insbesondere SQL Injection, Cross Site Scripting und Remote File Inclusion. Ein erster Durchlauf mit Hilfe der OWASP Top 10 oder einer vergleichbaren Liste an häufiger anzutreffenden Exploits ist meist ein guter Start. Möglicherweise benötigen Sie dafür aber individuelle Richtlinien auf Basis Ihrer Applikationsplattform und Ihrer besonderen Bedürfnisse.
Der Fokus der meisten Tests auf Schwachstellen in Webapplikationen liegt auf dem Layer 7. Aber auch der Quellcode, die Konfiguration der genutzten Cloud-Lösungen und die genutzten Server dürfen dabei nicht übersehen werden. Auf jeden Fall sollten Sie dabei nach fehlerhaften Konfigurationen im Bereich SSL/TLS sowie nach Schwachstellen auf dem Web und Application Server Level suchen.
Leistungsfähige Schwachstellen-Scanner dürften die meisten der vorhandenen Fehler finden. Es lohnt sich erfahrungsgemäß darüber hinaus, zusätzlich auch mehr traditionelle Netzwerk-Scanner wie Nessus und Qualys einzusetzen. Nur so finden Sie auch Sicherheitslücken auf der Ebene des Netzwerks. Mit Nessus oder Spezial-Tools wie Cloud Conformity lassen sich zum Beispiel auch fehlerhafte Konfigurationen in AWS-Umgebungen (Amazon Web Services) aufspüren, die ansonsten unbemerkt bleiben würden.
Überprüfung der Scan-Ergebnisse und weitere manuelle Checks
An dieser Stelle können nicht alle notwendigen Checks aufgelistet werden, weil es so viele mögliche potentielle Schwachstellen gibt, die von Angreifern ausgenutzt werden können. Als erstes sollten Sie aber die kompletten Scan-Ergebnisse auf mögliche Sicherheitsrisiken überprüfen und dabei definieren, was für Ihr Unternehmen und die von ihm eingesetzten Anwendungen wirklich von Bedeutung ist.
Über die Möglichkeiten der reinen Schwachstellen-Scanner für das Web hinaus sollten Sie sich mit folgenden Bereichen beschäftigen:
- Wie sicher sind die Login-Mechanismen und lassen sich möglicherweise Sessions manipulieren, für die ein Passwort, Cookie oder ein Token eingesetzt wird?
- Welche Funktionen und Schwachstellen existieren, die mit bestimmten Browsern oder Nutzern zusammenhängen?
- Welche Risiken bestehen in den von Ihnen eingesetzten Anwendungen und den dabei genutzten Abläufen? Lassen sich etwa spezielle Eingabefelder durch Angreifer manipulieren, um so in die von Ihnen verwendeten Abläufe einzugreifen?
- Wie sicher sind Ihre Richtlinien für Passwörter, welche Vorgaben existieren für ihre Komplexität und wie können Eindringlinge ausgeloggt werden?
Dabei handelt es sich vermutlich um den schwierigsten und am meisten zeitraubenden Teil Ihrer Tests der Anwendungssicherheit. Es geht dabei unter anderem auch darum, sich in einen Angreifer zu versetzen und herauszufinden, was er mit einer bestimmten Anwendung alles anstellen kann, wenn er einen normalen Browser und, wie oben bereits erläutert, einen HTTP-Proxy verwendet.
Erkenntnisse dokumentieren und Kollegen informieren
Unglücklicherweise enden viele Tests der Anwendungssicherheit mit den in vorhergehenden Schritt beschriebenen Maßnahmen. Einer der am meisten unterschätzten Aspekte eines formalisierten Testprogramms ist das Übertragen der Erkenntnisse in einen standardisierten Bewertungsbericht.
Dadurch entsteht nicht nur eine nachvollziehbare Dokumentation, die zeigt, wie sorgfältig Sie vorgegangen sind. Andere Kollegen wie die Entwickler, die DevSecOps-Teams und auch die Unternehmensleitung können sie auch als jederzeit verfügbare Referenz benutzen. Eine der effektivsten Methoden, um das Opfer eines Eindringlings zu werden und um die Unterstützung Ihrer Kollegen zu verlieren, ist alle Ergebnisse für sich selbst zu behalten und andere im Unternehmen Betroffene im Unklaren über Ihre Erkenntnisse zu lassen.
Jede Umgebung ist anders und jedes Unternehmen hat seine eigenen Bedürfnisse. Das wird wohl niemand bezweifeln. Eine sorgfältige Vorgehensweise beim Testen der Anwendungssicherheit setzt jedoch einen Großteil, wenn nicht alle der weiter oben beschriebenen Maßnahmen voraus. In meiner täglichen Arbeit als Security Consultant erlebe ich immer wieder falsche Vorstellungen, Annahmen und auch Fehler, wenn es um das Testen von Webanwendungen auf ihre Sicherheit geht.
Es steht aber zu viel auf dem Spiel, um nur einfache Scans ohne individuelle Risikoabschätzungen und ohne ein solides Reporting durchzuführen. Die Angreifer haben zu viele Möglichkeiten zu ihrer Verfügung, um Lücken zu finden. Unausgereifte Maßnahmen sind genauso schädlich, wie komplett auf Anwendungssicherheit zu verzichten oder das Thema anderen in die Schuhe zu schieben. Es hängt nicht davon ab, ob Sie Ihre Software selbst entwickeln, hosten und verwalten oder ob Sie für diese Aufgaben andere beauftragen. Sicherheitsrisiken in Ihren Anwendungen und spezifische Exploits werden immer wieder auf Sie zurückfallen, wenn Sie sich nicht rechtzeitig darum kümmern. Stellen Sie deswegen sicher, dass Sie die Risiken kennen und sie mit den richtigen Maßnahmen bekämpfen.