beebright - Fotolia
So können sich Unternehmen vor SQL Injection schützen
In Datenbanken finden sich häufig wertvolle Daten, die per SQL Injection von Hackern geklaut werden können. Schutz davor bieten Dienste wie SQL Database Threat Detection und WAF.
SQL beziehungsweise die Structured Query Language ist eine Datenbanksprache, mit der sich Daten in relationalen Datenbanken verwalten und strukturieren lassen. Sie wurde erstmals in einem Forschungspapier von IBM im Jahr 1974 erwähnt. Seitdem wurde SQL aufgrund seiner leichten Bedien- und Nutzbarkeit immer beliebter. Heutzutage verwenden viele Datenbanken wie MySQL und der Microsoft SQL Server die Datenbanksprache SQL als Basis zum Bearbeiten und Abfragen von Daten.
In Datenbanken lassen sich vielerlei Arten von Informationen speichern. Seien es Kundendaten oder medizinische beziehungsweise finanzielle Aufzeichnungen – sie alle haben in der Regel einen großen Wert. Aus diesem Grund sind Datenbanken schon seit den Anfangszeiten der modernen IT auch bei Kriminellen ein beliebtes Ziel.
Neben den üblichen Schwachstellen, die ausgenutzt werden können, um Zugang zu einem System zu erhalten, gibt es eine weitere Methode, auf die Angreifer setzen können, um an fremde Daten zu gelangen: Mit Hilfe von SQL Injection können sie unerlaubt Zugang zu internen Daten erhalten und sie manipulieren oder gar löschen.
Angriffe via SQL Injection versuchen meist direkt über Formularfelder in Webseiten oder über spezielle URLs auf eine Datenbank zuzugreifen. Auf diese Weise werden Kommandos an den Server geschickt, die dieser interpretiert, so dass er zum Beispiel mit dem Senden einer kompletten Tabelle mit Nutzernamen, Passwörtern und Kreditkarteninformationen reagiert.
Genau dieser und vergleichbare Tricks wurden in den vergangenen Jahren immer wieder von Hackern verwendet, um sich unerlaubt Zugang zu Informationen zu verschaffen. Bei manchen der bekannt gewordenen Datendiebstähle wurden bis zu 100 Millionen Datensätze oder mehr geklaut.
Schutz vor SQL Injection
Es gibt viele Möglichkeiten, um Angriffe via SQL Injection zu verhindern oder zumindest zu erschweren. Teilweise sind die dabei verwendeten Techniken jedoch kompliziert umzusetzen. Die Bereinigung der Eingaben ist eine der am häufigsten und zuverlässigsten verwendeten Methoden. Mit ihr soll verhindert werden, dass schädliche Kommandos ausgeführt werden, die einen Einfluss auf den Datenbankserver haben.
Ohne jetzt zu sehr auf die technischen Details eingehen zu wollen – dazu gibt es ausreichend Literatur, die das Thema in der gebührenden Breite behandelt: Stellen Sie sich ein Formular auf einer Webseite vor, das die Eingabe eines Nutzernamens erfordert. Nachdem er eingetippt und abgesendet wurde, wird er im Hintergrund als Eingabe verarbeitet und in eine Tabelle in einer Datenbank geschrieben. Oder er wird mit bereits existierenden Einträgen verglichen.
Es ist also möglich, mit diesem Formular direkt mit der Datenbank zu interagieren. Angreifer nutzen dies, um eigene Befehle oder Code einzuschleusen. Teilweise können schon vergleichsweise einfache Kommandos Hunderte oder gar Tausende ansonsten verborgener Datenbankeinträge offenbaren. Mit manchen Tricks ist es sogar teils möglich, eigene Accounts mit Admin-Rechten auf dem Server einzurichten.
Es ist deswegen unbedingt notwendig, dass alle über ein Webformular erfolgten Eingaben sowie alle zugehörigen HTTP-Posts umfassend bereinigt werden, bevor sie ausgeführt werden. Jeder Programmierer sollte dafür sorgen, dass ungewöhnliche Schriftzeichen nicht erlaubt sind und dass bestimmte Escape-Sequenzen genutzt werden, so dass Eingaben nicht versehentlich als Kommandos interpretiert werden können. Wann immer möglich, sollten zudem vorbereitete Anweisungen beziehungsweise Instruktionen verwendet werden. Unglücklicherweise ist eine ordentliche Bereinigung der Eingaben aufwändig und kann relativ leicht zu Fehlern führen.
Eine weitere Möglichkeit ist der Einsatz einer Web Application Firewall, die den eingehenden Traffic auf verdächtige Eingaben überprüft. Alternativ können auch ein IDS (Intrusion Detection System) oder ein IPS (Intrusion Protection System) eingesetzt werden. Diese Systeme sorgen dafür, dass ein Alarm ausgelöst wird, bevor eine gefährliche Eingabe interpretiert wird oder dass sie gleich verworfen wird.
Diese Tools sind allerdings nicht ganz billig. Außerdem funktionieren sie nicht, wenn verschlüsselte Daten übertragen werden. Hierfür wird ein System zur SSL Inspection benötigt. Außerdem sind ISD- und IPS-Lösungen kein ausreichender Ersatz für eine solide Bereinigung der Eingaben auf dem Server selbst.
Optionen für Cloud-Nutzer
Datenbanken und Webserver sind ideale Kandidaten, um sie in einer segmentierten, hochskalierbaren und hochverfügbaren Cloud-Umgebung einzusetzen. Sie werden deswegen auch in allen Cloud-Plattformen intensiv genutzt. Das bedeutet, dass sich auch Cloud-Anbieter mit dem Schutz vor Angriffen via SQL Injection beschäftigen müssen. Aber zum Glück gibt es bereits eine Reihe von soliden Produkten in diesem Bereich, die zur Verfügung stehen.
Eine der wichtigsten Lösungen in diesem Bereich ist SQL Database Threat Detection für Microsoft Azure. Pro Server kostet der Dienst nur 15 US-Dollar pro Monat und bietet dafür unter anderem automatisch ausgelöste Alarme, wenn es zu einem Angriff via SQL Injection oder anderen ungewöhnlichen Zugriffen auf eine Datenbank kommt. Der Service weist zudem auch auf mögliche Schwachstellen hin.
SQL Database Threat Detection wäre nicht so umfangreich und gleichzeitig so günstig, wenn der Dienst auf individueller Hard- und Software im eigenen Netzwerk eines Unternehmens laufen müsste. Dabei wäre viel zu viel anzupassen und individuell einzustellen, um ihn zu vergleichbaren Preisen nutzen zu können. In diesem Feld wirken sich Standardisierung und Skalierungseffekte der Cloud eindeutig positiv aus.
Aber natürlich bieten auch andere Provider vergleichbare Services. So hat etwa Amazon Web Services (AWS) eine virtuelle Version der eigenen Web Application Firewall (WAF) im Programm. Diese Firewall wird in derselben Cloud-Umgebung eingerichtet, in der sich die zu schützenden Web- und Datenbankserver befinden. Auf diese Weise kann sie den eingehenden Traffic überprüfen und gegebenenfalls abfangen. Das ist ein eindeutiger Vorteil dieses Einsatzszenarios, es gibt aber noch weitere.
Wie auch viele andere Cloud-Anwendungen lässt sich WAF relativ schnell ausrollen und dazu leicht konfigurieren. Außerdem arbeitet der Dienst direkt mit anderen Cloud-Security-Produkten zusammen. Zu nennen wären hier etwa Lösungen zum Schutz vor DDoS-Angriffen (Distributed Denial of Service). Die Web Application Firewall von Amazon ist deswegen eine interessante Lösung, wenn ein Unternehmen erwägt, Web- und Datenbankserver in die Cloud umzuziehen und dort weiter zu betreiben.
Fazit
Es gibt keine zweite Chance, wenn es um den Einsatz öffentlich zugänglicher Web- oder Datenbankserver geht. Sobald Daten geklaut wurden, lassen sie sich nicht mehr zurückholen. Das führt dann zu weiteren negativen Auswirkungen wie einem Reputationsverlust, möglicherweise massiven zusätzlichen Kosten und Rechtsstreitigkeiten rund um die Themen Compliance und Wahrung der Sorgfaltspflichten.
Das Härten von Servern, die Bereinigung der Eingaben und der Aufbau eines mehrstufigen Sicherheitskonzepts sowie der Einsatz von IDS- und Proxy-Appliances sind schon ein guter Start zum Schutz der eigenen Datenbanken. Wer will, kann diese Anwendungen auch in die Hände eines verlässlichen Cloud-Providers übergeben. Dort können sie dann mit den in diesem Artikel vorgestellten Sicherheitslösungen wie SQL Database Threat Detection und WAF weiter abgesichert werden.
Folgen Sie SearchSecurity.de auch auf Twitter, Google+, Xing und Facebook!