|
Sicherheit von Datenbanken
Datenbanken zählen mit ihren Daten zu den wichtigsten Ressourcen der Unternehmens-IT. Durch die immer weiter verbreitete direkte Anbindung an Web-Applikationen und die zunehmende Kopplung von Diensten über Unternehmensgrenzen hinweg erhält deren Sicherheit eine steigende Relevanz
Klassische Sicherheitsmechanismen von Datenbanken zielen hauptsächlich auf die Zugriffskontrolle ab, d.h. es gibt umfangreiche Berechtigungs- und Rollenkonzepte, deren Granularität teilweise bis auf die Ebene einzelner Spalten der Tabellen hinabreicht. Insbesondere in Szenarien, in denen Datenbanken direkt an Web-Applikationen angebunden werden, die über das Internet oder von Partnernetzen aus erreichbar sind, stellen diese Mechanismen aber keinen ausreichenden Schutz mehr dar.
Angriffsarten auf Datenbanken und Applikationen
Angriffstechniken wie SQL Injection nutzen nämlich im ersten Schritt dieselben Wege wie die Applikation selbst (sowohl was die Kommunikationswege als auch was die Zugriffe angeht). Herkömmliche Sicherungsmaßnahmen wie Firewalls oder auch die Rechtemodelle in den Datenbanken sind daher nur sehr begrenzt gegen derartige Angriffe wirksam.
SQL Injection beruht auf dem Einschleusen von Befehlsfragmenten in Datenbankabfragen über Eingabefelder oder Parameter der Applikation. Ermöglicht wird diese Angriffstechnik durch eine unzureichende Prüfung der Eingaben in Verbindung mit einer Verkettung der Eingaben mit dem SQL-Befehl, der von der Applikation verwendet wird. Dadurch kann eine Gesamtzeichenkette entstehen, die einen völlig anderen Befehl enthält, als der Entwickler der Applikation es vorgesehen hat.
Die Auswirkungen dieser Angriffstechnik reichen von der Gewinnung von Informationen durch Provokation von Fehlermeldungen über das Auslesen von Daten bis hin zu aktiven Manipulationen. Je nach Konstellation kann es in einem fortgeschrittenen Stadium des Angriffs sogar zum Übergriff auf das Betriebssystem des Datenbankservers kommen.
Doch nicht nur in den Applikationen gibt es Sicherheitsprobleme, auch die Datenbanken selbst haben mitunter gravierende Schwachstellen.
Gerade bei den großen kommerziellen Produkten werden immer wieder sicherheitsrelevante Fehler in der Implementierung von Funktionen und Befehlen oder unsichere Default-Konfigurationen bekannt. So gibt es beispielsweise häufig Buffer-Overflow-Schwachstellen in den Parametern von Builtin-Funktionen, die über SQL ausgenutzt werden können.
Abhilfe schafft hier zwar das Einspielen von Patches, was jedoch aufgrund kurzer Wartungsfenster oder auch der Qualität der vom Hersteller bereitgestellten Patches meist leichter gesagt als umgesetzt ist.
Gegenmaßnahmen
Eine der einfachsten und gleichzeitig wirksamsten Gegenmaßnahmen zur Sicherung von Datenbanken ist die sorgfältige Filterung von Eingaben und Parametern in den vorgelagerten Applikationen. Speziell im E-Business-Umfeld ist dies sehr wichtig, da Web-Applikationen prinzipbedingt besonders exponiert sind.

Bei der Prüfung von Eingaben sollten alle Zeichen, die in der Datenbank (oder einem anderen Subsystem, das die übergebenen Daten verarbeitet) eine besondere Bedeutung haben, geeignet ausgetauscht werden. Für die Implementierung des Filters sollte stets ein Whitelist-Ansatz ("Zulässig ist nur das, was ausdrücklich erlaubt ist") gewählt werden, da beim Blacklist-Ansatz ("Erlaubt ist alles, es sei denn, es ist explizit verboten") immer die Gefahr der Unvollständigkeit und der Umgehbarkeit besteht.
Eine weitere Sicherheitsmaßnahme stellt die Härtung der Datenbank dar. So wie es auch auf Betriebssystemebene gängige Praxis ist, nicht benötigte Dinge zu entfernen und sicherheitsrelevante Restriktionen vorzunehmen, so sollten auch Datenbanken einer Härtung unterzogen werden. Dabei sollten unter anderem nicht benötigte Default-Accounts deaktiviert werden, unsichere Default-Berechtigungen angepasst sowie sicherheitsproblematische Datenbankobjekte entfernt werden.
Unterstützt werden kann diese Arbeit auch durch spezielle Datenbank-Scanner, die zum einen Schwachstellen auf Dienstebene prüfen (z.B. ein Buffer Overflow in der Verarbeitungslogik des Netzwerkprotokolls der Datenbank) und zum anderen umfangreiche Prüfungen in der Datenbank selbst vornehmen können. Hierzu kann man den Scannern einen Datenbank-Account mitgeben, mit dem sie sich einloggen und diverse Untersuchungen durchführen (z.B. ob Rechte zu großzügig gesetzt sind oder Accounts mit Default-Passwörtern vorhanden sind). Oft wird auch gleich die SQL-Anweisung angegeben, mit der das jeweilige Problem behoben werden kann.
Neben den Gegenmaßnahmen in den Applikationen und der Datenbank selbst gibt es auch Spezialprodukte, mit denen sichergestellt werden kann, dass keine unautorisierten Zugriffe auf die Datenbank erfolgen. So können im E-Business-Umfeld sogenannte Web Application Firewalls eingesetzt werden. Web Application Firewalls dienen der Abwehr von vielerlei Angriffen gegen Web-Applikationen auf Anwendungsebene. Neben dem Schutz gegen SQL Injection können sie auch andere Angriffsarten wie Cookie-Manipulation oder Cross Site Scripting verhindern.
Einen alternativen Ansatz stellen spezielle Applikations-IDS/IPS-Systeme dar, die auf Protokolle der Anwendungsebene (HTTP und SQL) spezialisiert sind und Angriffe auf niedrigeren Protokollschichten bewusst außer Betracht lassen. Hinsichtlich der Absicherung von Datenbankzugriffen sind diese Systeme in der Lage, ein Normalprofil der SQL-Abfragen aufzuzeichnen, das die IP-Adressen der Datenbank-Clients, die Datenbankbenutzer sowie die von diesen Benutzern abgesetzten SQL-Befehle enthält. Nach der Aktivierung dieses Normalprofils können Abweichungen, z.B. ein durch SQL Injection modifizierter Abfragebefehl, erkannt und eine entsprechende Reaktion ausgelöst werden. Dies kann je nach Konfiguration ein Blockieren der Datenbankverbindung oder lediglich eine Alarmierung sein.
Fazit
Datenbanken sind ein in mehrererlei Hinsicht interessantes Ziel für einen Angreifer: Sie enthalten mitunter sensible Daten, sie sind häufig im Backend und damit hinter allen Firewalls platziert und sie können dort aufgrund ihrer komplexen Funktionalität selbst als Angriffswerkzeug missbraucht werden. Eine sorgfältige Absicherung von Datenbanken ist daher insbesondere im Umfeld von E-Business-Anwendungen unabdingbar. Diese Sicherheitsmaßnahmen sollten aber alle Komponenten vom Webserver über die Applikation bis hin zur Datenbank einbeziehen, um ein angemessenes Gesamtsicherheitsniveau zu erreichen.
zurück
|