Dienstag, Dezember 05, 2006

AJAX und Security

Bei SecurityFokus gerade einen interessanten Artikel zu AJAX und Sicherheit gefunden. Darin werden einige der neuen Lücken und Angriffsmöglichkeiten beschrieben, die sich durch den vermehrten Einsatz von AJAX Web-Anwendungen ergeben.
Wobei 'neu' übertrieben ist, keines dieser Themen ist wirklich neu, vieles nur allzu bekannt. Das läuft wieder auf dieselben Themen hinaus, die auch sonst immer die Problemkinder darstellen: saubere Session-Verwaltung und strenge Datenvalidierung.

  • clientseitige Sicherheitsüberprüfung
Mit der Einführung einer starken clientseitigen Logik besteht oft die Versuchung, Funktionalitäten (nur) clientseitig zu implementieren, die (auch) serverseitig implementiert werden müssen. Angreifer können clientseitige Validierungen natürlich leicht umgehen.

  • breitere Angriffsfläche
Mit AJAX werden viel mehr serverseitige Funktionen im Internet zur Verfügung gestellt. Statt einigen wenigen Funktionen werden plötzlich Nachlade-Funktionen, Auto-Vervollständigungen, Read-Ahead-Funktionen implementiert und auch von außen erreichbar gemacht. Damit gibt es viel mehr Punkte, bei denen Fehler gemacht werden können. Und der Aufwand, all diese Punkte auch zu testen, steigt erheblich.
Aus meiner bisherigen Erfahrung könnte ich drauf wetten, das für eine AJAX-Anwendung kein einziger Cent mehr für Sicherheitstests zur Verfügung gestellt wird.

  • AJAX-Anwendungen als Frontend zu Enterprise SOA's
Das SOA-Paradigma ist zwischenzeitlich ja in vielen Firmen umgesetzt, und verspricht auch ganz viele und tolle Dinge ... vielleicht sogar zu Recht.

Leider habe ich bisher den Eindruck erhalten, das die großen Anbieter und viele Beratungs-Firmen das Thema 'Sicherheit' dabei sträflich vernachlässigen und das immer so ganz einfach darstellen, man muss sich gar nicht drum kümmern, "da gibt es zentrale Sicherheits-Funktionen zur Authentifizierung und Autorisierung" und gut. Im Hinblick auf interne Angreifer schon etwas optimistisch.

Die Versuchung, aus einem AJAX-Client direkt einen Enterprise-WebService aufzurufen, ist groß. Wenn dann solche unsicheren Enterprise-Services plötzlich direkt aus einem AJAX-Client aufgerufen werden (und damit 'frei' im Internet stehen), wird leicht ein ganzen Firmennetz kompromittiert.

  • Neue Cross-Site Scripting (XSS) Möglichkeiten

Die Entkopplung der Nutzer-Interaktion von der Server-Interaktion bietet ganz neue Angriffs-Potenziale. Bei XSS-Angriffen auf klassische Web-Anwendungen kann der Nutzer oftmals ein ungewöhnliches Verhalten feststellen: die Applikation hängt oder reagiert langsam, merkwürdige Dinge werden angezeigt usw. Bei komplexen AJAX-Anwendungen kann dies aber für den Nutzer völlig unsichtbar im Hintergrund passieren. Während man völlig ungestört seine eMails in einer AJAX-Anwendung liest, wird im Hintergrund das Adressbuch ausgelesen.

Dazu kommt der Einsatz von relativ mächtigen AJAX-Frameworks (ich selber bin grade in einem solchen Auswahl-Prozess). Eine Lücke in einem solchen Framework kann Angreifern leicht Zugriff auf eine ganze Reihe von Sites geben .. ähnlich wie Lücken in Webservern, Betriebssystemen, Application Servern, ...

Für gefundene Lücken in Server-Software gibt es ausreichende Möglichkeiten: die Hersteller veröffentlichen Advisories, (mit einigen unrühmlichen Ausnahmen) relativ schnell Patches, und man kann leicht Betriebs-Prozesse zur Einbindung dieser Patches aufsetzen (habe ich selber schon gemacht).
Bei clientseitigen Bibliotheken ist das sicherlich deutlich schwieriger, ich hatte bisher nicht den Eindruck, das die Hersteller solcher Bibliotheken das Thema 'Security' so wichtig nehmen wie die Hersteller von Server-Software.

Keine Kommentare: