Was ist eine Injection?
Injection (deutsch Einschleusung) bezeichnet das unbefugte Einfügen von Code in ein Programm mit dem Ziel, Zugriff auf geschützte Daten zu erlangen, diese zu manipulieren oder zu löschen. Bei der SQL-Injection handelt es sich um einen Exploit zur Ausnutzung von Sicherheitslücken in Datenbanken. Das Einschleusen von SQL zielt unter anderem darauf ab, Malware in Webseiten einzubetten.
Was ist eine SQL Injection?
Bei einer SQL Injection nutzt ein Angreifer eine Sicherheitslücke bei SQL Datenbanken aus. Eigene Datenbankbefehle werden eingeschleust und dienen zum Ausspähen von Daten oder dem zielgerichteten Verändern dieser. Solche Einschleusungen von schadhaftem Code sind möglich, wenn Daten wie Benutzereingaben in den SQL-Interpreter gelangen. Diese Zeichen können Zeichen enthalten, die von außen geführte Datenbankbefehle möglich machen. Solche Sicherheitslücken kommen unter anderem auf Webseiten vor, auf denen Skripte Einträge in einer SQL-Datenbank durchführen.
Beispiel: Ein Adress-Aufruf wie „http://testseite.de/find.cgi?ID=10“ soll die hinter der „ID=10“ verborgenen Daten anzeigen. Der Parameter ID wird für die SQL-Abfrage verwendet. Der SQL-Befehl „SELECT name FROM beispiel WHERE ID=10“ ruft dann Daten aus der Datenbank ab.
Bei einer SQL-Injection erweitert der Angreifer den Adress-Aufruf, was zu einem veränderten SQL-Befehl führt. Aus der originalen Adresse wird dann zum Beispiel „ http://testseite.de/find.cgi?ID=10;UPDATE+USER+SET+TYPE=“administrator“+WHERE+ID=8“ und in der Folge werden zwei SQL-Befehle ausgeführt. Der erste ruft wie zuvor die Daten eines Anwenders mit der ID=10 ab, der zweite Befehl verändert die Rechte des Anwenders mit der ID=8 und gibt diesem Administratoren-Rechte. Weitere Möglichkeiten zum Verändern der Datenbank-Server und Ausspähen von Daten sind gegebenen.
Zum Schutz vor SQL Injections darf ein Code Benutzereingaben nicht einfach in eine SQL-Anweisung einbauen.
Was schützt vor Injections?
Es gibt verschiedene Webanwendungen, die Webseiten auf entsprechende Schwachstellen überprüfen. Es ist grundsätzlich Aufgabe des Programmierers seinen Code so zu schreiben, dass Injections nicht möglich sind. Webseiten mit Formularfeldern, beispielsweise zur Anmeldung für neue Nutzer, müssen auf solche Risiken überprüft werden. Teilweise blockieren Virenscanner bekannte infizierte Webseiten, damit Anwender ihr System nicht bei einem Besuch infizieren.