E-Mail-Injektion
aus Wikipedia, der freien Enzyklopädie
Unter dem Begriff E-Mail-Injektion versteht man das Ausnutzen einer Sicherheitslücke in einer Webanwendung, die es einem Angreifer erlaubt über ein ungeschütztes Kontaktformular ohne Wissen und Einverständnis des Betreibers E-Mails zu verschicken. Das Hauptinteresse des Angreifers dürfte dabei der Versand von Spam sein. Der Begriff wurde von der Sicherheitslücke SQL-Injection abgeleitet.
Inhaltsverzeichnis |
[Bearbeiten] Funktionsweise
Diese Sicherheitslücke besteht darin, dass die in ein Kontaktformular eingegebenen Daten ohne weitere Prüfung an den Mailserver weitergereicht werden. Dem Angreifer kommt dabei zugute, dass die Header (E-Mail)-Informationen zeilenweise am Anfang der E-Mail stehen und einige Programmiersprachen für Webanwendungen selbst keine Überprüfung der Daten beim Versand einer E-Mail vornehmen. Der Vorgang der E-Mail-Injektion besteht darin, einzeilige Eingaben, wie z.B. der Betreff der Anfrage, mit mehrzeiligen Informationen zu füllen. Dabei können beispielsweise weitere Empfänger, ggf. auch als CC oder BCC, gesetzt werden, selbst wenn der Programmierer der Webanwendung eine Empfängeradresse fest vorgegeben hat.
[Bearbeiten] Verbreitung
Während bis 2004 diese Lücke zwar bekannt, aber nur vereinzelt ausgenutzt wurde, häufen sich seit 2005 die Meldungen, dass Search-Bots – ähnlich denen einer Suchmaschine – im großen Umfang Formulare auf Webseiten mit der Brute-Force-Methode auf eine Verwundbarkeit hinsichtlich dieser Sicherheitslücke überprüfen. Es ist zu erwarten, dass die hierbei gesammelten Informationen in naher Zukunft zum Versand von SPAM in größerem Umfang eingesetzt werden.
[Bearbeiten] Beispiel
Der nachstehende Code zeigt die Daten eines solchen HTTP-Requests auf ein Kontaktformular einer in PHP geschriebenen Webanwendung.
$_REQUEST = Array {
["name_absender"]=> string(215) "of
Content-Type: text/plain; charset=\"us-ascii\"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Subject: nton an incoln. e d be bucked off befure
bcc: charleslegbe@aol.com
ec36ff5aa45502446284c4f3ce2b3896
.
"
}
Dabei steht $_REQUEST für das Array, welches alle Variablen enthält, die dem HTTP-Request mitgegeben wurden. Das ist in diesem Fall nur die Variable „name_absender“. Diese ist ein String von 215 Zeichen, der sich über neun Zeilen erstreckt. Baut die Webanwendung den Namen des Absenders nun in den Header einer E-Mail ein, wird die E-Mail ungewollt auch an die angegebene Adresse beim Provider AOL gesendet. Hier handelt es sich noch nicht um das Aussenden von SPAM selbst, sondern vielmehr um den Test, ob das betreffende Kontaktformular anfällig für die Sicherheitslücke ist. Die Zeile mit den 32 Zeichen wird vermutlich ein Hash-Wert sein, mit dem der Angreifer die URL des ungeschützten Kontaktformulars codiert hat, um sie später wieder zu identifizieren.
[Bearbeiten] Abwehrmaßnahmen
In diversen Internet-Foren kursieren eine Menge von teilweise oder gar nicht wirksamen Abwehrmaßnahmen. Dazu gehört das gezielte Aussperren eines bestimmten Search-Bots anhand der von ihm verwendeten E-Mail-Adresse, das Abprüfen des Referers bei der Verarbeitung der Eingaben oder des ausschließlichen Akzeptierens von Eingaben über HTTP-POST aus dem Kontaktformular. Die einzig wirksame Maßnahme ist das Unterbinden von Zeilenumbrüchen in Variablen, die später in den Header der E-Mail eingefügt werden sollen. Ob man dabei einen mehrzeiligen String auf die erste Zeile kürzt oder bei der Feststellung von Zeilenumbrüchen die Verarbeitung des Programmes unterbricht, ist dem Programmierer freigestellt.

