Kategorien
Seiten
-

IT Center Blog

SQL-Injection: Angriffe auf Datenbanken

23. März 2022 | von
Medizinische Spritze

Quelle: Pixabay

Datenbanksysteme sind in vielerlei Hinsicht unverzichtbar. Diese Systeme ermöglichen es, große Datenmengen zu ordnen, langfristig zu speichern und abzurufen. Das Einsatzfeld von Datenbanksystemen ist immens und die Menge an darin gespeicherten personenbezogenen Daten ebenso. So werden beispielsweise bei Banken und Versicherungen Kontoinformationen und Informationen bezüglich Buchungsvorgängen in Datenbanken strukturiert und gespeichert. Bei jeder Produktsuche in einem Webshop greifen wir auf eine bestimmte Datenbank zu und auch unsere personenbezogene Daten, wie beispielsweise Anmeldedaten werden in Datenbanken gespeichert. Dabei werden sensible Daten im besten Fall verschlüsselt. Der Aufwand für den Aufbau und die Pflege dieser elektronischen Datenbestände ist groß – doch die größte Herausforderung ist es, ihre Sicherheit zu gewährleisten. Eine der größten Bedrohungen für diese Datenbanken und die darin enthaltenen Daten sind sogenannte Code-Injections.

Was ist Code Injection?

Einfach ausgedrückt versteht man unter Code-Injection das Einschleusen von einem bösartigem Code in eine Software, der die Funktion dieser Anwendung negativ beeinflusst. Durch diesen in die Software eingebrachten Code, können die Sicherheit, die Integrität und die Funktionsweise der Anwendung gestört werden.

Zu den bekanntesten Formen der Code-Injection gehört die sogenannte SQL-Injection (SQLI), bei der die Eingabe über die Sprache SQL (= Structured Query Language) erfolgt. SQL wird inzwischen als Standardsprache für Datenbankmanagement genutzt. Datenbankeinträge können über sogenannte SQL-Abfragen erfasst, gelesen und gelöscht werden. Greift eine Website zum Beispiel auf ihre Datenbank zu, um Informationen zu finden oder zu bearbeiten, wird SQL verwendet, um diese Abfrage zu verarbeiten. In der Praxis kann das zum Beispiel wie folgt ablaufen: Nutzende besuchen einen Webshop. Sie kommunizieren mittels einer Produktsuchmaske in diesem Webshop mit einem Server. Der Server fragt dann eine Datenbank ab und gibt letztendlich die Ergebnisse als Suchergebnisse an den Webshop zurück.

Genau über diesen Weg können Datenbanken anfällig für Code-Injections sein. Statt eines herkömmlichen Suchbegriffs in das Eingabefeld einzugeben, geben Angreifer*innen SQL-Befehle ein.

Wie funktioniert SQL-Injection?

Zahlreiche Websites erfassen Personeneingaben über Eingabefelder in der Web-Oberfläche und leiten sie an ihre Server weiter. Das passiert zum Beispiel, wenn Nutzer*innen ein Suchfeld auf einer Website nutzen, sich registrieren, Profilinformationen oder ihre E-Mail-Adresse in einem Feld angeben. Auch Kommentarfelder, Felder eines Web-Formulars oder Felder für Kund*innenbewertungen sind solche Eingabefelder. Hacker*innen können versuchen, verschiedene SQL-Codes in diese Eingabefelder einzugeben und versuchen, über diesen Weg in die Datenbank der Website einzudringen. Konkrete Beispiele zeigen, wie durch SQLI Superuser angelegt werden und Passwörter ausgelesen oder zurückgesetzt werden können.

Jede Anwendung, die diese Eingaben nicht prüft, ist anfällig für Code-Injektion. Ohne Prüfung könnte ein SQL-Code direkt als Befehl weitergeleitet und im eigentlichen Code eingeschleust werden. Einmal eingeschleust kann dieser Code die vom System ausgeführten Befehle beeinflussen. So wäre es beispielsweise möglich, Informationen unerlaubt auszulesen, zu verändern oder zu löschen.

Was sind die Auswirkungen von SQL-Injection?

