Webanwendungs-Firewall
Web Application Firewalls (WAFs) sind eine Art System zur Erkennung und Verhinderung von Eindringlingen und können entweder eine Hardware- oder eine Softwarelösung sein. Es wurde speziell entwickelt, um HTTP (s) zu untersuchen und die GET- und POST-Anforderungen mithilfe der unten erläuterten entsetzlichen Erkennungslogik zu analysieren. Webanwendungs-Firewall-Software ist im Allgemeinen als Webserver-Plugin verfügbar.
WAF ist sehr beliebt geworden und verschiedene Unternehmen bieten eine Vielzahl von Lösungen in verschiedenen Preiskategorien an, von kleinen Unternehmen bis zu großen Unternehmen. Das moderne WAF ist beliebt, da es eine Vielzahl von abgedeckten Aufgaben umfasst, sodass sich Webanwendungsentwickler bei verschiedenen Sicherheitsproblemen darauf verlassen können, jedoch mit der Annahme, dass diese Lösung keinen absoluten Schutz garantieren kann. Ein grundlegender WAF-Workflow ist unten dargestellt.

Seine Hauptfunktion ist das Erkennen und Blockieren von Abfragen, bei denen laut WAF-Analyse einige Anomalien vorliegen oder ein angreifender Vektor verfolgt wird. Eine solche Analyse sollte es legitimen Benutzern nicht erschweren, mit einer Webanwendung zu interagieren, sondern gleichzeitig jeden versuchten Angriff genau und rechtzeitig erkennen. Um diese Funktionalität zu implementieren, verwenden WAF-Entwickler normalerweise reguläre Ausdrücke, Token, Verhaltensanalysen, Reputationsanalysen und maschinelles Lernen. Oft werden alle diese Technologien zusammen verwendet.

Darüber hinaus kann WAF auch andere Funktionen bereitstellen: Schutz vor DDoS, Blockierung von IP-Adressen von Angreifern, Verfolgung verdächtiger IP-Adressen, Hinzufügen eines Nur-HTTP-Flags zum Cookie oder Hinzufügen der Funktionalität von CSRF-Token. Jeder WAF ist individuell und hat eine einzigartige interne Anordnung, es gibt jedoch einige typische Methoden für die Analyse.
Regulärer Ausdruck
Die meisten vorhandenen WAFs basieren auf Regeln, die auf regulären Ausdrücken basieren. Um sie zu erstellen, werden einige bekannte Sätze von Angriffen vom WAF-Entwickler untersucht und folglich werden wichtige syntaktische Konstruktionen bestimmt, deren Vorhandensein behauptet werden kann, um den Angriff auszuführen. Basierend auf den erhaltenen Ergebnissen werden reguläre Ausdrücke geschrieben, die solche Konstruktionen finden können. Durch die Analyse von HTTP-Headern wie Server: Apache Tomcat / 7.0.x kann WAF beispielsweise eine Antwort blockieren und so den Verlust von Serverinformationen verhindern oder alternativ eine Warnung auslösen.
Dieser Ansatz weist jedoch eine Reihe von Nachteilen auf. Der Anwendungsbereich eines regulären Ausdrucks ist auf eine Abfrage und häufig sogar auf einen bestimmten Abfrageparameter beschränkt, was die Wirksamkeit solcher Anforderungen offensichtlich verringert. Zweitens führen die Syntax regulärer Ausdrücke, die komplexe Logik von Textprotokollen, die das Ersetzen äquivalenter Konstrukte und die Verwendung unterschiedlicher Darstellungen von Symbolen ermöglicht, zu Fehlern beim Erstellen solcher Regeln. Die folgende Tabelle zeigt die gängigsten Bypass-Techniken.

