Wissen von A bis Z

SQL Injection

Wenn Ihre Datenbank plötzlich Dinge tut, die Sie ihr nie befohlen haben, hat sie vielleicht eine Überdosis fremden SQL-Codes abbekommen.

SQL Injection ist eine Klasse von Schwachstellen, bei denen ein Angreifer SQL-Code in Eingaben einschleust, die unsicher in eine Datenbankabfrage eingebaut werden. Statt nur als Datenwert behandelt zu werden, wird der eingeschleuste Code als Teil der SQL-Anweisung interpretiert. Damit können Angreifer Daten unautorisiert auslesen, manipulieren oder löschen, Authentifizierungschecks umgehen, eine Stored-Procedure-Hierarchie missbrauchen und in vielen Fällen weitergehenden Zugriff auf das Datenbanksystem erlangen — bis hin zur Code-Ausführung über Dateifunktionen.

Eingesetzt werden SQL-Injection-Angriffe als klassisches Werkzeug bei Web-Schwachstellen — sowohl in automatisierten Scans (sqlmap, Burp Suite, OWASP ZAP) als auch in manuellen Pentests. Zur Prävention setzen Entwicklerinnen und Entwickler auf parametrisierte Abfragen/Prepared Statements (jeder ORM und jede Datenbank-API moderner Sprachen unterstützt sie), auf Stored Procedures mit klar getypten Parametern, auf typsichere Query-Builder (LINQ, JOOQ, Diesel, sqlx), auf Eingabe-Validierung und auf Datenbank-Berechtigungen nach dem Least-Privilege-Prinzip. Web Application Firewalls können SQL-Injection als Defense-in-Depth-Schicht abfangen, ersetzen aber niemals sichere Implementierung.

SQL Injection hat über Jahrzehnte zu prominenten Datenpannen geführt — Sony Pictures (2011), TalkTalk (2015), Heartland Payment Systems (2008) sind nur drei der bekanntesten Vorfälle. Trotz weitgehender Aufklärung und besserer Werkzeuge bleibt SQL Injection in den OWASP Top 10 unter "Injection" präsent, oft in Legacy-Anwendungen oder in dynamisch generiertem SQL ohne Parameterisierung.

Historisch wird die Schwachstelle erstmals 1998 in einem Phrack-Magazin-Artikel von Jeff Forristal ("rain.forest.puppy") öffentlich systematisch beschrieben ("NT Web Technology Vulnerabilities"). In den frühen 2000er-Jahren war SQL Injection eine der dominantesten Angriffsklassen im Web. Spätere Entwicklungen — insbesondere die Verbreitung von ORMs wie Hibernate, Entity Framework und Active Record sowie die Standardisierung von parametrisierten Abfragen in praktisch allen modernen Datenbank-APIs — haben die Schwachstellenzahl deutlich gesenkt, aber nicht beseitigt.

Beschrieben wurde die Schwachstellenklasse durch frühe Hacker- und Security-Researcher. Der Webcomic xkcd #327 "Bobby Tables" hat 2007 das Thema mit dem fiktiven Schüler "Robert"); DROP TABLE Students; — ' weltweit bekannt gemacht; "Little Bobby Tables" ist seitdem ein stehender Begriff in Security-Diskussionen. Ein einzelner Comic mehr zur breiten Sensibilisierung beigetragen hat als viele formale Schulungen.

Zurück