Injection-Angriffe richten sich gegen Server und Anwendungen mit freiem Zugang für jede*n Internetnutzer*in. Auf dieser Weise sind besonders Unternehmen und Organisationen eine direkte Zielscheibe für Cyberkriminelle. Für betroffene Unternehmen und Organisationen lauert ein breites Spektrum an Bedrohungen. Bei vielen SQLI-Angriffen werden Daten gestohlen. Diese Daten können nicht nur Kund*inneninformationen beinhalten, sondern auch Geschäftsgeheimnisse oder geistiges Eigentum. Diese Daten können dann in manchen Fällen sogar dazu dienen, in andere Bereiche der IT-infrastruktur einzudringen.

Auch die Veränderung oder Löschung von Daten in einer Datenbank, kann bereits eine Menge Chaos stiften und ein Unternehmen oder eine Organisation leicht destabilisieren. Nicht zu unterschätzen sind für Unternehmen und Organisationen ebenfalls Image-Schäden. Werden Sicherheitslücken und personenbezogene Daten erstmal öffentlich gemacht, kann es sehr schwierig sein, das Vertrauen der Kund*innen und der Öffentlichkeit wiederzugewinnen.

Doch auch für Privatpersonen können die Auswirkungen eines solchen Angriffs gravierende Auswirkungen haben. Wenn Nutzer*innen eine Website nutzen, die Ziel eines solches Angriffs geworden ist, sind ihre persönlichen Daten nicht mehr sicher. Datendiebstahl kann für Betroffene im schlimmsten Fall zu finanziellen Schäden und Identitätsdiebstahl führen.

Wie können Code Injections verhindert werden?

Da sich Injection-Angriffe gegen Server und Anwendungen richten, können Nutzer*innen selbst diese Angriffe nicht verhindern. Grundsätzlich sollten Nutzer*innen beim Umgang mit personenbezogenen Daten im Internet sparsam und mit Bedacht vorgehen. Je mehr Daten wir im Internet preisgeben, desto angreifbarer werden wir. In erster Linie sollten Anwendungsentwickler*innen die Risiken kennen und ihre Anwendungen dementsprechend schützen. Jede*r Entwickler*in oder Serveradministrator*in sollte die eigenen Systeme regelmäßig auf Schwachstellen hin überprüfen und diese so schnell wie möglich korrigieren.

Im Optimalfall sollte jede Eingabe in die Web-Oberfläche vom System geprüft und gegebenenfalls bereinigt werden. Durch spezielle Maßnahmen kann sichergestellt werden, dass Eingaben nicht als Befehle übernommen werden. Das bedeutet, dass zum Beispiel ungewöhnliche Zeichen, die auf Manipulationen hindeuten, blockiert werden. Die erlaubten Eingaben können ebenfalls auf ihr Format und ihre Länge geprüft und eingegrenzt werden. Wenn das Format der Eingabe dem Format eines SQL-Befehls zu sehr ähnelt, wird die Eingabe nicht weitergeleitet. Auch die Menge an erlaubten Zeichen kann eingegrenzt werden. Ein allbekanntes Beispiel dafür sind Eingabefelder für Benutzernamen, bei denen die Nutzung bestimmter Sonderzeichen, verhindert wird. Einer der Gründe dafür ist, dass diese Sonderzeichen Sonderfunktionen in SQL besitzen.

Code-Injections können eine Menge Ärger verursachen. Wenn eine Anwendung nicht ausreichend gegen Injection-Angriffe geschützt ist, können diese Angriffe völlig automatisiert ablaufen. Jedes einzelne Eingabefeld einer Anwendung kann dabei von Cyberkriminellen gescannt und auf Schwachstellen getestet werden. Bei einem erfolgreichen Angriff können die Konsequenzen schwerwiegend sein. Gegen SQLI-Angriffe sind Nutzer*innen leider machtlos. Anwendungsentwickler*innen sollten sich der Gefahr von SQLI-Angriffen stets bewusst sein und ihre Systeme von Angriffen schützen. Scanns und Schwachstellenanalysen sind auch als präventive Maßnahme unumgänglich. So können Schwachstellen zeitnah aufgedeckt und behoben werden.

 

Verantwortlich für die Inhalte dieses Beitrags ist Stéphanie Bauens.

Kommentare sind geschlossen.