Bundesamt für Sicherheit in der Informationstechnik

G 5.131 SQL-Injection

Greift eine Anwendung auf die Daten einer SQL -Datenbank zu, so werden Befehle in Form von SQL-Anweisungen an die Datenbank übermittelt. Ist die Anwendung anfällig für SQL-Injection, kann ein Angreifer durch Manipulation der Eingabedaten geänderte oder zusätzliche SQL-Anweisungen injizieren, die von der Anwendung an die Datenbank weitergeleitet und dort bearbeitet werden. Auf diese Weise können wie bei einem direkten Datenbankzugriff beliebige SQL-Anweisungen ausgeführt werden und so Sicherheitsmechanismen der Anwendung beim Datenzugriff umgangen werden.

Eine SQL-Injection kann daher z. B. die folgenden Auswirkungen haben:

  • unberechtigter Zugriff auf Daten,
  • Erzeugen, Auslesen, Verändern oder Löschen von Daten,
  • Ausführen von Betriebssystembefehlen,
  • Kontrolle über die Datenbank,
  • Zugriff auf weitere Server (z. B. HTTP -Get-Request oder DNS-Abfrage).

Das Einschleusen der SQL-Anweisung wird dabei durch eine unzureichende Validierung von Eingabedaten innerhalb der Anwendung ermöglicht, die in dieser Form direkt in eine dynamische Datenbankabfrage eingebaut werden (siehe auch G 4.84 Unzureichende Validierung von Ein- und Ausgabedaten bei Webanwendungen und Web-Services ).

Die SQL-Injection ist ein spezieller Injection-Angriff (siehe G 5.174 Injection-Angriffe ), der sich ausschließlich gegen SQL-Datenbanken richtet. So ist das grundsätzliche Vorgehen zum Einschleusen von Befehlen auch bei anderen Interpretern möglich (z. B. LDAP -Injection, XML -Injection).

Stand: 13. EL Stand 2013