Sichere Web-Apps dank WAF
Artikel erschienen in Swiss IT Magazine 2009/09
Anders als bei statischen Web-Auftritten, die primär der einseitigen Informationsvermittlung dienen, unterstützen Webapplikationen die Interaktion zwischen ihren Benutzern. Neben dem bekannten Einsatz im Bereich E-Banking, im E-Commerce-Umfeld oder als Content Management System (CMS) findet man webbasierte Lösungen auch im Bereich SaaS (Software as a Service). Sämtliche Web-Applikationen bestehen aus drei Komponenten: dem eigentlichen Webserver (Presentation Tier oder auch Frontend genannt), dem Applikations-Server (Application Tier) und einer Datenbank (Data Tier). Diese drei Komponenten können kombiniert auf einem Server oder – wie in der Praxis verbreitet – verteilt auf einzelnen Servern beziehungsweise virtuellen Systemen laufen. Der Webserver ist die exponierte Komponente, die über das Internet oder das Intranet für alle Benutzer erreichbar sein muss und von potentiellen Angreifern erreicht werden kann. Die Angriffsziele sind einerseits die Web-Applikation selbst und die damit verbundenen Unternehmensdaten, andererseits aber auch die Benutzer, die mit diesen vertraulichen Daten arbeiten.
Die IT-Verantwortlichen eines Unternehmens sehen sich beim Einsatz von Web-Applikationen mit sehr hohen Sicherheitsanforderungen konfrontiert. Der Schutz dieser speziellen Programme nimmt aufgrund ihrer rasanten Verbreitung einen immer grösseren Stellenwert ein. In der Praxis – dies belegen zahlreiche neue Studien – sieht dies noch anders aus: danach ist nur eine von vier Web-Applikationen am Markt ausreichend vor Angriffen geschützt. Wie aber schützt man Web-Applikationen optimal? Die klassische Firewall jedenfalls bietet keinen ausreichenden Schutz.
Zwei Sicherheitsstrategien haben sich beim Einsatz von Web-Applikationen bewährt. Zum einen kann die Web-Applikation selbst mit allen wichtigen Sicherheitsmechanismen zum Schutz vor Angriffen ausgestattet sein. Zu diesen Sicherheitsmechanismen zählen etwa die genaue Überprüfung der Benutzereingaben beziehungsweise der vom Benutzer erhaltenen Daten zum Schutz vor SQL-Injection und Buffer Overflow oder auch die Verhinderung von Cross Site Scripting (XSS). Wichtig ist auch die fehlerfreie Implementierung der sicheren Authentisierung und des Session Handling. Das alles setzt ein sehr spezielles Know-how voraus und führt meist zu langen Entwicklungszeiten und hohen Investitionskosten. Hinzu kommen erfahrungsgemäss Probleme bei der Absicherung zugekaufter Komponenten – vielfach ist dies gar nicht möglich.
Wirtschaftlicher und flexibler ist der Einsatz einer Web Application Firewall (WAF). Die WAF wird vor den Webserver geschaltet und überprüft die übertragenen Daten auf der Applikationsebene. Um jede Benutzeranfrage bezüglich Protokoll-Konformität sowie Korrektheit (Input-Validierung) untersuchen und Angriffsmuster erkennen zu können, terminiert die WAF den SSL-Verkehr und stellt das damit verbundene Zertifikatsmanagement zur Verfügung. Die für den SSL-Verkehr benötigten Zertifikate werden an einem zentralen Ort und nicht auf jedem einzelnen Server verwaltet, was die Betriebskosten senkt.
Auch die sichere Benutzer-Authentisierung kann von der WAF übernommen werden. Sie lässt eine Anfrage erst nach erfolgreicher Authentisierung auf dem Webserver der Applikation zu. Auf diese Weise wird sichergestellt, dass nur authentisierte Benutzer auf die Web-Applikation zugreifen können (vgl. Abbildung). Sollen die Benutzer über einen beliebigen Webbrowser von überall her zugreifen können (z.B. aus dem Internet-Cafe), dann muss eine Zwei-Faktor-Authentisierung über ein zusätzliches One Time Password (OTP) zum Einsatz kommen. Eine OTP-Lösung kann über einen klassischen Hardware Token oder über SMS realisiert werden. Eine zwingende Anforderung bei der SMS-basierten Lösung ist die Zustellung der SMS in Echtzeit. Diese Anforderung ist mit dem Provider des jeweiligen Unternehmens zu prüfen, besonders beim Zugriff aus dem Ausland.
In Web-Applikationen werden Cookies, Informationen in den URLs (URL-Encoding) oder versteckte Felder (Hidden Form Fields) für das Session Handling verwendet. Die Web-Applikation generiert diese Informationen nach erfolgreicher Authentisierung und sendet sie zum Browser des Benutzers. Bei der nächsten Interaktion des Benutzers fliessen dieselben Informationen wieder vom Browser zur Web-Applikation. Genau diese Daten sind für einen Angreifer von grossem Interesse und Wert. Gelangt jemand durch gezielte Angriffe auf den Client an diese Daten, kann er sie manipulieren und auf diese Weise sogar konkrete Transaktionen im Namen des Benutzers durchführen. Das sichere Session Handling auf der WAF verhindert derartige Angriffsszenarien erfolgreich. Mittels Session Fingerprinting werden diverse Client-Parameter – beispielsweise die Client-IP-Adresse, die SSL-ID, der Browser-Typ und die Browser-Sprache verwendet – um die Session zu charakterisieren. Ändert beispielsweise die IP-Adresse, hat entweder der normale periodische IP-Wechsel beim DSL-Anschluss des Benutzers stattgefunden oder es liegt ein Angriff vor. Wenn die WAF allerdings eine neue IP-Adresse registriert und danach wieder Anfragen mit der ursprünglichen IP-Adresse erhält, dann greifen mehrere Clients gleichzeitig auf die authentisierte Session zu. Dies lässt eindeutig auf einen Session-Missbrauch schliessen und die Session wird terminiert.
Ein weiterer Vorteil beim Einsatz einer WAF ist, dass nicht alle Cookies zum Client gesendet werden müssen. Die von der Web-Applikation in Richtung Client gesendeten Session Cookies werden im Cookie Store der WAF zwischengespeichert und gelangen nicht zum Client. Gegenüber der Web-Applikation tritt nun die WAF als Client auf. Dabei sind auf dem eigentlichen Client des Benutzers keine Session Cookies der Web-Applikation sichtbar. Anderseits werden Cookies von der Web-Applikation auch zur Speicherung von Benutzereinstellungen verwendet. Diese Cookies sind keine Session Cookies. Sie haben ein Ablaufdatum und bleiben auch nach Beendigung einer Session bis zum definierten Termin auf dem Client gespeichert. Auf der WAF ist klar definiert, welche Cookie-Arten zum Client gelangen dürfen. Verwendet die Web-Applikation URL-Encoding oder Hidden Form Fields für das Session Handling, kann die WAF diese Informationen signieren und verschlüsseln. Eine clientseitige Änderung dieser abgesicherten Informationen kommt einem Angriff gleich. Die Kommunikation wird umgehend von der WAF abgebrochen und die Web-Applikation dadurch geschützt.
Neben den eigentlichen Sicherheitsfunktionen bietet die Web Application Firewall auch Load Balancing und Monitoring. Mittels Load Balancing werden die Benutzeranfragen auf mehrere Web-Server verteilt. Dies erhöht die Verfügbarkeit und die Performance der Web-Applikation.
Das Monitoring bietet eine umfassende Überwachung der Sicherheitsinfrastruktur. Nur so kann die Wirksamkeit der eingesetzten Schutzmassnahmen laufend überprüft und bei Bedarf angepasst werden. Dabei handelt es sich um einen kontinuierlichen Prozess. Eine zentrale WAF, die sowohl Benutzer authentisiert als auch alle Anfragen konsequent validiert, liefert dem Unternehmen jederzeit alle relevanten Informationen darüber, wer in der Web-Umgebung was gemacht hat, und gewährleistet die Nachvollziehbarkeit aller Ereignisse. Sicherheitsverantwortliche erhalten auf diese Weise detaillierte Angaben zu allen wichtigen Sicherheitsaspekten von Web-Applikationen, etwa zur Verfügbarkeit, zum Gesamtdurchsatz und zu blockierten Angriffen.
Als Fazit lässt sich zusammenfassen, dass die heute im Einsatz stehenden Web-Applikationen oft unzureichend geschützt und dadurch sehr leicht angreifbar sind. Durch den Einsatz einer zentralen Web Application Firewall können Web-Applikationen sicher und wirtschaftlich betrieben werden und die Sicherheits-risiken werden um ein Vielfaches minimiert.
Ein Restrisiko bleibt auf der Benutzerseite, denn der Client (Browser und Betriebssystem) wird vom Benutzer selbst verwaltet. Mit speziellen Vorschriften und Richtlinien zum Umgang mit den Clients lassen sich diese Risiken minimieren. Stellt der Betreiber einer Web-Applikation den Benutzern einen Client zur Verfügung, so hat dieser zwar Kontrolle über den Client, verliert aber gleichzeitig den grossen Vorzug der Mobilität und Flexibilität von Web-Applikationen.