In The Code: Defeating the Unknown
07.11.2018 – Reto Ischi
Fachartikel für inside-it.ch vom 7. November 2018
Wieso soll man eine unsichere Web-Applikation mit einem zusätzlichen Sicherheitsprodukt wie einer Web Application Firewall (WAF) schützen? Wäre es nicht viel sinnvoller, diese Ressourcen in die sichere Entwicklung der Applikation oder in die Identifizierung und Behebung der Sicherheitslücken zu investieren? Diese Frage wird mir regelmässig in Gesprächen mit Applikationsentwicklern gestellt. Mit der Art und Weise wie heute Web-Applikationen entwickelt, konfiguriert und deployed werden, ist es unglücklicherweise kaum möglich, alle Sicherheitslücken auszuräumen. Selbst wenn der selber geschriebene Programmcode entsprechende Qualitätsanforderungen erfüllt, so hängt dieser möglicherweise von Komponenten ab, die dies nicht tun.
Wie kann nun trotzdem die Sicherheit einer Web-Applikation gewährleisten werden? Die Antwort wussten bereits die Erbauer von Burgen im Mittelalter: Defense in depth. Man kombiniert mehrere unabhängige Sicherheitssysteme und reduziert somit das Risiko eines erfolgreichen Angriffs. In einem solchen System spielt eine WAF bezüglich des Schutzes der Web-Applikation eine zentrale Rolle.
Airlock und Machine Learning
Mit dem allgemeinen Boom von Machine Learning (ML) in den letzten Jahren hält der Einsatz entsprechender Techniken vermehrt auch Einzug in den Bereich der IT-Security. Auch ein Team von Machine-Learning und Web-Security-Spezialisten von Ergon Informatik untersucht aktuell den Einsatz von ML-Methoden im Bereich der Airlock Web Application Firewall. Dieser Artikel liefert einen Überblick über die Chancen und Risiken ML-basierter Methoden im Bereich WAF.
Die Kernaufgabe einer WAF besteht darin, die nachgelagerten Web-Applikationen vor technischen Angriffen zu schützen. Dabei kann ML keineswegs nur für die Erkennung von Web-Attacken eingesetzt werden. Denkbar ist auch ein Einsatz im Bereich Log-Analyse oder für die Unterstützung des Administrators bei der Erstellung oder Optimierung komplexer WAF-Konfigurationen.
Klassische Methoden und Machine Learning - eine Ergänzung
Die meisten Sicherheitsrisiken in Web-Applikationen können durch eine spezifische WAF-Funktion verhindert oder zumindest stark reduziert werden. Dabei kommen meist regelbasierte Systeme zum Einsatz. Bei älteren Web-Applikationen liegt der Grossteil der Applikationslogik auf dem Server und der Client folgt dem vorgegebenen Ablauf, beispielsweise indem er ein präsentiertes Formular vom Benutzer ausfüllen lässt. Solche Systeme können sehr effektiv durch dynamische Regeln wie dem Verschlüsseln von URLs, Signieren von HTML Formularelementen oder dem Einsatz von CSRF Tokens geschützt werden. Moderne Web-Applikationen dagegen, bei denen ein Grossteil der Applikationslogik im Client ausgeführt wird, können teilweise nur sehr schwierig mit dynamischen Funktionen abgesichert werden.
Ein Nachteil regelbasierter Systeme ist, dass diese meist nur gegen einen sehr spezifischen Angriffsvektor schützen oder aber mit hohem Integrationsaufwand verbunden sind. ML-basierte Methoden versprechen hier einen Mehrwert, da sie auch bei einer gewissen Unklarheit des Angriffsvektors eingesetzt werden können. Die nachfolgende Grafik beurteilt einige typische WAF Sicherheitsfunktionen bezüglich deren Integrationsaufwand sowie der Fähigkeit, unbekannte Angriffe zu erkennen. Wie man in der Grafik sieht, deckt kein einzelnes Sicherheitsfeature die ganze horizontale Achse, das heisst alle möglichen Angriffsvektoren, ab. Spezifische Angriffe wie zum Beispiel Cross-Site Request Forgery oder bekannte Code-Injection-Attacken werden weiterhin am effektivsten durch sehr spezifische, auf diesen Angriffsvektor zugeschnittene, Sicherheitsfunktionen verhindert.
Die richtige Aggregationsstufe
WAFs treffen typischerweise Entscheidungen basierend auf einzelnen Requests oder einer Gruppe von Requests, wie zum Beispiel alle Requests innerhalb einer HTTP-Session oder von der selben Source-IP-Adresse. Betrachtet man eine Gruppe von Requests innerhalb einer HTTP-Session, so können interessante Eigenschaften definiert und statistisch untersucht werden. Zum Beispiel kann die Wahrscheinlichkeit einer bestimmten Folge von HTTP-Requests innerhalb einer Session untersucht werden. Die typischen Folgen werden meist vom gewünschten Benutzerverhalten dominiert. Untypische Folgen deuten möglicherweise auf unerwünschte Aktivitäten wie zum Beispiel einen Web-Crawler hin, der die Links in einer unüblichen Reihenfolge aufruft. Eine Schwierigkeit beim Session-Scope besteht darin, bei einem Angriff genügend früh Gegenmassnahmen wie das Blockieren der Session auszulösen. Ein weiteres Problem ist, dass Angreifer ihre Attacken auf mehrere Sessions verteilen können. Dies ist insbesondere bei öffentlich zugänglichen Web-Applikationen einfach möglich.
Auch Machine Learning braucht Engineering
Um eine unerwünschte HTTP-Session mittels ML-basierten Methoden zu erkennen, müssen zuerst entsprechende Features definiert werden (Feature Engineering). Dabei werden aus den zugrunde liegenden Daten Attribute identifiziert, auf denen das Modell später Vorhersagen trifft. Dieser Schritt ist zentral für den Erfolg des Modells. Beispiele für solche Features in Webverkehr sind Verteilungen der Zeitabstände von Requests, HTTP-Objekt-Grössen oder die Verteilung von HTTP-Status-Codes. Wie man an diesen Beispielen sieht, können aus einzelnen Basisattributen in den Rohdaten, wie zum Beispiel Timestamps, über mehrere Schritte komplexere Features konstruiert werden. Anschliessend werden basierend auf diesen Features geeignete ML-Modelle ausgewählt, konfiguriert und trainiert. Durch geeignete Kombination verschiedener Modelle entsteht nun ein System, das in der Lage ist, bestimmte Auffälligkeiten einer Web-Session zu identifizieren. Dieses System kann Fragen beantworten wie: Wurden einzelne Requests innerhalb der Session durch eine Person ausgeführt oder war ausschliesslich eine Software beteiligt? Handelt es sich um einen gewöhnlichen Benutzer oder deutete sein Verhalten auf einen Hacker hin? Falls die Requests von einer Software ausgelöst wurden, handelt es sich um eine legitime Suchmaschine, ein Monitoring-Tool oder möglicherweise um einen unerwünschten Site-Crawler, Bot oder sogar ein Attack-Tool?
Jede Web-Applikation kann dabei mit einem eigenen Modell trainiert und geschützt werden. Somit kann eine bestimmte Anomalie in einer Applikation ein gewöhnliches Verhalten in einer anderen Applikation sein. Dies ist ein weiterer Vorteil gegenüber statischen Sicherheitsfunktionen, die nur mit viel Aufwand für jede Web-Applikation unterschiedlich konfiguriert und optimiert werden können. Beim Trainieren der Modelle muss zudem darauf geachtet werden, dass der Angreifer keinen Einfluss auf die Trainingsphase nehmen kann, oder dass die Modelle mit solchen unerwünschten Daten umgehen können.
Kein Schwarz-Weiss Denken
Im Gegensatz zu klassischen, regelbasierten Systemen, liefern ML-Modelle keine Schwarz-Weiss-Antworten sondern Wahrscheinlichkeitsverteilungen. Aktionen können nun in Abhängigkeit dieser Verteilung ausgelöst werden. Eine Session-Terminierung oder das zeitliche Blockieren einer Source-IP möchte man in der Regel nur auslösen, wenn ein Angriff eine hohe Wahrscheinlichkeit hat. Andere Aktionen wie das Einblenden eines CAPTCHAs sollen dagegen nur erfolgen, wenn Requests mit hoher Wahrscheinlichkeit automatisiert, zum Beispiel von einem Bot, ausgelöst wurden. Ist die Unsicherheit zu hoch, so können Session-Details auch nur geloggt oder an ein Umsystem, wie zum Beispiel einem Fraud Detection System, für zusätzliche Analysen und Entscheidungen weitergeleitet werden.
Sicherheit von ML-basierten Systemen
Da ML-Modelle heute in sehr kritischen Systemen wie selbstfahrenden Autos eingesetzt werden, in welchen falsche Entscheidungen fatale Folgen haben können, wird seit einigen Jahren vermehrt zum Thema der Robustheit dieser Modelle geforscht. Auch wenn zum Beispiel Strassenschilder ohne Probleme mit einer sehr hohen Genauigkeit erkannt werden können, so wurde gezeigt, dass bei nicht robusten Modellen ein Angreifer durch kaum sichtbare Veränderungen eines Stopp-Strassenschildes, das System dazu bringen kann, dass dieses das Schild als "Höchstgeschwindigkeit 80 km/h" klassifiziert.
Diese Frage nach der Robustheit eines ML-Modells wird in vielen Projekten ausser Acht gelassen. Es ist offensichtlich, dass im Sicherheitsumfeld diese Modelleigenschaft relevant ist. Eine relativ einfache Möglichkeit die Modelle robuster gegen solche Angriffe zu machen, ist, diese zusätzlich mit entsprechenden Angriffsbeispielen (Perturbed Train Data) zu trainieren.
Fazit
Das Potential von ML-Modellen in Sicherheitsprodukten wie WAFs ist gross. Statistische Lösungsansätze bringen aber auch viele neue Risiken mit sich. Die Kunst dabei ist zu erkennen, in welchen Bereichen die Systeme einen tatsächlichen Mehrwert liefern und wie diese dafür im Detail designed werden müssen, um Anforderungen an Sicherheit und insbesondere Betreibbarkeit zu erfüllen. Fundiertes Know-how im Bereich Applikationssicherheit sowie Machine Learning ist dabei zentral für den Erfolg eines solchen Projektes.
Reto Ischi ist Head of Research and Development Airlock WAF und seit über 17 Jahren im Bereich der Informationssicherheit und Softwareentwicklung tätig. Zu seinen Aufgaben gehören unter anderem Design und Entwicklung neuer Sicherheitsfeatures. Reto Ischi hat an der ETH den Master in Informatik im Bereich Informationssicherheit absolviert und macht zur Zeit eine Weiterbildung im Bereich Data Science an der ETH Zürich.