SQL-Injektionen: Wie können Sie sich vor Angriffen mit SQL-Injektion schützen?

November 9, 2022

Die SQL-Injektion ist eine Code-Injektionstechnik, mit der sich Hacker Zugriff auf Informationen in Ihrer Backend-Datenbank verschaffen, um diese Informationen zu ändern. Die SQL-Injektion ist eine gängige Hacking-Technik, die Unternehmen keinesfalls unterschätzen dürfen. Laut dem Open Web Application Security Project waren Injektionsangriffe – zu denen auch SQL-Injektionen gehören – im Jahr 2021 das drittgrößte Sicherheitsrisiko bei Webanwendungen. Bei den getesteten Anwendungen wurden 274.000 Injektionen festgestellt.

Um sich vor SQL-Injektionsangriffen schützen zu können, müssen Sie wissen, wie die Angreifer dabei vorgehen, damit Sie Best Practices befolgen, gezielte Schwachstellenprüfungen durchführen und eventuell in Software zur aktiven Abwehr von Angriffen investieren können.

Die Auswirkungen erfolgreicher SQL-Injektionsangriffe

Unternehmen verfügen über sensible Geschäftsdaten und persönliche Kundeninformationen. Da SQL-Injektionsangriffe häufig auf diese vertraulichen Informationen abzielen, können sie erhebliche negative Auswirkungen haben, zum Beispiel:

  • Durch den Angriff können sensible Unternehmensdaten offengelegt werden. Durch eine SQL-Injektion können Angreifer Daten abrufen und ändern, sodass sensible Unternehmensdaten auf dem SQL-Server offengelegt werden können.
  • Der Angriff kann Datenschutz und Privatsphäre von Benutzern kompromittieren. Je nachdem, welche Daten auf dem SQL-Server gespeichert sind, kann ein Angriff private Benutzerdaten wie Kreditkartennummern gefährden.
  • Durch den Angriff können Angreifer Zugriff auf Ihr System erlangen. Wenn ein Datenbankbenutzer über Admin-Berechtigungen verfügt, kann ein Angreifer sich mit schädlichem Code Zugriff auf das System verschaffen. Zum Schutz vor derartigen Schwachstellen sollten Datenbankbenutzern nur die unbedingt erforderlichen Berechtigungen gewährt werden.
  • Durch den Angriff können Angreifer allgemeinen Zugriff auf Ihr System erlangen. Wenn Sie unsichere SQL-Befehle zum Prüfen von Benutzernamen und Kennwörtern verwenden, könnten sich Angreifer Zugriff auf Ihr System verschaffen, ohne die Anmeldedaten eines Benutzers zu kennen. Mit allgemeinem Systemzugriff können Angreifer zusätzlichen Schaden anrichten, indem sie auf sensible Informationen zugreifen und diese manipulieren.
  • Der Angriff kann die Integrität Ihrer Daten kompromittieren. Mittels SQL-Injektion können Angreifer die Informationen auf Ihrem System verändern oder löschen.

Da die Auswirkungen eines erfolgreichen SQL-Injektionsangriffs gravierend sein können, ist die Prävention und Begrenzung von Schwachstellen vor einem Angriff für Unternehmen von großer Bedeutung. Um entsprechende Schritte ergreifen zu können, müssen Sie wissen, wie Angreifer bei einer SQL-Injektion vorgehen.

CrowdStrike Global Threat Report 2024: Kurzfassung

Der CrowdStrike Global Threat Report 2024 basiert auf den Beobachtungen des CrowdStrike Counter Adversary Operations Teams und hebt die wichtigsten Themen, Trends und Ereignisse in der Cyber-Bedrohungslandschaft hervor.

Jetzt herunterladen

Der Ablauf eines SQL-Injektionsangriffs

SQL ist eine Programmiersprache, die für Daten in einem relationalen Datenstrom-Management-System konzipiert wurde. Mit SQL-Abfragen werden Befehle ausgeführt, einschließlich Befehle zum Abrufen von Daten, Aktualisieren von Daten und Löschen von Datensätzen. Zum Ausführen böswilliger Befehle können Angreifer schädlichen Code in Strings einfügen, die zur Ausführung an einen SQL-Server übergeben werden. Der Angriff selbst kann mit verschiedenen Methoden erfolgen, z. B. durch Eingaben in anfälligen Feldern in Webanwendungen oder auf Webseiten, in denen Text frei eingefügt werden kann.

