![]() |
|
URL dieser Newsmeldung:
03.06.2008
SQL-Injection-Angriffe, wohin man blicktIn letzter Zeit treten besonders häufig SQL-Injection-Angriffe auf, hier ein Überblick und mögliche Gegenmaßnahmen. Über die SQL-Injection-Angriffe, die ASP/ASP.NET-Anwendungen mit
JavaScript-Code zum Nachladen von Exploits für verschiedenen Schwachstellen
verseucht haben, hatte ich ja bereits am
28. April im Standpunkt Sicherheit berichtet.
So wurden z.B. auch die EPG-Daten der ARD manipuliert (siehe auch Standpunkt Sicherheit vom 13. Mai).
Ein ÜberblickDie Entwicklung lässt sich z.B. gut im F-Secure Weblog verfolgen:
Oder auch bei Dancho Danchev:
ausführlich: Fast-Fluxing SQL injection attacks executed from the Asprox botnet Laut einer Meldung von Heise Security sind inzwischen auch deutsche Websites vermehrt Opfer dieser Angriffe. Der AngriffEin ähnlicher Angriff lief bereits im Januar, die damals verwendeten Methoden wurden vom Internet Storm Center analysiert. Die aktuellen Angriffe folgen dem gleichen Muster: Über SQL-Injection werden alle geeigneten Datenbankfelder mit JavaScript-Code zum Nachladen von Schadcode gefüllt, in der Hoffnung, dass mindestens eines der Felder ohne weitere Prüfung an die Besucher der Webseite ausgegeben wird. Dabei werden Systemtabellen und z.B. rein numerische Felder ignoriert und nur einem normalen Benutzer gehörende Tabellen und darin Felder mit Textwerten etc. manipuliert. Werden die Werte daraus dann später ohne weitere Bearbeitung oder Filterung an den Benutzer der Webanwendung ausgegeben, wird darüber Schadcode zum Ausnutzen verschiedener Schwachstellen nachgeladen. Aktuell handelt es sich dabei z.B. auch um die aktuellen Exploits für Adobes Flash-Player, siehe den Standpunkt Sicherheit vom 2. Juni. GegenmaßnahmenAußer dem Rat aus dem Standpunkt Sicherheit vom 28. April, die Logfiles nach dem SQL-Injection-Code zu durchsuchen und ggf. eingeschleusten Schadcode aus der Datenbank zu entfernen sowie die SQL-Injection-Schwachstelle in der Webanwendung zu beheben, gibt es drei weitere Schutz- bzw. Gegenmaßnahmen: Zum einen ist der SQL-Injection-Angriff nur erfolgreich, wenn das Benutzerkonto, mit dem die Webanwendung auf die Datenbank zugreift, die Datenbank auch verändern darf. Sind keine Änderungen an der Datenbank notwendig, sollten dem entsprechenden Benutzer alle Rechte außer den notwendigen Leserechten entzogen werden. Zum anderen kann eine Web Application Firewall die SQL-Injection-Angriffe erkennen und abwehren, bevor sie die Webanwendung erreichen. Außer diesen relativ einfach zu implementierenden Schutzmaßnahmen gibt es noch eine aufwendigere Gegenmaßnahme: Für alle auszugebenden Daten können die gleichen Prüfungen wie für vom Benutzer gelieferte Daten angewendet werden. Unerwünschter JavaScript-Code würde dabei erkannt und ausgefiltert bzw. unbrauchbar gemacht. Am einfachsten ist das für Daten umzusetzen, die keinem HTML- und/oder JavaScript-Code enthalten dürfen. Dann reicht schon das simple Umwandeln von < und > in die entsprechenden HTML-Entities < und >, um unerwünschten Skriptcode unbrauchbar zu machen. Das hat zwar den unschönen Nebeneffekt, das der so entschärfte Schadcode als Quelltext im Browser des Benutzers ausgegeben wird, aber zumindest kann er keinen Schaden mehr anrichten. Carsten Eilers About Security #11: SQL-Injection (http://entwickler.com/itr/news/psecom,id,22419,nodeid,82.html) About Security #12: SQL-Injection verhindern (http://entwickler.com/itr/news/psecom,id,22580,nodeid,82.html) About Security #13: Mit Stored Procedures gegen SQL-Injection (http://entwickler.com/itr/news/psecom,id,22694,nodeid,82.html) |
||
|