Brechen Sie Silos auf und st?rken Sie Ihre Abwehr mit einer einheitlichen Plattform für Cybersicherheit.
SQL Injection ist ein Angriff, bei dem eine Datenbank illegal manipuliert wird, indem unbeabsichtigte SQL-Anweisungen (Structured Query Language) in eine Anwendung mit einer relationalen Datenbank (RDBMS) eingefügt werden. Es gibt verschiedene Arten von SQL-Injection, je nach Methode und Zweck, und aus der Perspektive von Cyber-Angreifern reichen sie vom Diebstahl von Informationen, der F?lschung von Daten und der Untersuchung von Schwachstellen. Obwohl es sich um einen alten Angriff handelt, verursacht er auch heute noch viele Sch?den. Daher ist es einer der Angriffe, vor denen Unternehmen besonders vorsichtig sein sollten.?
Bevor wir uns mit der Erkl?rung der SQL-Injection befassen, lassen Sie uns zun?chst relationale Datenbanken und SQL erkl?ren. Eine relationale Datenbank ist ein Datenbanktyp, der Anwendungsdaten in einem Tabellenformat verwaltet. Sie wird aufgrund der hohen Zuverl?ssigkeit von Transaktionen (jeder einzelne Prozess) in vielen Gesch?ftsanwendungen eingesetzt.?
SQL ist eine Sprache (Datenbanksprache) für den Betrieb relationaler Datenbanken. Der Betrieb ist in drei Kategorien unterteilt:??
Die Vorgaben für SQL werden von ISO festgelegt. Wenn es sich also grunds?tzlich um eine relationale Datenbank handelt, ist es m?glich, diese auf die gleiche Weise zu betreiben, auch wenn der Anbieter anders ist.?
Eines Tages entdeckt ein Cyber-Angreifer eine Anwendung und macht sie zum Ziel eines Angriffs. Wir gehen davon aus, dass der Cyber-Angreifer wei?, dass bereits ein legitimer Nutzer ?Ken Sato“ in dieser Webanwendung vorhanden ist. Der Cyber-Angreifer versucht, sich illegal anzumelden, indem er sich als Benutzer ?Ken Sato“ ausgibt. Im Anmeldeformular gibt der Cyber-Angreifer die in Abbildung 1 gezeigte Zeichenfolge ein. Wenn Sie die SQL-Anweisung aus der Perspektive der Anwendung betrachten, wird die in Abbildung 2 dargestellte SQL-Anweisung generiert. Wie wird diese SQL-Anweisung in einer relationalen Datenbank interpretiert??
Abbildung 1: Beispiel für Eingaben von Cyber-Angreifern
Abbildung 2: SQL-Anweisung erstellt aus der Eingabe in Abbildung 1
Wenn die relationale Datenbank diese SQL-Anweisung erh?lt, sucht sie zun?chst nach einer Zeile in der Tabelle USERS, in der der USER NAME ?Ken Sato“ ist. Da der Benutzername "Ken Sato" bereits vorhanden ist, geht die relationale Datenbank zur n?chsten Suchbedingung über. Hier beginnt das Problem.?
Die relationale Datenbank sucht entsprechend der Suchbedingung nach einem Benutzer, dessen Benutzername "Ken Sato" lautet und dessen Passwort "leer" oder "'1' = '1'" ist. Da Passw?rter in vielen Anwendungen erforderlich sind, sagen wir, dass dieses Mal kein Benutzer mit einem ?leeren“ Passwort gefunden wurde. Aber was ist mit ?1“ = ?1“? Dies ist eine Formel, die vergleicht, ob ?1“ und ?1“ gleich sind. Natürlich ist dieses Ergebnis immer wahr. Daher erkennt die relationale Datenbank, dass ein Benutzer existiert, dessen BENUTZERNAME ?Ken Sato“ ist und dessen PASSWORD ?leer“ oder ?1“ = ?1“ ist. Infolgedessen antwortet der Datenbankserver mit Informationen, die mit dem Benutzernamen ?Ken Sato“ verknüpft sind, an den Anwendungsserver, ohne das Passwort für diesen Benutzernamen zu überprüfen. Der Anwendungsserver erstellt einen Anmeldeerfolgsbildschirm basierend auf diesen Informationen und sendet ihn als Antwort an den Browser des Cyber-Angreifers.?
Dies ist der grundlegende Mechanismus der SQL-Injektion. Wir haben eine Anmeldung für Webanwendungen als leicht verst?ndliches Beispiel angegeben, aber Datenbankoperationen mit SQL-Anweisungen werden in vielen Anwendungsfunktionen verwendet. Daher kann dieser Angriff nicht nur auf dem Anmeldebildschirm, sondern in verschiedenen Situationen in der Anwendung erfolgreich sein.?
Je nach Zweck und Methode gibt es verschiedene Arten von SQL-Injection.
Dies ist eine SQL-Injection-Technik, die verwendet wird, um Anwendungskonfigurationen und Schwachstellen zu untersuchen. Durch absichtliche Eingabe einer ungültigen Eingabe in die Anwendung wird ein Fehler generiert, und die Details des Zielsystems werden anhand der Fehlermeldung untersucht. Obwohl die M?glichkeit, Daten mithilfe dieser Technik direkt zu f?lschen oder zu lecken, gering ist, k?nnen Cyberangreifer die Informationen, die mithilfe dieser Technik erhalten wurden, verwenden, um Angriffe zu starten, die auf Schwachstellen oder andere unten beschriebene SQL-Injection-Angriffe abzielen.?
Dies ist eine SQL-Injection-Technik, die den UNION-Operator, einen SQL-Typ, verwendet, um beliebige Daten zu referenzieren. Der UNION-Operator ist ein Operator, der die Ergebnisse mehrerer SELECT-Anweisungen kombiniert. Wenn ein Cyber-Angreifer eine neue SELECT-Anweisung, die mit dem UNION-Operator beginnt, zu einer SELECT-Anweisung hinzufügt, die von einer Anwendung ausgegeben wird, wird es der Anwendung m?glich, Daten zu erhalten, die nicht von der Anwendung beabsichtigt sind. Wenn der Angriff erfolgreich ist, kann der Cyber-Angreifer beliebige Daten auf Datenbanktabellenebene erhalten. Aus diesem Grund ist es eine Methode, die besonders gro?e Sch?den bei SQL-Injektionen verursachen kann.?
Dies ist eine SQL-Injection-Technik, die eine SQL-Anweisung an eine Anwendung sendet und die Struktur der Anwendung untersucht, indem Unterschiede im Verhalten und nicht die direkten Ergebnisse beobachtet werden. Wie bei fehlerbasierter SQL-Injection ist die M?glichkeit, Daten mithilfe dieser Technik direkt zu f?lschen oder zu lecken, gering. Cyberangreifer k?nnen jedoch die mit dieser Technik erhaltenen Informationen verwenden, um Angriffe zu starten, die auf Schwachstellen oder andere SQL-Injection-Angriffe abzielen.?
Dies ist eine SQL-Injection-Technik, bei der ein Cyber-Angreifer eine erstellte SQL-Anweisung an eine Anwendung sendet, die zum Zeitpunkt der Ausführung unwirksam ist und sie sp?ter ausführt. Da diese Technik in einer Umgebung ausgeführt wird, in der kein direkter Benutzerzugriff erwartet wird, k?nnte es im schlimmsten Fall zu Intrusionen auf Datenbankebene führen, wie z. B. ?nderungen an Datenbankeinstellungen und Berechtigungen.?
Heutige Anwendungen bestehen aus verschiedenen Elementen. Daher sind für jedes Element geeignete Ma?nahmen erforderlich, also mehrschichtige Abwehr.??
Dies sind die wichtigsten Ma?nahmen, um Sch?den durch SQL-Injection zu verhindern.?
Eine Gegenma?nahme auf Datenbankebene besteht darin, die Benutzerberechtigungen in der Datenbank zu optimieren. Wie oben erw?hnt, sind relationale Datenbankoperationen weitgehend in drei Kategorien unterteilt: Data Definition Language (DDL), die die Datenbank konfiguriert; Data Manipulation Language (DML), die Daten liest und aktualisiert; und Data Control Language (DCL), die verschiedene Steuerelemente wie Berechtigungen verarbeitet. In vielen F?llen sind DML wie SELECT-Klauseln jedoch das, was die meisten Anwendungen normalerweise verwenden. Durch die Einschr?nkung von Berechtigungen für andere Vorg?nge k?nnen unbeabsichtigte Datenl?schungen und Einstellungs?nderungen verhindert werden.?
Es stehen eine Vielzahl von Gegenma?nahmen auf Anwendungsebene zur Verfügung.?
Platzhalter verwenden?
SQL-Injection kann verhindert werden, indem SQL-Anweisungen mithilfe von Platzhaltern erstellt werden. Platzhalter weisen SQL-Anweisungen mechanisch Eingabewerte zu, die im Voraus von der Anwendung erstellt wurden, und selbst wenn ungültige Werte als Eingabe für die Anwendung bereitgestellt werden, handelt es sich um ungültige Werte, und die Erstellung der endgültigen SQL-Anweisung wird angehalten.
Ordnungsgem??es Entweichen von Eingabewerten
Symbole und Zeichenfolgen, die besondere Bedeutungen in SQL-Anweisungen haben, werden entzogen und wie normale Zeichenfolgen behandelt, um unbeabsichtigte relationale Datenbankoperationen zu verhindern. Beispiele für Zeichen, die entgangen werden k?nnen, sind ?` (Einzelanführung), ?; (Semicolon/Bedeutung: das betreffende Symbol gilt als Ende der SQL-Anweisung)“, ?-- (zwei aufeinanderfolgende Bindestriche/Bedeutung: das Symbol nach dem Symbol wird als Kommentar behandelt)“ und ?UNION (UNION-Klausel/Bedeutung: kombiniert die Ergebnisse von zwei oder mehr SELECT-Anweisungen)“. Darüber hinaus ist bei Zahlen wie ?1“ explizit zu definieren, ob sie in der Datenbank als ?Zahlen“ oder ?Zeichen“ behandelt werden und entsprechend zu konvertieren.
Fehler ausblenden
Fehlermeldungen, die von Anwendungen angezeigt werden, k?nnen Cyber-Angreifern viele Informationen bereitstellen. Wie in ?Fehlerbasierte SQL Injection“ beschrieben, k?nnen Angreifer diese Nachrichten verwenden, um weitere Angriffe zu starten. Bei der Entwicklung von Anwendungen ist es wichtig, keine Fehlermeldungen direkt anzuzeigen, die zu einem Verst?ndnis der internen Umgebung des Systems führen k?nnten, nicht nur der Datenbank.
Anwenden von Patchprogrammen auf Paketsysteme
Wenn Sie ein Paketsystem verwenden, empfehlen wir Ihnen, das offiziell vom Anbieter bereitgestellte Patch so schnell wie m?glich anzuwenden. Dies schützt Ihr System vor verschiedenen Schwachstellen, einschlie?lich SQL Injection.
Measures at the network level include the use of IPS (Intrusion Prevention System) and WAF (Web Application Firewall). IPS is a solution that monitors the network and detects/blocks malicious communications. WAF is a solution that protects web applications, and by inspecting web communications, it detects/blocks attacks that target vulnerabilities in web applications.
After implementing the above-mentioned measures, it is possible to objectively evaluate the effectiveness of the measures and any deficiencies by conducting external penetration tests and vulnerability assessments.
W?hrend beide Schwachstellen durch b?sartigen Code oder Daten verursacht werden k?nnen, die von Website-/App-Benutzern und Administratoren gesendet werden, unterscheiden sie sich in Bezug auf die Auswirkungen. CSS/XSS verursacht in der Regel St?rungen auf Client- oder Besucherseite und kann verwendet werden, um Sitzungen zu entführen, Websites zu veruntreuen, b?sartige Inhalte herunterzuladen und URLs umzuleiten. Andererseits beeintr?chtigen Injektionen die Serverseite stark und k?nnen zu Datenverlust und anderen Folgen führen.?
Obwohl SQL Injection ein alter Angriff ist, gibt es immer noch viele best?tigte F?lle, die in den letzten Jahren gro?en Schaden verursachen. Daher ist es immer noch ein Angriff, vor dem Unternehmen vorsichtig sein sollten. Wenn eine Technik wie die UNION-Injektion verwendet wird und der Angriff erfolgreich ist, kann dies zu einem gro?en Informationsleck führen. Durch geeignete Ma?nahmen ist es jedoch m?glich, solche Sch?den zu verhindern, bevor sie auftreten. Als Sicherheitsma?nahme für Unternehmensorganisationen empfehlen wir neben den oben genannten Ma?nahmen aus der Perspektive der Verteidigung in der Tiefe, dass regelm??ig Sicherheitsbewertungen durchgeführt werden, wie externe Penetrationstests und Schwachstellendiagnose.?
Stoppen Sie Angreifer schneller und reduzieren Sie Cyberrisiken mit einer einzigen Plattform. Verwalten Sie Sicherheit ganzheitlich mit Funktionen für Pr?vention, Erkennung und Reaktion, die auf künstlicher Intelligenz, wegweisenden Forschungsmethoden und tiefgehenden Erkenntnissen basieren.
Trend Vision One unterstützt verschiedene hybride IT-Umgebungen, automatisiert und koordiniert Workflows und bietet fachkundige Services für Cybersicherheit. Damit k?nnen Sie Ihre Sicherheitsprozesse vereinfachen und zusammenführen.