Wenn Unternehmen Cybersicherheitsbedrohungen verstehen, können sie sich besser auf Angriffe vorbereiten und Schwachstellen besser beseitigen. Sehen wir uns die verschiedenen Arten von SQL-Injektionsangriffen an. Diese lassen sich in drei Kategorien einteilen: In-Band-SQL-Injektion, inferentielle SQL-Injektion und Out-of-Band-SQL-Injektion.

In-Band-SQL-Injektion

Die In-Band-SQL-Injektion ist die gängigste Angriffsart. Bei SQL-Injektionsangriffen dieser Art verwenden böswillige Benutzer den gleichen Kommunikationskanal für den Angriff und das Abgreifen der Ergebnisse. Die folgenden Techniken sind die gängigsten Arten von In-Band-Injektionsangriffen.

  • Fehlerbasierte SQL-Injektion: Mit dieser Technik verschaffen sich Angreifer Informationen über die Datenbankstruktur, indem sie mit einem SQL-Befehl eine Fehlermeldung vom Datenbankserver generieren. Fehlermeldungen sind bei der Entwicklung von Webanwendungen oder Webseiten hilfreich, können sich aber später als Schwachstelle entpuppen, da sie Informationen zur Datenbank preisgeben. Zur Vermeidung dieser Schwachstelle können Sie Fehlermeldungen nach der Live-Schaltung einer Website oder Anwendung deaktivieren.
  • UNION-basierte SQL-Injektion: Bei dieser Technik verwenden Angreifer den UNION-SQL-Operator, um mehrere ausgewählte SQL-Anweisungen zu kombinieren und eine einzige HTTP-Antwort zu generieren. Angreifer können mit dieser Technik Informationen aus der Datenbank extrahieren. Diese Technik ist die gängigste Art von SQL-Injektion und zu ihrer Bekämpfung sind mehr Sicherheitsmaßnahmen erforderlich als bei fehlerbasierten SQL-Injektionen.

Inferentielle SQL-Injektion

Die inferentielle SQL-Injektion wird auch blinde SQL-Injektion genannt, da die Website-Datenbank die Daten nicht an den Angreifer überträgt, wie es bei der In-Band-SQL-Injektion der Fall ist. Stattdessen eignen sich Angreifer Wissen über die Struktur des Servers an, indem sie Daten-Payloads senden und die Antwort beobachten. Inferentielle SQL-Injektionsangriffe sind seltener als In-Band-SQL-Injektionsangriffe, da ihre Ausführung mehr Zeit in Anspruch nimmt. Bei beiden Arten von inferentiellen SQL-Injektionsangriffen kommen folgende Techniken zum Einsatz:

  • Boolesche Injektion: Bei dieser Technik senden Angreifer eine SQL-Abfrage an die Datenbank und beobachten das Ergebnis. Je nachdem, ob die Informationen in der HTTP-Antwort geändert wurden, wissen die Angreifer, ob ein Ergebnis richtig oder falsch ist.
  • Zeitbasierte Injektion: Bei dieser Technik senden Angreifer eine SQL-Abfrage an die Datenbank, bei der die Antwort der Datenbank um eine bestimmte Anzahl von Sekunden verzögert wird. Anhand der Anzahl an Sekunden, die vor der Antwort vergangen sind, können die Angreifer bestimmen, ob das Ergebnis richtig oder falsch ist. Hacker könnten zum Beispiel eine SQL-Abfrage verwenden, die eine Verzögerung vorschreibt, wenn der Anfangsbuchstabe des Namens der ersten Datenbank ein A ist. Wenn die Antwort dann verzögert erfolgt, weiß der Angreifer, dass die Abfrage richtig ist.

Out-of-Band-SQL-Injektion

Die Out-of-Band-SQL-Injektion ist die seltenste Angriffsart. Bei SQL-Injektionsangriffen dieser Art verwenden böswillige Benutzer unterschiedliche Kommunikationskanäle für den Angriff und das Abgreifen der Ergebnisse. Angreifer nutzen diese Methode, wenn ein Server für die inferentielle SQL-Injektion oder die In-Band-SQL-Injektion zu langsam oder instabil ist.

