INFORMATION SECURITY

Web Application Firewall (WAF)

Web Applications bieten aufgrund ihrer komplexen N-Tier Architektur (Browser, Web Server, Web Application Server, EAI Server, Datenbank, Host) und einer breiten Palette eingesetzter IT Technologien zahlreiche Angriffsflächen. HTTP wird lediglich noch verwendet, um anwendungsspezifische Daten zu transportieren, d.h., Web Applications setzen eigene Protokolle/Formate oberhalb HTTP wie beispielsweise SOAP, REST/JSON und AJAX ein.

Angreifer nutzen spezifische Application Vulnerabilities wie mangelhafte Eingabevalidierung oder unsicheres Web Session Management, um Schwachstellen in Web Application Komponenten zu exploitieren, deshalb können auch herkömmliche IT Security Systeme wie Firewalls oder IDS/IPS solche Angriffe nicht blockieren.

Primäre Web Application Angriffsmethoden sind gegenwärtig:

Einen dedizierten Schutz für Web Applications bilden sogenannte Web Application Firewalls. WAFs stehen in diversen Erscheinungsformen zur Verfügung: als Hardware Security Appliance, als Software Plug-in für Webserver oder als Add-on von Netzinfrastruktur-Komponenten wie Load Balancer.

Der hauptsächliche Nutzen einer WAF besteht in der Absicherung von existierenden, produktiven Web Applications, bei denen die sicherheitstechnisch erforderlichen Software Anpassungen gar nicht oder nur mit prohibitivem Re-Coding Aufwand implementiert werden können. Dies gilt z.B. für Schwächen, die bei einem Penetration Test oder durch ein Whitebox Testing (Code Walkthrough) entdeckt wurden, aber durch Anwendungsmodifikation kurzfristig nicht eliminiert werden können.

Neben dem grundlegenden Schutz durch Blacklisting -also der Deklaration bereits bekannter Angriffsmuster- sollte eine WAF auch Whitelisting Methoden bieten. Mittels individuellem Whitelisting fixiert man das nominelle Verhalten der Web Application in einer der Application zugeordneten WAF Ruleset; Abweichungen von der nominellen Nutzung der Anwendung können dann von der WAF identifiziert und sanktioniert werden.

Ferner kann eine WAF aber auch als zentraler Web Application Dienstleister für einzelne Security Aspekte fungieren, die in allen Web Applications identisch sind und deshalb besser zentral in einer WAF anstatt dezentral in jeder Web Application implementiert werden. Beispiele für solche zentralisierten WAF Security Services sind anwendungsübergreifendes Secure Session Management mittels WAF Cookie Store, zentrale Ablage und Sicherung aller Error Messages und Log Files, zentrales Authentication & Authorization sowie zentralisiertes URL Encryption.

WAF Security Mechanismen

Die nachfolgende Tabelle listet weit verbreitete Web Application Schwächen sowie assoziierte WAF Sicherungsmechanismen.


VULNERABILITY WAF COUNTERMEASURES
Cookie Protection Cookie- Signature, -Encryption oder -Hiding
Cross Site Request Forgery URL Encryption / Token
Data Validation (Content) Überprüfung von Länge, Range, Konstanz, etc. per Whitelist oder Blacklist
Data Validation (generic) W3C Konformität, Normalisierung der Daten
Cross Site Scripting (XSS) Reflected XSS kann via Validation identifiziert werden,persistent XSS kann WAF nicht erkennen
SQL Injection / Code Injection / Command Injection / LDAP Injection / XML/XPath Injection via Validation und Blacklisting
Parameter Tampering via Validation, URL- und Parameter Encryption
Path Traversal URL Link Validation via URL Verschlüsselung
Path Traversal Parameter Manipulation analog Parameter Tampering
Session Timeout Timeouts können über das WAF Session Management fixiert werden
Session Hijacking WAF kann nur einen Alarm bei wechselnder IP erzeugen
Privilege Escalation kann nicht per WAF identifiziert werden
DoS (Layer 7) IPs, User und Transaktionen können blockiert werden, Sessions können terminiert werden
SSL WAF kann eine Verschlüsselungsstärke erzwingen. WAF kann als SSL Proxy agieren (SSL-I: Client-2-WAF sowie SSL-II: WAF-2-Webserver)
HTTP Response Splitting via Data Validation und Parameter Filtering
HTTP Request Smuggling via (generic) Data Validation
Information Leakage via Filtering, WAF Clean-up der outbound Web Pages (Kommentare, Messages, etc.)
Format String Attack via Filtering der involvierten Characters/Strings (erfordert Apps Kenntnis)
WebDAV WAF kann z.B. Restriktion auf WebDAV read-only Methode erzwingen

Secure Web Application Design

Anwendungsprogrammierer setzen Sicherheit oft lediglich mit Authentisierung, Authorisierung und Verschlüsselung gleich. Eine Analyse derzeitiger Angriffsvektoren zeigt allerdings, dass Web Application Malware sich primär auf Schwächen in der Datenvalidierung und dem Session Management von Web Anwendungen fokussiert. XSS, CSRF, SQL Injection et al stellen aber für eine Application mit adäquat restriktiver Datenvalidierung und gehärtetem Session Management kaum noch eine Bedrohung dar.

Für die Implementierung von Authentisierung / Authorisierung / Verschlüssselung gibt es für Java-EE Anwendungen mit JCE, JAAS, Acegi/Spring Security und den Sicherheitsfeatures des Servlet Containers selbst ausgereifte Frameworks.

Mit z.B. HDIV existiert ein offenes Security Framework, mit dem sich Datenvalidierung und Session Management deklarativ im Servlet Container adressieren lassen. HDIV macht jeden URL Zugriff von einem spezifischen State abhängig. Es speichert zugehörige Parameter sowie deren Werte innerhalb eines State-Objects und memoriert dieses im Session-Object des Users. Dadurch werden Manipulationen von Parametern wie z.B. Hidden Fields unterbunden. Auch kann ein User URLs nicht mehr direkt aufrufen, welche vorher nicht als Entrypoint definiert wurden. Hierduch lassen sich sowohl CSRF Angriffe blockieren wie auch Authorisierungsmängel beheben. Die Manipulation von URL Parametern z.B. für den Zugang zu nicht-authorisierten Datenbank-Entries wird ebenfalls unterbunden.

Mit einem Security Framework wie HDIV lässt sich WAF Funktionalität innerhalb einer Web Application selbst konfigurieren und damit die Application wirkungsvoll gegen bestimmte gefährliche Web Application Angriffe schützen. Solche embedded Security Solutions skalieren auch effizient innerhalb von Web Application Server (WAS) Clustern.