SQL-Injection: Ist es immer noch eine Bedrohung? Wie können Sie es vermeiden?
Veröffentlicht: 2020-03-07Datenschutzverletzungen sind so häufig, dass sie nicht einmal mehr überraschend sind. Ziel böswilliger Akteure ist es, möglichst viele Daten zu sammeln. Sie sind hinter Anmeldedaten, Kreditkarteninformationen oder Geschäftsgeheimnissen her. Sobald sie solche Daten in die Hände bekommen, verkaufen sie sie im Dark Web.
Wenn Sie nicht verstehen, wie viele Daten sie bisher gestohlen und wie viel sie im Dark Web abgelegt haben, finden Sie hier eine besorgniserregende Zahl. Im vergangenen Jahr haben Kriminelle allein von sechzehn gehackten Websites 620 Millionen Konten gestohlen und verkauft. Ja, das Hacken von 16 Websites kann großen Schaden anrichten. Aber wissen Sie, was schlimmer ist? Täglich werden Tausende neuer Websites gehackt!
Cyberkriminelle entwickeln täglich neue Hacking-Methoden. Das heißt aber nicht, dass sie ältere Techniken wie SQL-Injections vergessen. Sie sind nach wie vor einer der häufigsten Angriffsvektoren, die einfach auszuführen sind und fruchtbare Ergebnisse liefern.
- Was ist SQL-Injection und warum ist es gefährlich?
- Wie funktioniert SQL-Injection?
- In-Band-SQL-Injection
- Blinde SQL-Injection
- Out-of-Band-SQL-Injection
- Ist diese Bedrohung noch relevant?
- Sicherheitstipps zur Vorbeugung
- Letzte Worte
Was ist SQL-Injection und warum ist es gefährlich?
SQL-Injection, auch SQLi genannt, ist eine Form eines Injektionsangriffs, der es dem Hacker ermöglicht, eine SQL-Anweisung auszuführen. Injektionsangriffe sind eine breite Kategorie verschiedener Angriffsvektoren. Aber sie alle ermöglichen es böswilligen Akteuren, gefährliche Eingaben vorzunehmen. Sie fungieren als Systembefehl, der dann ausgeführt wird.
SQL-Anweisungen werden am häufigsten zum Hinzufügen oder Abrufen von Daten aus verschiedenen Datenbanken verwendet. Viele bekannte Verwaltungssysteme wie Microsoft SQL Server, Access und Oracle verwenden diese Anweisungen.
Da viele weit verbreitete Datenbankverwaltungssysteme SQL-Anweisungen verwenden, können Hacker diese Systeme durch SQL-Injections ausnutzen. Das bedeutet, dass Kriminelle auf die in der Datenbank gespeicherten sensiblen Daten zugreifen und diese stehlen können. Es kann Folgendes umfassen:
- geistigen Eigentums.
- Kreditkarteninformation.
- Kundeninformation.
- Adressen.
- Firmengeheimnisse.
Für Sie empfohlen: Chrome vs. Firefox: Der Leistungs-, Sicherheits- und Datenschutzvergleich!
Wie funktioniert SQL-Injection?
Um einen SQL-Injection-Angriff auszuführen, muss der Hacker anfällige Benutzereingaben auf der Website oder in internen Anwendungen des Unternehmens lokalisieren.
Das Opfer verwendet beispielsweise WordPress für seine Website. Der Code weist möglicherweise eine SQL-Schwachstelle auf, die Benutzereingaben ohne jegliche Bereinigung direkt an die Datenbank sendet. Wenn ein Hacker diese Schwachstelle findet, kann er Befehle an die betreffende Datenbank senden. Anschließend geht die Datenbankausgabe zurück an den Browser und ermöglicht es dem Hacker, verschiedene Befehle auszuführen. Auf diese Weise können sie die gesamte Datenbank herunterladen, neue Befehle einrichten, Benutzerkonten ändern oder neue Konten erstellen.
Es gibt drei Hauptformen von SQL-Injection-Angriffen:
- In-Band-SQL-Injection:
- Fehlerbasierte SQL-Injection.
- Union-basierte SQL-Injection.
- Blinde SQL-Injection:
- Boolescher Wert.
- Zeitbasiert.
- Out-of-Band-SQL-Injection.
In-Band-SQL-Injection
Die In-Band-SQL-Injection ist eine der gebräuchlichsten Arten, da sie einfach und effizient ist. Dabei nutzt der Angreifer denselben Kommunikationskanal, um den Angriff auszuführen und Ergebnisse zu sammeln. Es gibt zwei Untervarianten – fehlerbasierte und Union-basierte SQL-Injection:
- Durch fehlerbasierte SQL-Injection kann der Hacker veranlassen, dass die Datenbank Fehlermeldungen erzeugt. Anschließend können sie diese Fehlermeldungen verwenden, um Informationen über die Datenbank selbst zu sammeln.
- Die Union-basierte SQL-Injection ermöglicht es dem Täter, den UNION-SQL-Operator auszunutzen. Es kombiniert verschiedene von der Datenbank bereitgestellte Anweisungen, um eine HTTP-Antwort zu erhalten. Eine solche Antwort enthält oft Daten, die Hacker ausnutzen können.
Blinde SQL-Injection
Blinde SQL-Injections basieren auf den Verhaltensmustern des Servers. Sie sind viel langsamer in der Ausführung. Der Hacker sendet Nutzdaten aus und untersucht die Antwort des Servers, um dessen Struktur zu analysieren. Sie nennen dies „blind“, weil die Daten nicht direkt an die Hacker gelangen. Daher können sie keine In-Band-Informationen über den Exploit sehen. Es gibt zwei Varianten, nämlich Boolesch und Zeitbasiert:
- Die boolesche Variante ermöglicht es dem Hacker, eine SQL-Abfrage zu senden, die die Datenbank dazu auffordert, Informationen zurückzugeben. Die Informationen innerhalb der HTTP-Antwort ändern sich abhängig vom vorherigen Ergebnis.
- Die zeitbasierte Variation ermöglicht es dem böswilligen Akteur, eine SQL-Abfrage direkt an die Datenbank zu senden, wodurch die Datenbank gezwungen wird, zu warten, bevor sie reagieren kann. Der Angreifer berücksichtigt die Zeit, die die Datenbank benötigt, um zu antworten, und entscheidet, ob die Abfrage wahr oder falsch ist. Basierend auf dem Ergebnis erfolgt die HTTP-Antwort sofort oder verzögert.
Out-of-Band-SQL-Injection
Durch die Out-of-Band-SQL-Injection kann der Hacker die Datenbank nur dann angreifen, wenn bestimmte Funktionen auf dem Datenbankserver aktiviert sind. Es ist die am wenigsten verbreitete SQL-Injection-Methode. Viele Hacker verwenden es als Ersatz für fehlerbasierte und blinde SQL-Injections.