SQL-Verschleierung. Es ist möglich, den Ausdruck so zu ändern, dass mithilfe der Syntax der Sprache Leerzeichen entfernt werden. In SQL können Sie beispielsweise Klammern und Sterne verwenden:
s / * / e / ** // * e * // * / l / * le * c * // * / ect ~~ / ** / 1 oder / id = 1 + un / ** / ion + sel / ** / ect + 1,2,3--
Die andere basiert auf der Verwendung unterschiedlicher Codierungen, so dass die WAF die Daten an bestimmten Stellen nicht decodiert. Nachdem WAF beispielsweise im Normalisierungsprozess ein Zeichen durch seinen URL-Code ersetzt hat, kann es nicht verstehen, dass die Daten dekodiert und die Anforderung übersprungen werden müssen, während derselbe Parameter vom Web akzeptiert und erfolgreich dekodiert wird Anwendung.

Suchen Sie nach atypischen äquivalenten syntaktischen Konstruktionen. Diese Methode wird verwendet, um eine Funktionsweise zu finden, die von WAF-Entwicklern nicht berücksichtigt werden konnte, oder der Vektor fehlte in der Stichprobe für maschinelles Lernen. Eines dieser Konstrukte ist die nicht-alphanumerische Javascript-Codedarstellung, von der ein Beispiel unten gezeigt wird.

