Hacker-Schnittstellen Online-Applikationen: Achillesferse der IT-Sicherheit

Ordnungsmerkmale

erschienen in: <kes> 2004#6, Seite 62

Rubrik: Bedrohung

Schlagwort: Online-Applikationen

Zusammenfassung: Online-Applikationen bieten heute eine große Angriffsfläche an der Schnittstelle zwischen Internet und internen Datenbanken. Aufgrund mangelnder Sicherheitsüberlegungen beim Design der Applikationen führen häufig sehr einfache Attacken zum umfassenden Zugriff auf dahinter liegende Daten und interne Systeme.

Autor: Von Rolf vom Stein und Tobias Kirchhoff, Köln

Online-Applikationen sind zunehmend essenzielle Schnittstellen zu Kunden und Partnern. Unzureichend geschützt und unsicher programmiert bilden sie gleichzeitig ein Einfallstor für Angriffe aus dem Internet. Firewallsysteme wiegen Administratoren und IT-Verantwortliche hier oft in einer trügerischen Sicherheit: Doch Firewalls sind in aller Regel gar nicht dafür ausgelegt, Angriffe "innerhalb" der erlaubten Kommunikationswege zu den Online-Applikationen zu erkennen. Eine Firewall ist klassischerweise lediglich dazu bestimmt, den Netzwerkverkehr zu reglementieren; nur in seltenen Fällen verfügt sie über Informationen zu dahinter liegenden Anwendungen. Firewalls sind kaum in der Lage, deren Logik zu verstehen, um eine reguläre Anfrage von einer "böswilligen" zu unterscheiden.

Sicherheitsrisiken im Design

Ein Grund für die häufige Angreifbarkeit von Online-Applikationen ist, dass ihre Entwickler vor allem im Kontext von Navigation, Design und Nutzungstauglichkeit denken. Anwendungen werden meist unter einem enormen Zeitdruck erstellt. Dabei stehen vor allem funktionale und Marketingaspekte im Mittelpunkt. Die Sicherheit wird stark vernachlässigt; zumal auch Entwickler dem Irrglauben erliegen, dass eine vorgeschaltete Firewall schon für den nötigen Schutz sorgen wird.

Zudem stellen sich nur die wenigsten Programmierer vor, wie Angreifer arbeiten: Entwickler denken im Kontext ihrer Anwendung und deren planmäßigen Aktionen. Ein Angreifer versucht hingegen, die Anwendung so zu beeinflussen, dass sie ihm einen (ungeplanten) Durchgriff auf dahinter liegende Datenbanken ermöglicht oder ihm zusätzliche Informationen liefert. Unter Umständen möchte ein Angreifer sogar nur ausspionieren, wer was mit einer Applikation macht.

Zudem neigen Software-Entwickler dazu, ihre (unerkannten) Fehler zu wiederholen: Hat ein Angreifer eine Sicherheitslücke in einer Anwendung identifiziert, ist er oft in der Lage, alle anderen Applikationen desselben Entwicklers auf die gleiche Weise zu penetrieren, da sie in der Regel ähnlich programmiert sind.

Angriffsweisen

Die derzeit beliebteste Angriffsvariante ist das Cross Site Scripting – eigentlich eine relativ alte Technik, die das Stehlen der Log-in- und Session-Informationen von Dritten ermöglicht, beispielsweise in Form von Cookies. Möglichkeiten zum Cross Site Scripting findet man in nahezu jeder Anwendung. Sobald ein Angreifer über die entsprechenden Informationen verfügt, kann er ganz "legal" eine aufgegebene Session übernehmen, sofern der rechtmäßige Anwender sich nicht explizit abmeldet. Schließt er – was allzu häufig vorkommt – einfach seinen Browser, wird die Verbindung nicht ordnungsgemäß getrennt. Da die Server-Anwendung nicht unterscheiden kann, ob nur eine Netzwerkstörung vorliegt oder der Browser geschlossen wurde, haben beispielsweise Session-Cookies eine bestimmte Überlebensdauer. So kann ein Angreifer, der im Besitz des Cookies ist, die Session übernehmen und fortführen.