Dieser spezielle Angriff ist eine Option, wenn der Hacker nicht dasselbe Medium verwenden kann, um den Angriff auszuführen und Informationen zu sammeln. Sie können diese Injektion auch verwenden, wenn ein Server instabil und langsam ist, um die beiden anderen Injektionstypen auszuführen. Diese Technik erstellt DNS- und HTTP-Anfragen zur Weiterleitung der gestohlenen Daten.
Vielleicht gefällt Ihnen Folgendes: Tipps zur Bewertung und Verwaltung von Cybersicherheitsrisiken für kleine Unternehmen.
Ist diese Bedrohung noch relevant?
SQL-Injections sind eine der ältesten Formen aggressiver Cyberangriffe. Dennoch ist es immer noch sehr relevant. Das Open Web Application Security Project listete SQL-Injections vor zwei Jahren als größte Bedrohung auf. Der Cloud-Dienstleister Akamai hat einen „State of the Internet Report“ erstellt, der herausfand, dass SQL-Injections für 65 % aller webbasierten Angriffe von 2017 bis 2019 verantwortlich waren. Man kann also sagen, dass SQL-Injection immer noch bei zwei Dritteln aller Web-Angriffe vorkommt in den vergangenen Jahren.
Im ersten Quartal 2017 waren diese Vektoren für 44 % der Angriffe auf Anwendungsebene verantwortlich. Erschwerend kommt hinzu, dass keine andere Form von Anwendungsangriffsvektoren so schnell wächst wie SQL-Injections. Im November 2018 kam es zu einem weiteren deutlichen Anstieg. Es hat sich gezeigt, dass es über 35 Millionen SQL-Injection-Angriffsversuche gab. Experten gehen davon aus, dass die Hauptursache für diesen Anstieg die Ferienzeit war. Darüber sollten sich alle Websitebesitzer im Klaren sein – insbesondere, wenn sie im Einzelhandel tätig sind. Aber auch nach der Weihnachtszeit bleibt die SQL-Injection eine Bedrohung, der Sie sich bewusst sein müssen.
Die Vereinigten Staaten sind das Hauptziel für Angriffe auf Anwendungsebene. Es wurde in nur 17 Monaten rund 3 Milliarden Angriffen ausgesetzt. Weitere beliebte Opfer sind das Vereinigte Königreich, Deutschland, Brasilien, Indien, Japan, Kanada, Australien, Italien und die Niederlande. Es ist daher davon auszugehen, dass es sich immer noch um eine große Bedrohung handelt und alle Unternehmen umfangreiche Vorsichtsmaßnahmen ergreifen sollten.
Sicherheitstipps zur Vorbeugung
Die beste Vorgehensweise für Entwickler besteht darin, Vorsichtsmaßnahmen einzuführen, um zu verhindern, dass es jemals zu Angriffen kommt. Das sind die wirksamsten Präventionsmaßnahmen:
- Eingabevalidierung: Die Eingabevalidierung überprüft, ob eine bestimmte Benutzereingabe zulässig ist oder nicht. Das bedeutet, dass Format, Länge und Typ gemeinsam akzeptiert werden müssen. Es ist hilfreich, um Befehle zu bekämpfen, die Hacker in die Eingabezeichenfolge einfügen.
- Parametrisierte Abfragen: Parametrisierte Abfragen sind eine Möglichkeit, verschiedene SQL-Anweisungen vorab zu kompilieren. Anschließend werden die Parameter gespeichert, damit die Anweisung ausgeführt werden kann. Es ermöglicht der Datenbank, den Code zu erkennen und ihn von regulären Eingabedaten zu unterscheiden.
- Gespeicherte Prozeduren: Sie erfordern, dass die Entwickler eine oder mehrere SQL-Anweisungen zu einer logischen Einheit zusammenfassen. Es handelt sich um eine Codeform, die man, wie der Name schon sagt, speichern und für später aufbewahren kann.
- Escaping: Entwickler sollten Zeichen-Escape-Funktionen verwenden, um sicherzustellen, dass das DBMS die Benutzereingabe nicht mit einer SQL-Anweisung verwechselt.
- Web Application Firewall: Dies ist eine der sichersten Methoden, um SQL-Injection-Angriffe zu verhindern. Die Firewall überwacht den Datenverkehr, der zum und vom Server zirkuliert. Es identifiziert, welche Anfragen potenziell schädlich sind und welche nicht. Diese Lösung reicht für viele andere Exploits aus, ist also immer anständig.
- Vermeiden von Administratorrechten: Entwickler sollten ihre Apps niemals über Konten mit Root-Zugriff mit der Datenbank verbinden. Andernfalls könnten Hacker Zugriff auf das gesamte System erhalten und irreparablen Schaden anrichten. Darüber hinaus sollten Entwickler sicherstellen, dass jede Datenbank über einen eigenen Satz an Anmeldeinformationen mit begrenzten Berechtigungen verfügt.
Das könnte Ihnen auch gefallen: Top 10 der meistverkauften Internet-Sicherheitssoftware (Antivirus und Sicherheit).
Letzte Worte
Wer sich Sorgen über SQL-Injection macht, sollte auch andere mögliche Angriffe nicht außer Acht lassen. Es gelten die üblichen Cybersicherheitspraktiken: Verwenden Sie sichere Passwörter, lernen Sie, Bedrohungen zu erkennen, schalten Sie jedes Mal ein VPN ein, wenn Sie eine Verbindung zu Websites oder Datenbanken herstellen und so weiter. Was ist ein VPN und was macht es? Es verschlüsselt Ihren Online-Verkehr, wann immer Sie online gehen. Wenn Sie also eine SQL-Anfrage an Ihre Datenbank senden, kann nur die Datenbank diese entschlüsseln. Wenn jemand die betreffenden Datenpakete abfängt, wird er keinen Sinn daraus ziehen. Je besser Sie oder Ihr Unternehmen auf alle Arten von Bedrohungen vorbereitet sind, desto besser.
Nur die Einführung umfassender Präventionsmaßnahmen stellt sicher, dass SQL-Injection oder Angriffe nie zum Erfolg führen. Seien Sie bereit, viel Zeit, Mühe und Geld zu investieren, um sicherzustellen, dass Sie über die richtigen Werkzeuge zur Bekämpfung verschiedener Exploits verfügen.