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 ).
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).