Score-Erstellungsmethode
Dieser Ansatz erkennt keine Angriffe, ergänzt jedoch andere Methoden und macht sie präziser und flexibler. Der Grund für die Einführung des Tools ist, dass das Vorhandensein eines verdächtigen Entwurfs in der Abfrage nicht ausreicht, um einen Angriff zu erkennen, oder im Gegenteil, dass dies zu einer großen Anzahl falsch positiver Fehler führen kann. Dieses Problem wird durch die Einführung eines Bewertungssystems gelöst. Beispielsweise wird jede Regel, die auf regulären Ausdrücken basiert, mit Informationen über die Kritikalität ihrer Operation ergänzt. Nachdem alle erarbeiteten Regeln identifiziert wurden, wird ihre Kritikalität zusammengefasst. Bei der Überwindung eines bestimmten Schwellenwerts wird der Angriff erkannt und die Anforderung blockiert.
Verhaltensanalyse
Das Erkennen von Versuchen, Schwachstellen in Abfrageparametern auszunutzen, ist nicht die einzige Aufgabe von WAF. Es ist wichtig, das Verfahren zur Suche nach Sicherheitslücken selbst zu identifizieren, das sich in Scanversuchen, Brute Force-Verzeichnissen, Parameter-Fuzzing und anderen Methoden zur Erkennung von Sicherheitslücken manifestieren kann, die häufig von automatisierten Tools verwendet werden, und entsprechend darauf zu reagieren. Fortgeschrittenere WAFs können sogar eine XML-Datei mit Abfrageketten erstellen, die für das normale Benutzerverhalten typisch sind, und Versuche blockieren, Anforderungen in einer anderen Reihenfolge als das Standardverhalten zu senden. Dieser Mechanismus wirkt nicht nur Angriffen entgegen, sondern erschwert auch das Auffinden einer Sicherheitsanfälligkeit.
Tokeniser-Parser-Analysatoren
Dieser Ansatz zur Erkennung von Angriffen ist ein komplexes Konzept. Es ist jedoch nicht einfach, es auf dem C ++ - Primer der Libinjection-Bibliothek zu zerlegen, wodurch SQL-Injection-Angriffe schnell und genau erkannt werden können. Derzeit gibt es für die Libinjection-Bibliothek Ports für verschiedene Programmiersprachen, einschließlich Java, C und Python. Der Mechanismus beschränkt sich auf die Suche nach Signaturen, die als Folge von Token dargestellt werden. Einige der Signaturen werden der integrierten schwarzen Liste hinzugefügt und gelten als inakzeptabel oder böswillig. Mit anderen Worten, bevor Sie eine Abfrage analysieren, führt dies zunächst zu einer Reihe von Token. Token werden in verschiedene Typen unterteilt: Zeichenfolge, Zeichen, regulärer Operator, Nummer, Kommentar, Variable usw.
Einer der Hauptnachteile dieser Methode besteht darin, dass es möglich ist, ein solches Design zu konstruieren, das zur falschen Bildung von Token führt. Daher unterscheidet sich die Signatur der Anfrage von der erwarteten.
Angriffe auf Tokeniser sind mit Versuchen verbunden, die Logik zu unterbrechen, indem die Anforderung mithilfe von Token-Breakern in Token aufgeteilt wird. Dies sind solche Symbole, mit denen Sie die Auswahl eines Zeichenfolgenelements für ein bestimmtes Token beeinflussen und so die Suche nach Signaturen umgehen können. Im Open Access gibt es einige Spickzettel, die durch MySQL-Fuzzing und anschließende Abfrageprüfung in Libinjection erhalten wurden.
Reputationsanalyse
Der Reputationsmechanismus wird direkt von Firewalls und Antivirenprogrammen geerbt. Heutzutage enthält fast jede WAF Adresslisten von VPN-Diensten, Anonymisierern, Tor-Netzwerkknoten und Botnetz-Teilnehmern, mit denen Anfragen von verdächtigen Adressen blockiert werden können. Fortgeschrittenere WAFs können ihre Datenbanken automatisch aktualisieren und basierend auf dem analysierten Datenverkehr zusätzliche Einträge vornehmen.
Zusammenfassung
Im Allgemeinen ist die Webanwendungs-Firewall ein modernes und gutes Schutzwerkzeug, das für Webanwendungen niemals überflüssig wird. Die Hauptidee, Wege zur Umgehung von WAF zu finden, besteht darin, die angeforderte Abfrage in eine Form zu bringen, in der sie für die angegriffene Webanwendung noch verständlich ist, für WAF jedoch nicht verständlich oder harmlos erscheint.
Es gibt jedoch mehrere Klassen von Schwachstellen, die WAF nicht erkennen kann. Dies kann eine logische Sicherheitsanfälligkeit sein. In diesem Fall gibt es keine abnormalen Verhaltensweisen in den Anforderungen. Darüber hinaus zeigen einige Studien, die zur Optimierung der WAF-Regeln durchgeführt wurden, auch Methoden zum Ausschluss legitimer Anfragen vom Inspektionsprozess, die möglicherweise gefährlich sein können. WAF ist auch höchstwahrscheinlich nicht hilfreich bei der Identifizierung von Konkurrenten, wie z. B. Rennbedingungen und unsichere Benutzerauthentifizierung.
Referenz
Vladimir Ivanov (2016) Tabellen zulässiger Symbole in verschiedenen Eingaben des SQL-Ausdrucks, Ergebnis der Analyse von Fuzz-Tabellen. Verfügbar unter: www.blackhat.com/docs/us-16/materials/us- 16-Ivanov-Webanwendung-Firewalls-Analyse-der-Erkennung-Logik.pdf
Torrano-Gimenez, C., Perez-Villegas, A. und Alvarez, G. (2009) "Eine selbstlernende anomaliebasierte Webanwendungs-Firewall", Springer, Berlin, Heidelberg. doi: doi.org/10.1007/978-3-642-04091-7_11 .
Ramsingh, C. und Centonze, P. (2017) 'Programmanalyse für Datenbankinjektionen', INTERNATIONAL JOURNAL OF COMPUTERS & TECHNOLOGY, 16 (6), pp. 6977–6986. Doi: 10.24297 / ijct.v16i6.6332.
Prokhorenko, V., Choo, KKR und Ashman, H. (2016) 'Webanwendungsschutztechniken: Eine Taxonomie', Journal of Network and Computer Applications, 60, pp. 95-112. doi: 10.1016 / j.jnca.2015.11.11.017.
Prandl, S., Lazarescu, M. und Pham, D. (2015). Eine Studie über Firewall-Lösungen für Webanwendungen. Information Systems Security, S. 501-510. doi: 10.1007 / 978-3-319-26961-0_29.
Positive-Technologies (2016a) 'Webanwendungs-Firewalls: Angriffe auf Erkennungslogikmechanismen'. Verfügbar unter: www.blackhat.com/docs/us-16/materials/us-16-Ivanov- Webanwendungs-Firewalls-Analyse-der-Erkennung-Logik.pdf.
OWASP (2017) SQL Injection Bypassing WAF. Verfügbar unter: www.owasp.org/index.php/SQL_Injection_Bypassing_WAF .