Eine weitere beliebte Variante ist Spionage mittels SQL-Injection. Ziel hierbei ist es, über die Maske der Anwendung direkt mit der Datenbank zu kommunizieren; die Möglichkeiten reichen bis hin zum vollständigen Auslesen und Zerstören. Besonders bedenklich hierbei ist , dass Unternehmen (besonders auch Finanzdienstleister) nicht nur die wenigen, wirklich benötigten Informationen "ins Internet" stellen. Vielmehr zeigt die Erfahrung, dass nicht selten komplette Datenbanken hinter den Masken hinterlegt sind. Folglich kann ein Angreifer, der durch eine Lücke in der Applikation auf die Daten zugreift, über eine große Fülle an Informationen verfügen, beispielsweise Kundendaten wie Passwörter, Kontostände und so weiter.

Eine SQL-Injection erfolgt im einfachsten Fall direkt über den Browser, indem der Angreifer in das vorgesehene Eingabefeld für eine Datenabfrage über entsprechende Escape-Zeichen ein SQL-Statement eingibt. Allzu oft reichen Applikationen diese Anfragen an die Datenbank weiter, weil die richtige, sicherheitskritische Interpretation der Eingaben in der Entwicklung vernachlässigt wurde. Wiederum denken hier Entwickler oft nur im Kontext ihrer intendierten Navigation und können sich nicht vorstellen, dass jemand einen kompletten SQL-Befehl beispielsweise bei der Frage nach seinem Vornamen eingibt.

Eine weitere übliche Schwachstelle ist blindes Vertrauen in übergebene Parameter. Häufig werden bestimmte Informationen an die Anwendung direkt in der URL übergeben. So tauchen dort beispielsweise Variablen-Namen auf oder in schlechten Online-Banking-Applikationen ist die Kontonummer "gleich irgendetwas" in der URL ersichtlich. Ein Angreifer, der diese Daten verändert, kann möglicherweise unmittelbar auf andere Konten oder Transaktionen zugreifen. Eine unter Sicherheitsaspekten programmierte Anwendung würde hingegen feststellen, dass der Kontext nicht stimmt und einen Fehler melden.

Das Problem in allen genannten Fällen ist schlechtes Anwendungs-Design, bei dem Entwickler darauf vertrauen, dass nur bestimmte Abläufe in einer Applikation möglich sind. In der "perfekten Welt" meldet sich ein Benutzer erst an und führt dann eine Abfrage nach seinem Kontostand durch. Wer daran glaubt, prüft bei der Kontostandabfrage womöglich nicht noch einmal, ob der Benutzer wirklich angemeldet ist oder die Anfrage sich überhaupt auf dessen Konto bezieht. Angreifer halten sich aber nicht an den vorgesehen Ablauf oder "normalen" Kontext. In einigen Fällen ist es noch heute möglich, über eine entsprechende URL direkt einen Kontostand abzufragen, ohne dass zuvor eine Anmeldung erfolgt ist.

Was tun?

Zu lösen ist die geschilderte Problematik von Online-Applikationen nur, wenn das Thema Sicherheit von Beginn an die entsprechende Aufmerksamkeit genießt. Ein sinnvoller erster Schritt ist auch, bestehende Anwendungen im Hinblick auf Sicherheitslücken und -risiken zu untersuchen und Log-Files aufmerksam nach Ungereimtheiten zu durchforsten. Diesen Untersuchungen müssen dann natürlich Maßnahmen folgen.

Eine weitere Möglichkeit ist, Anwendungen so zu gestalten, dass sämtliche ein- und ausgehende Informationen über einen speziellen Container gesteuert werden: Der gesamte Navigationspfad wird zusätzlich gekapselt, und sämtliche Eingaben werden gefiltert. Dies ermöglicht der Applikation immer zu wissen, in welchem Kontext sich der Benutzer gerade befindet.

Rolf vom Stein und Tobias Kirchhoff sind Security Consultants bei der TÜV Secure iT GmbH.