Möglichkeiten zum Schutz Ihrer Datenbank vor SQL-Injektionen

SQL-Injektionsangriffe sind ein verbreitetes Cybersicherheitsrisiko, es gibt aber Möglichkeiten, Ihre Datenbank vor SQL-Injektionen zu schützen. Durch allgemeine Sicherheitsmaßnahmen und Best Practices können Unternehmen sich besser vor Angriffen dieser Art schützen.

Sicherheitsmaßnahmen zum Schutz Ihrer Datenbank vor SQL-Injektionen

Bei der Entwicklung Ihrer Webseiten und Webanwendungen können Sie Sicherheitsmaßnahmen integrieren, die die Anfälligkeit für SQL-Injektionsangriffe reduzieren. Die nachfolgenden Sicherheitsmaßnahmen gelten als besonders effektiv:

  • Verwenden vorgefertigter Anweisungen mit parametrisierten Abfragen: Wenn ein Entwickler parametrisierte Anweisungen verwendet, muss er den gesamten SQL-Code definieren und dann die einzelnen Parameter übergeben. Dadurch können Angreifer die Absicht einer Abfrage später nicht ändern.
  • Verwenden gespeicherter Prozeduren: Wenn Entwickler gespeicherte Prozeduren verwenden, erstellen sie SQL-Anweisungen mit Parametern, die in der Datenbank gespeichert und aus der Anwendung abgerufen werden. Diese Technik ist eine Alternative zur Verwendung vorgefertigter Anweisungen und ist ebenso effektiv gegen SQL-Injektionsangriffe.
  • Verwenden von Eingabevalidierung mit Zulassungsliste: An einigen Stellen können Entwickler einen erwarteten Wert definieren, z. B. den zulässigen Namen einer Tabelle oder Spalte. Durch diese Validierung wird verhindert, dass nicht validierte Benutzereingaben einer Abfrage hinzugefügt werden.
  • Escapen von Benutzereingaben, bevor sie in eine Abfrage eingefügt werden: Bei dieser Technik werden alle Benutzereingaben in Escape-Zeichen gesetzt, sodass die Eingabe nicht mit SQL-Code vom Entwickler verwechselt wird. Die anderen Methoden in dieser Liste sind vorzuziehen und bieten besseren Schutz. Unternehmen verwenden diese Methode jedoch manchmal bei der Anpassung von Legacy-Code, wenn die Nutzung der Eingabevalidierung zu kostspielig ist.

Neben dem Einbinden von Sicherheitsmaßnahmen bei der Entwicklung oder Anpassung einer Webseite und Webanwendung können Sie Software verwenden, die aktiv nach Sicherheitsbedrohungen Ausschau hält. Tools wie Software zur verwalteten Erkennung und Reaktion sowie zur verwalteten Bedrohungssuche können Ihrem Unternehmen helfen, erfolgreiche Präventionsmaßnahmen zu implementieren. Diese Tools können auch für die Reaktion im Falle eines Angriffs hilfreich sein.

Best Practices und No Gos zum Schutz Ihrer Datenbank vor SQL-Injektionen

Zusätzlich zu den oben angegebenen Sicherheitsmaßnahmen sollten Entwickler und Administratoren sich an die folgenden Best Practices halten, um die Auswirkungen und Häufigkeit von Cyberangriffen zu minimieren:

  • Installieren Sie die neuesten Software- und Sicherheits-Patches von Anbietern, sobald diese verfügbar sind.
  • Gewähren Sie Konten, die sich mit der SQL-Datenbank verbinden, nur die unbedingt erforderlichen Berechtigungen.
  • Verwenden Sie nicht dieselben Datenbankkonten für mehrere Websites und Anwendungen.
  • Implementieren Sie die Validierung bei allen Arten von Benutzereingaben, auch bei Dropdown-Menüs.
  • Konfigurieren Sie Fehlerberichte, statt Fehlermeldungen an den Client-Webbrowser zu senden.

