/ Security

Kurz & Knackig: SQL-Injection, Session Prediction und Cross-Site-Tracing erklärt

Die Analysefähigkeiten unserer Plattform werden stetig erweitert. Seit kurzem prüfen wir auch 3 neue Angriffszenarien, die im Folgenden erläutert werden. In diesem Artikel erklären wir, was hinter SQL-Injection, Session Prediction und Cross-Site-Tracing steckt und was man dagegen tun kann.

SQL-Injection

SQL steht für "Structured Query Language" und ist eine Datenbanksprache. Mit Hilfe von SQL können z.B. Daten in Datenbanken abgefragt, bearbeitet oder gelöscht werden.

Was ist eine SQL-Injection?
Sagen wir der fiktive Online-Shop "Steine & Unkraut" verfügt über eine eingebaute Suchfunktion mit der man nach bestimmten Stein- und Unkrautsorten suchen und diese bestellen kann. Ein Benutzer gibt beispielsweise im Suchfeld ein "tibetanisches Steppengestrüpp". Diese Eingabe wird dann zu einer SQL-Anfrage verarbeitet, die vom sogenannten SQL-Interpreter ausgeführt wird. Die Produktdatenbank wird auf einen Eintrag durchsucht, der "tibetanisches Steppengestrüpp" enthält. War die Suche erfolgreich, kann der Benutzer sein Gestrüpp auswählen und bestellen. Bei einer SQL-Injection versucht der Angreifer über eine Anwendung, die Zugriff auf die Datenbank hat (z.B. ein Suchfeld oder ein Login-Formular), eigene Datenbankbefehle einzuschleusen. Es gibt nämlich einige Zeichen, z.B. ' oder \ die für den SQL-Interpreter Sonderfunktionen besitzen. Über diese Zeichen kann man den Interpreter quasi "direkt" erreichen und ihm Anweisungen geben.

Wie gefährlich ist SQL-Injection?
Gelingt eine SQL-Injection, dann könnte es für den Angreifer möglich werden, Daten aus der Datenbank auszulesen, zu manipulieren oder sogar die komplette Datenbank zu löschen. Erfolgt die SQL-Injection z.B. über ein Login Formular und es wird die zugehörige Datenbank durchsucht, in der die Benutzernamen, Passwörter und jeweiligen Rechte gespeichert sind, könnte der Angreifer sich auch Zugang zu geschützten Bereichen oder sogar Administratorrechte verschaffen.

Wie kann ich mich vor SQL-Injection schützen?
Um diese Attacke zu vermeiden, sollten solche speziellen Sonderzeichen in der Benutzereingabe herausgefiltert bzw. umgewandelt oder maskiert werden. Sicherer ist noch, die Benutzereingabe nicht einfach so ohne weiteres in eine SQL-Anweisung einzubauen (z.B. mittels sogenannten "Prepared Statements").

Session Prediction

Bei dieser Attacke, spielt die sogenannte Session ID eine wichtige Rolle. Bleiben wir beim Beispiel unseres "Steine & Unkraut" Online Shops. Sagen wir ein Benutzer "Herbert" ist langjähriger Kunde des Shops und möchte seinen Bestand an Unkraut und Steinen auffüllen. Er loggt sich mit seinem Benutzernamen und seinem geheimen Passwort ein und beweist so der Seite seine Identität. Herbert möchte sein Passwort pro Besuch des Online Shops natürlich nur einmal eingeben. Deswegen generiert der Online Shop eine Session ID, eine Zeichenkette, die Herbert für die Dauer seines Besuchs zugeordnet wird, z.B. 12433Herbertistda4343. Sie beweist gegenüber dem Online Shop, dass er sich erfolgreich angemeldet hat. Bei jeder weiteren Kommunikation zwischen Herbert und der Website wird die Session ID nun mit übertragen z.B. in der URL: http://www.SteineundUnkraut.org/index.php?sid=12433Herbertistda4343.

Was ist Session Prediction?
Manchmal erfolgt die Vergabe von Session IDs nach einem bestimmten Muster, z.B. bekommt der 1. Besucher die Session ID "user01", der 2. die Session ID "user02", etc. Dann ist es für einen Angreifer sehr einfach eine gültige Session ID zu erraten und er kann sich als derjenige ausgeben, dem die Session ID eigentlich gehört.

Wie gefährlich ist Session Prediction?
Sind z.B. Zahlungsinformationen im Kundenkonto hinterlegt, kann der Angreifer bei Steine & Unkraut auf Kosten seines Opfers einkaufen. Natürlich kann diese Attacke auch dazu verwendet werden, um sich Zugang zu Webseiten mit sensiblen Inhalten zu verschaffen oder Aktionen mit der Berechtigung des imitierten Nutzers auszuführen.

Wie kann ich mich vor Session Prediction schützen?
Um Session Prediction zu vermeiden ist es ratsam, die Session ID nicht zu kurz zu wählen und eine gewisse Form von Zufall zu integrieren, damit man von einer abgefangenen Session ID nicht auf andere Session IDs schließen kann. Als Benutzer selbst kann man sich kaum gegen Session Prediction schützen.

Cross-Site-Tracing

Bei diesem Angriff spielt die sogenannte HTTP-Anfrage "TRACE" eine große Rolle. Diese Methode, die eigentlich der Fehlersuche dienen soll, liefert als Antwort die ursprüngliche Anfrage eines Web-Clients zurück. Hat sich der Benutzer bei dem Web-Client mit einem Cookie authentifiziert, so wird dieses in der Antwort auch mitgeliefert. Mit Hilfe eines Skripts kann man dieses Cookie auslesen und anzeigen.

Was ist Cross-Site-Tracing?
Nehmen wir wieder unseren Benutzer Herbert. Herbert hat mittlerweile sein Lieblingsunkraut, das schmalblättrige Weidenröschen nachbestellt und recherchiert nun die besten Düngemittel dafür. Herbert klickt aus Versehen auf einen kompromittierten Link, der Javascript Code in den "Steine & Unkraut" Online Shop einschleust. Dieses Skript bewirkt, dass Herberts Computer eine "TRACE" Anfrage an den "Steine & Unkraut" Online-Shop sendet. Der Online Shop sendet daraufhin Cookies oder andere Authentifizierungsdaten zurück und kann durch das bösartige Javascript an einen externen Server übermittelt werden.

Wie gefährlich ist Cross-Site-Tracing?
Cross-Site-Tracing kann dazu verwendet werden, die Benutzerdaten des Opfers zu einer beliebigen Website zu erlangen. Eine Attacke hat ähnliche Konsequenzen wie eine erfolgreiche Session Prediction Attacke.

Wie kann ich mich vor Cross-Site-Tracing schützen?
Benutzer können Javascript in ihrem Browser deaktivieren, was aber zu Einschränkungen bei der Ausführung mancher Webseiten führen kann oder den Content-Security-Policy HTTP Header setzen. Eine etwas weniger drastische Lösungen kann z.B. sein den Browser so einzustellen, dass Cookies nach dem Ende einer Session automatisch gelöscht werden. Server Administratoren können ihre Server so einstellen, dass "TRACE" standardmäßig deaktiviert ist.

Sofern Sie prüfen möchten, inwieweit Sie von diesen drei Angriffen betroffen sind oder Hilfe bei Gegenmaßnahmen suchen, registrieren Sie sich einfach und testen Sie unsere Plattform 14 Tage lang kostenlos.