Was genau ist eine SQL-Injection?
Eine SQL-Injection ist ein Cyberangriff, bei dem eine Datenbank so ausgetrickst wird, dass sie Hackern den Zugriff erlaubt. Eine SQL-Injection bringt eine nicht ausreichend abgesicherte Datenbank dazu, unsichere Befehle auszuführen. Dazu fügt sie schädlichen Code in die Structured Query Language (SQL) der Datenbank ein (das ist die am häufigsten verwendete Sprache für die Datenbankverwaltung).
Die SQL-Injection (SQLi) gibt es schon seit Jahrzehnten und macht heute immer noch zwei Drittel der Angriffe auf Webanwendungen aus. Auf der Liste der Sicherheitsrisiken für Webanwendungen von OWASP, einer Non-Profit-Organisation für Websicherheit, stehen Injections ganz oben.
Schwachstellen für SQL-Injections entstehen oft durch eine schlecht geschriebene API (Application Programming Interface). Entwickler von Webanwendungen erkennen ihre Fehler manchmal erst, wenn sie von anderen entdeckt werden – deshalb sind neue Produkte oft eine leichte Beute für Zero-Day-Angriffe mit SQL-Injection.
Und wenn sie sich nicht selbst an Ihren Daten bedienen, verkaufen die gewieften Cyberkriminellen sie oft an Datenbroker weiter. SQL-Hacks sind potenziell lukrativ und mit den richtigen Fähigkeiten und Kenntnissen relativ leicht durchzuführen, daher stellen sie für viele Hacker eine wichtige Einnahmequelle dar.
Was ist SQL?
SQL oder „Structured Query Language“ ist die Standardprogrammiersprache für die Datenbankverwaltung. Bei der Kommunikation mit einer Datenbank oder der Abfrage von Daten ist SQL die am häufigsten verwendete Sprache.
Stellen Sie sich eine Datenbank wie das Warenlager einer Webanwendung vor. Eine Datenbank besteht aus vielen Tabellen, die sich mit Kartons vergleichen lassen, die mit Daten wie Kundeninformationen, zu verkaufende Produkte oder Anmeldedaten gefüllt sind. Wenn Sie Informationen in eine Webanwendung eingeben, verarbeitet die Datenbank die Anfrage und gibt die gewünschten Informationen zurück – alles mithilfe von SQL.
Durch die intuitive englische Syntax ist SQL für viele API-Programmierer zur beliebtesten Datenbankverwaltungssprache geworden. Wenn eine Datenbank das Warenlager einer Webanwendung ist, dann ist eine API das schicke Schaufenster. Damit interagieren Sie, wenn Sie auf einer Website navigieren und Anfragen über ein Eingabe- oder Formularfeld übermitteln (z. B. bei der Suche nach einem Artikel).
SQL sitzt direkt hinter dem Eingang, nimmt Ihre Anfragen entgegen und übersetzt sie in Code für die Datenbank. Leider macht diese Funktion (die Interpretation von Benutzereingaben) SQL auch zu einem leichten Ziel für Hacker.
Übrigens, Sie können SQL wie „Siequel“ oder „S-Q-L“ aussprechen. Schauen Sie sich unseren Crash-Kurs zu anderen Begriffen der Cybersicherheit an, wenn Sie noch mehr Infos benötigen.
Wie wird ein SQL-Injection-Angriff durchgeführt?
Hacker führen einen SQL-Injection-Angriff über ein Eingabefeld – z. B. ein Anmeldeportal, ein Formularfeld oder eine Suchleiste – in einer Web-API durch. Indem sie die Eingabedaten mit einem schädlichen Codeschnipsel verändern, einem so genannten Exploit, können Cyberkriminelle eine nicht ausreichend abgesicherte Datenbank dazu bringen, diese Daten als Befehl zu interpretieren.
Websites mit nicht ausreichend abgesicherten Eingabefeldern können ein Ziel von SQLi-Angriffen sein
Durch wiederholte SQL-Injections erhalten Hacker einen guten Einblick in den Grad der Anfälligkeit einer Software. Hier ist ein Beispiel, wie ein SQL-Injection-Angriff durchgeführt werden könnte:
-
Sie möchten Ihre Benutzerdaten von einer Website abrufen, und geben daher Ihren Benutzernamen ein: AVGRocks17.
-
SQL verwandelt Ihre Eingabe in einen für die Datenbank verständlichen Befehl. SQL macht aus Ihrer Eingabe als so etwas wie: „Suche die Benutzerin/den Benutzer AVGRocks17 und gib mir ihre/seine Daten.“ Sie müssen nur „AVGRocks17“ eingeben, aber SQL übersetzt die Anfrage in Code, der der Datenbank mitteilt, was zu tun ist. Dieser könnte etwa so aussehen:
SELECT * FROM users WHERE userID = AVGRocks17;
Das Sternchen oben bedeutet „alle Angaben“, was möglicherweise auch Ihren echten Namen und Ihr Passwort beinhaltet.
Anstatt nach einem bestimmten Benutzer zu filtern, kann eine SQL-Injection in Form von OR 1=1 in einer Suchleiste, einem Anmeldeportal oder einem anderen Eingabefeld den SQL-Code dazu zwingen, die Datenbank nach allen Angaben ALLER Benutzer abzufragen. Und wie? Die Datenbank empfängt:
SELECT * FROM users WHERE userID = AVGRocks17 OR 1=1;
Die Datenbank interpretiert dies als den Befehl, die Daten eines jeden Benutzers zu durchsuchen und alle Daten zu übergeben, wenn die ID AVGRocks17 lautet oder wenn 1 gleich 1 ist – was natürlich immer der Fall ist.
SQL-Injections können Elemente in einer Datenbank ändern, einfügen und löschen oder den Weg für einen Denial-of-Service-Angriff ebnen. Hacker können auch Hintertüren einbauen, die ihnen den unbegrenzten Zugang zu einem Server ermöglichen.
Mit den meisten SQL-Injection-Befehlen können Hacker Daten manipulieren, stehlen oder zerstören, Identitäten fälschen oder stehlen oder Datenbankberechtigungen ändern. Im Extremfall kann eine SQL-Injection einem Angreifer die vollständige Kontrolle über eine Datenbank ermöglichen.
Warum funktionieren SQL-Injection-Angriffe so einfach? Eigentlich sollten sie das nicht. SQL-Injection-Schwachstellen sind oft das Ergebnis einer schlampigen Programmierung. Unternehmen stellen oft Entwickler mit wenig Erfahrung oder Know-how ein, und außerdem dauert es länger, wenn beim Programmieren Sicherheitsaspekte berücksichtigt werden. Kurze Deadlines können also dazu führen, dass Unternehmen der Sicherheit nicht genügend Priorität einräumen.
Es liegt jedoch nicht nur an menschlicher Nachlässigkeit. Da die Logik hinter SQLi-Angriffen so einfach ist, lassen sie sich leicht automatisieren. Selbst die besten Programmierer können nichts gegen eine Armee von Bots ausrichten.
Beispiele für stattgefundene SQL-Injections
Im Jahr 2008 wurde der Zahlungsabwickler Heartland Payment Systems mittels einer SQL-Injection gehackt, wobei ein Schaden von über 130 Millionen Dollar entstand. Die Angreifer stahlen bei diesem Datendiebstahl unglaubliche 130 Millionen Kreditkartennummern und machten den Angriff damit zu einem der größten seiner Art.
Im Jahr 2014 sammelte eine Hackergruppe über 1,2 Milliarden eindeutige ID- und Passwortkombinationen von über 420.000 Websites im gesamten Internet. Die russische Hackergruppe benutzte SQL-Injections, um die Datenbanken abzufragen.
Der britische Telekommunikationsgigant TalkTalk geriet 2015 in die Kritik, weil die persönlichen Daten von Hunderttausenden von Kunden aufgrund von mangelnder Websicherheit offengelegt wurden. Obwohl die SQL-Sicherheitsrisiken zu diesem Zeitpunkt bereits bekannt waren, konnte das Unternehmen nichts gegen den Angriff ausrichten.
Es gibt auch ein Beispiel für eine SQL-Injection, die jeden durchschnittlichen Gamer betreffen könnte: 2016 wurden die Foren von Epic Games gehackt, wodurch 800.000 Benutzerkonten offengelegt wurden. Das Ziel der SQL-Injections war die beliebte Webforen-Software vBulletin, die für ihre Anfälligkeit in Bezug auf SQL-Exploits berüchtigt geworden ist. Im Allgemeinen verbreiten sich SQL-Injection-Angriffe in der Spielebranche wie ein Lauffeuer.
Niemand ist vor SQLi-Angriffen sicher, egal ob großes Unternehmen, Website-Betreiber oder durchschnittlicher Internetnutzer. Die einfache Ausführung garantiert praktisch, dass SQLi ein weit verbreiteter Angriffstyp bleiben wird.
Der beste Weg zum Schutz Ihrer Daten ist die Verwendung von Echtzeit-Sicherheitssoftware, die Phishing-Angriffe und Netzwerk-Eindringlinge abwehrt. AVG AntiVirus FREE schützt Sie vor Sicherheitslücken, Phishing und Passwortlecks – sowie vor der gesamten Bandbreite an Malware.
Arten der SQL-Injection
Die drei Hauptarten von SQL-Injections sind In-Band-SQLi, Out-of-Band-SQLi und inferentielle SQLi. Die Einteilung einer SQL-Injection in eine Kategorie erfolgt abhängig davon, wie gängig sie ist, welche Angriffsmethode sie verwendet und wie hoch der potenziell angerichtete Schaden ist.
Was ist eine In-Band-SQL-Injection?
Die In-Band-SQLi ist die einfachste Form der SQL-Injection. Bei In-Band-SQL-Angriffen können Hacker einen Angriff starten und auf demselben Server die Ergebnisse abrufen. Die In-Band-SQL-Injection ist sehr gängig, da sie einfach durchzuführen ist.
Was ist eine Out-of-Band-SQL-Injection?
Bei Out-of-Band-SQLi-Angriffen wird versucht, den Inhalt einer Datenbank auf einen anderen Server zu extrahieren. Sie setzen voraus, dass die Datenbank DNS- oder HTTP-Anfragen stellen kann. Out-of-Band-SQLis sind weniger gängig, aber auch gravierender in ihren Auswirkungen.
Was ist eine inferentielle (blinde) SQL-Injection?
Bei einer inferentiellen (blinden) SQL-Injection werden wahre oder falsche Anweisungen in eine Datenbank eingegeben, um auf deren Struktur zu schließen. Anhand der Antworten kann ein Hacker die potenziellen Schwachstellen einer Datenbank ermitteln.
Wie erkennt man SQL-Injection-Schwachstellen?
Um SQL-Injection-Schwachstellen in Ihrer Datenbank aufzuspüren, eignen sich Tests am besten. Im Folgenden finden Sie einen Überblick über einige der beliebtesten Tools zum Testen auf SQL-Injection-Schwachstellen.
-
sqlmap ist ein Open-Source-Programm für Penetrationstests, das ein System nach Sicherheitslücken durchsuchen kann. sqlmap kann den gesamten Inhalt einer Datenbank auslesen, aber das bedeutet, dass auch Hacker es dafür einsetzen können.
-
suIP.biz ist ein Online-Scanner auf der Basis von sqlmap und kann gängige Datenbankverwaltungssysteme wie MySQL, Oracle oder Microsoft SQL Server auf SQL-Injection-Schwachstellen testen.
-
Hacker Target sucht nach Schwachstellen im Zusammenhang mit blinden und fehlerbasierten Injections, die auf HTTP-GET-Anfragen abzielen (eine bestimmte Art von URL). Es basiert auch auf sqlmap.
-
Vega scannt auf Schwachstellen für SQL-Injections und eine ähnliche Art von Angriffen, die als Cross-Site-Scripting (XSS)-Injections bezeichnet werden. Vega ist eine benutzerfreundliche Open-Source-Software, die unter Linux, macOS und Windows läuft.
Wie kann ich SQL-Injection-Angriffe verhindern?
Webentwickler können SQL-Injection-Angriffe durch gute Programmierpraktiken verhindern. Aber auch Sie haben viele Möglichkeiten, wie Sie selbst Ihre sensiblen Daten vor SQLi-Angriffen schützen können.
-
Prüfen Sie, ob eine Website sicher ist, bevor Sie Ihre Daten eingeben, und bleiben Sie bei aktuellen Sicherheitslücken auf dem Laufenden, damit Sie Ihr Passwort sofort ändern können, falls eine von Ihnen genutzte Website angegriffen wird. AVG BreachGuard kann verhindern, dass Ihre Daten nach einem Datenleck offengelegt werden.
-
Verwenden Sie sichere Passwörter, z. B. eindeutige Passwörter mit mindestens 12 Zeichen, und speichern Sie sie sicher in einem guten Passwort-Manager.
-
Überprüfen Sie mit Avast Hack Check, ob eines Ihrer Konten infolge eines SQLi-Angriffs oder einer anderen Sicherheitsverletzung gehackt wurde. Ist das der Fall, können Sie Ihr Passwort sofort ändern.
Webentwickler und Unternehmen können ihre Datenbanken mit den folgenden Tipps vor SQLi-Angriffen schützen.
Parametrisierte Abfragen und bereinigte Eingaben
Das Verhindern von SQLi-Angriffen beginnt mit bereinigten Eingaben: das „Aufräumen“ des Anwendungscodes durch Einrichten von Parametern zur Unterscheidung zwischen Eingabedaten (legitime Informationen) und Befehlen (Hacker-Informationen). Ausreichende Eingabebereinigungen sind ein so weit verbreitetes Problem, dass ein Webcomic von xkcd über eine Drop-Table-SQL-Injection (mit der Tabellen gelöscht werden) viral ging.
Webanwendungs-Firewall (WAF)
Eine Webanwendungs-Firewall (WAF) ist eine Barriere, die schädliche Software und schädlichen Datenverkehr zwischen einer Webanwendung und dem Internet herausfiltert. Webanwendungs-Firewall können so angepasst werden, dass sie Schutz vor verschiedenen Arten von SQL-Injections und anderen Sicherheitsbedrohungen bieten.
Whitelisting statt Blacklisting
Mit dem Blacklisting wird verhindert, dass Benutzer potenziell problematische Zeichen wie Gleichheitszeichen, Semikolons und Anführungszeichen eingeben. Da beim Whitelisting wiederum nur bestimmte Zeichen überhaupt zugelassen werden, ist es restriktiver und hat einen größeren Effekt. Hacker haben schon kreative Wege gefunden, das Blacklisting zu umgehen, aber das Whitelisting lässt wenig Spielraum.
Datenverschlüsselung
Die Datenverschlüsselung hält Daten unter Verschluss, bis sie wieder bei Ihnen ankommen. Durch die Verschlüsselung können Hacker nicht auf die eigentlichen Daten zugreifen.
Verwenden aktueller Sicherheitssoftware
Auch wenn Sie noch so wachsam sind: Es ist schwer, Millionen von Hackern abzuwehren, die versuchen, sich bei Ihnen einzuschleichen. Moderne Sicherheitssoftware für Unternehmen bietet automatische Patches als Schutz vor den sich immer weiter entwickelnden SQL-Injection-Bedrohungen.
Mit AVG Antivirus können Sie sich vor Bedrohungen und Schwachstellen schützen
Wenn Ihre Lieblingswebsite von einer SQL-Injection betroffen ist, können Sie nicht viel dagegen ausrichten, aber Sie müssen keine laxe Sicherheitssituation auf Ihren eigenen Geräten tolerieren.
Die patentierte Sicherheitssoftware von AVG schützt rund um die Uhr vor Bedrohungen. Scannen Sie Ihr Gerät im Handumdrehen, um etwaige Sicherheitslücken oder WLAN-Schwachstellen zu schließen. Schützen Sie Ihre E-Mails vor Schnüfflern und blockieren Sie bösartige Downloads, unsichere Links und Phishing-Versuche.
Schützen Sie sich auf vielfältige Weise vor Online-Bedrohungen, indem Sie Ihr Netzwerk absichern, veraltete Software entfernen oder Malware beseitigen. Probieren Sie AVG AntiVirus FREE noch heute aus.