Generell sollten Unternehmen möglichst keine gemeinsam genutzten Konten verwenden, damit Angreifer bei der Kompromittierung eines Kontos keinen ausgedehnteren Zugriff erhalten. Unternehmen sollten es auch vermeiden, Datenbank-Fehlermeldungen an den Client-Webbrowser zu senden, da Angreifer aus diesen Informationen technische Details über die Datenbank gewinnen können.

Testen auf SQL-Injektionsschwachstellen

Sie sollten über SQL-Injektionsschwachstellen in Ihren Webseiten und Anwendungen Bescheid wissen, sodass Sie aufgedeckte Probleme beheben können. SQL-Injektionsangriffe gehören zu den gängigsten Cyberangriffen und können erhebliche negative Auswirkungen auf Unternehmen haben. Dementsprechend müssen Unternehmen regelmäßig prüfen, ob SQL-Injektionsschwachstellen vorhanden sind.

Idealerweise sollten Unternehmen bei jeder Aktualisierung des Codes einer Anwendung oder Webseite nach SQL-Injektionsschwachstellen suchen. Wenn Sie in diesem Intervall testen, können Sie Probleme identifizieren, die möglicherweise durch andere Code-Änderungen verursacht wurden. Dazu können Sie entweder manuell versuchen, SQL-Injektionstechniken zu verwenden, oder den Prozess mit einer Websicherheits-Scansoftware automatisieren.

Manuelles Testen

Beim manuellen Testen auf SQL-Injektionsschwachstellen versuchen Sie, die SQL-Injektion manuell in einem Benutzereingabefeld zu verwenden, um zu sehen, ob Ihre Eingabevalidierung funktioniert. Je nach Anzahl der zu testenden Felder kann diese Methode zeitaufwändig sein. Es kann auch eine Herausforderung sein, alle Bereiche einer Webseite oder Webanwendung gründlich zu testen. Das könnte dazu führen, dass Sie beim Testen Schwachstellen übersehen.

Automatisierte Scans

Für automatisierte Scans zum Testen auf SQL-Injektionsschwachstellen verwenden Unternehmen Websicherheits-Scansoftware, mit der sich Probleme identifizieren und beheben lassen. Webscansoftware ist eine schnellere und umfassendere Möglichkeit zum Testen auf SQL-Injektionsschwachstellen. Wenn eine Schwachstelle gefunden wird, gibt die Software Ergebnisse aus, einschließlich Informationen zur betroffenen URL und zum betroffenen Parameter. Durch die Automatisierung dieses Testprozesses mit einem Softwaretool können Unternehmen Zeit sparen, wenn sie Software aktualisieren.

Wie können Sie sich mit CrowdStrike vor anderen Bedrohungen schützen?

Da die SQL-Injektion eine gängige Hacking-Technik ist und die Folgen gravierend sein können, sollten Sie Ihr Unternehmen vor diesen Bedrohungen schützen. Durch das Befolgen von Best Practices und regelmäßige Tests auf Schwachstellen können Sie die Wahrscheinlichkeit reduzieren, dass Sie Opfer eines SQL-Injektionsangriffs werden. Zudem sollten Unternehmen die Investition in eine umfassende Cybersicherheitslösung wie die CrowdStrike Falcon®-Plattform in Erwägung ziehen. Solche Lösungen helfen, Ihre Sicherheit mit Blick auf SQL-Injektionen und andere Cybersicherheitsrisiken zu stärken.

Die Falcon-Plattform ist stark modular und erweiterbar, sodass eine einfache Implementierung des erforderlichen Schutzes möglich ist. Die cloudbasierte Architektur kann zum Schutz großer Unternehmen eingesetzt werden, ohne dass Schnelligkeit und Leistung beeinträchtigt werden. Die CrowdStrike-Plattform kann Ihnen helfen, die am stärksten gefährdeten Bereiche von Unternehmen abzusichern: Endgeräte, Cloud-Workloads, Identitäten und Daten. Wenn Sie mehr darüber erfahren möchten, wie die Threat Hunting- und Intelligence-Teams von CrowdStrike eine SQL-Kampagne stoppen konnten und wie CrowdStrike Ihr Unternehmen vor einem SQL-Injektionsangriff schützen kann, lesen Sie diesen Artikel.