SQL Injection
Definition
SQL Injection bezeichnet das Ausnutzen einer Computersicherheits-Lücke. Der Angreifer versucht SQL Abfragen zu manipulieren. Hierzu wird über die Applikation, die den Zugriff auf die Datenbank bereitstellt, SQL Statments einzufügen.
Oft zu finden sind SQL Injection Lücken in CGI Scripten, aber auch Programme die andere Daten, etwa Webseiteninhalte oder E-Mails sind anfällig.
SQL Injection Bugs treten auf, wenn eine Applikation SQL Abfragen an den Server weiterreicht, ohne benutzerveränderbare Parameter zu escapen. So sollten z.B. die Zeichen ' ; " durch \' \; \" ersetzt werden.
Beispiel
Auf einem Webserver findet sich ein Script zum Anzeigen von Artikeln:
http://webserver/cgi-bin/find.cgi?ID=42
Dieses Script führt folgende SQL Abfrage aus:
SELECT text FROM WHERE artikel ID=42
Ruft nun ein Angreifer folgende URL ab
http://webserver/find.cgi?ID=42;UPDATE%20USER%20SET%20TYPE="admin"%20WHERE%20ID=23
Führt das Script zwei Anweisungen aus:
SELECT text FROM artikel WHERE ID=42; UPDATE user set type="admin" where id=23