Spam über Skripte

Alle ausklappen Alle einklappen

Hier stellen wir Ihnen verschiedene Möglichkeiten vor, wie Sie Ihre Skripte wirkungsvoll gegen Missbrauch durch Spammer sichern können. Ein wichtiges Thema, denn missbräuchlicher Spamversand über Skripte hat u.a. verzögerte E-Mail-Zustellungen auf einem Webserver zur Folge und kann somit z.B. bei Bestellmails von Online-Shops oder Anfragen von Interessenten über Ihre Webseite auch für Ihr eigenes Unternehmen geschäftsschädigend sein!

1. Welche Anwendungen/Skripte sind betroffen?

Die hier beschriebenen Sicherheitsrisiken und Lösungen beziehen sich in erster Linie auf reine Kontaktformulare. Betroffen von der Spamproblematik sind jedoch allgemein alle Skripte/Anwendungen, über die E-Mails versendet werden, deren Inhalt und/oder Header durch Parameter modifiziert werden kann. Hierzu zählen beispielsweise auch Seitenempfehlungs- oder E-Card-Skripte.

2. Wie gehen die Spammer vor? Ursachen für Missbrauchspotential

Zunächst möchten wir Ihnen gerne die Vorgehensweise der Spammer näher erläutern: Wie nutzen Spammer Sicherheitslücken in Anwendungen für ihren kriminellen Machenschaften? Welche Sicherheitslücken in den missbrauchten Skripten sind hierfür verantwortlich?

  1. Hoher Automatisationsgrad bei professionellen Spammern

    Professionelle Spammer gehen in der Regel strukturiert vor und legen bei der Durchführung ihrer kriminellen Machenschaften großen Wert auf Effizienz. Spammer setzen z.B. Skripte ein, die das Internet automatisch nach unsicheren Anwendungen "durchforsten", um potentielle Opfer für den Versand von Spam-Mails ausfindig zu machen. Auch beim Versand von Spam füllen Spammer das Kontaktformular nicht manuell aus. Es sollen tausende E-Mails gleichzeitig versendet werden. Deshalb werden die Daten über gefälschte, sogenannte POST-Requests (das normale Ausfüllen/Absenden eines Kontaktformulars wird ebenfalls so genannt), an das jeweilige Skript übergeben.

    Das funktioniert folgendermaßen: Der Spammer fügt in die Feldwerte Umbruchzeichen ein und kann dem Header der E-Mail so weitere Informationen hinzufügen wie z.B. "Bcc:" gefolgt von den E-Mail-Adressen, an die der Spam versendet werden soll – meist mehrere hundert oder tausend. Zudem werden noch weitere Headerzeilen, z.B. mit einem anderen Betreff und schließlich natürlich auch ein anderer Mailtext eingefügt.

  2. Die Folgen

    Neben dem ursprünglichen Empfänger der E-Mail erhalten alle, beispielsweise als "Bcc:" hinzugefügten E-Mail-Adressen die auf diese Weise versendete E-Mail. Bei mehreren solcher Manipulationen kann eine derartige Spam-Mail leicht an mehrere tausend Empfänger versendet werden!

    Die E-Mails werden über den Server der Webseite versandt. Da sie über ein Skript der Webseite gesendet werden, werden sie außerdem nicht über den Mailserver sondern über den Webserver gesendet. Einem Webserver stehen hierfür geringere Ressourcen zur Verfügung als einem Server, der ausschließlich für den Versand von E-Mails zuständig ist. In der Folge werden die E-Mail-Ressourcen des Servers überlastet.

    Das "Verstopfen" der E-Mail-Funktion eines Webservers führt dann letztendlich zu einer teilweise stark zeitverzögerten Zustellung von E-Mails. Und hiervon sind neben den Spam-Mails natürlich auch "richtige" E-Mails wie beispielsweise Bestellmails aus Online-Shops oder Anfragen von Interessenten betroffen!

    Viele Provider, Betreiber von E-Mail-Diensten, etc. setzen Blacklists mit gesperrten Servern ein, von denen mehrfach Spam-Mails versendet wurden. Wird ein Server, auf dem ein Skript für den Spamversand missbraucht wurde, auf eine solche Blacklist gesetzt, werden seitens der Provider tagelang keinerlei E-Mails mehr angenommen. Das kann in Verbindung mit der verzögerten Zustellung von Anfragen oder Bestellmails sehr schnell zu einer ernsten Geschäftsschädigung führen, wenn beispielsweise Kunden keine Bestellbestätigungen mehr aus Online-Shops erhalten!

  3. Ursachen für Missbrauchspotential

    Ein Großteil der verwendeten Formmailer vertraut den übergebenen Daten beinahe uneingeschränkt und überprüft sie nicht auf Richtigkeit. Somit können die Daten problemlos über das Kontaktformular in die PHP-Funktion mail() gelangen, über die dann die entsprechenden E-Mails erstellt und versandt werden.

    Eine Überprüfung der übergebenen Daten ist in den meisten Fällen ausreichend, um Missbrauch von Kontaktformularen auszuschließen (siehe weiter unten).

    Wie ein Kontaktformular bei fehlender Überprüfung der Daten für den Versand von Spam-Mails missbraucht werden kann, sehen Sie im folgenden Beispiel:

    Beispiel

    In einem Formular können Besucher Ihren Namen, E-Mail-Adresse und eine Nachricht eintragen. Name und E-Mail-Adresse werden in dem Skript in Form von

    "From: $_POST['name'] <$_POST['email']>"
    als vierter Parameter an die PHP-Funktion mail() übergeben. Diese beiden Werte werden Ihnen beim Empfang der E-Mail als Absender angezeigt. Der Mailheader (auch als Kopfzeilen bezeichnet) einer E-Mail würde dann beispielsweise wie folgt aussehen:

    From: Peter Mustermann <peter@eine-kundendomain.de>
    Ein Spammer, der Ihr Formular zum Spamversand missbrauchen möchte, übergibt aber z.B. folgende Werte als E-Mail-Adresse:

    peter@eine-kundendomain.de<umbruch>Bcc: andere@adresse1.de, andere@adresse2.de<umbruch>
    Durch diese einfache und schnell zu realisierende Manipulation wird aus der oben genannten Headerzeile der folgende E-Mail-Header:

    From: Peter Mustermann <peter@eine-kundendomain.de>
    Bcc: andere@adresse1.de, andere@adresse2.de
    Mit dieser einfachen Manipulation kann der Spammer nun seine Spam-Mail über Ihr Kontaktformular versenden!

3. Wie könnnen Anwendungen/Skripte abgesichert werden?

Bei einer solchen missbräuchlichen Manipulationen zum Versand von Spammails handelt es sich um ein ernst zu nehmendes kriminelles Verhalten, das u.U. auch für Sie selbst geschäftsschädigend ist. Deshalb möchten wir Sie bitten, sich die nachfolgenden Informationen zur Absicherung von Mailskripten genau durchzulesen und zu beachten. Tragen Sie Ihren Teil zur Bekämpfung von Spam bei!

Idealerweise werden Werte für den E-Mail-Header schon im Skript hinterlegt, um somit die Manipulation der Daten durch die Übergabe von Variablen von vornherein auszuschließen. In vielen Fällen ist das jedoch nicht möglich, weil z.B. der Absender oder der Betreff variieren können. Deshalb möchten wir Ihnen nachfolgend einige Möglichkeiten der wirkungsvollen Absicherung vorstellen:

  1. Überprüfen auf Umbruchzeichen

    Alle Variablen, die in einem E-Mail-Header verwendet werden, müssen auf Umbruchzeichen geprüft werden. Wird ein solches entdeckt, kann das Skript bedenkenlos mit einer Fehlermeldung abgebrochen werden. Da Umbruchzeichen über ein normales INPUT-Feld von Formularen nicht eingegeben werden können, kann es sich in solchen Fällen nur um einen missbräuchlichen Spamversuch mittels eines gefälschten POST-Requests handeln!

    Falls es sich beim Ihrerseits eingesetzten Kontaktformular um ein in PHP geschriebenes Skript handelt, sollten dort die Parameter an den Stellen 1, 2, 4 und 5 auf Umbruchzeichen hin überprüft werden. Dies ist z.B. mit dem folgenden Code möglich:

     if ( strstr($_POST['email'], "\n") ) die ("NO SPAM HERE!"); 
    Erklärung zu oben stehender Codezeile:
    Wird in dem POST-Wert "email" ein Umbruchzeichen entdeckt, so wird das Skript mit der Fehlermeldung "NO SPAM HERE!" abgebrochen. Bitte achten Sie darauf, alle Variablen zu prüfen bzw. den Code auf Ihr Skript und Ihre Feld- bzw. Variablennamen anzupassen.

  2. Überprüfen der Syntax von E-Mail-Adressen

    Eine weitere wichtige Sicherheitsmaßnahme ist die Überprüfung der Syntax von E-Mail-Adressen. Ohne eine solche Überprüfung können wie in oben beschriebenem Beispiel mittels Kommas mehrere E-Mail-Adressen übergeben werden. Da ein Komma in einer einzelnen E-Mail-Adresse nicht vorkommen kann bzw. darf, kann mit einer Prüfung der Syntax eine Angabe von mehreren Adressen verhindert werden.

    Eine solche syntaktische Überprüfung kann beispielsweise mit sogenannten "Regular Expressions" erfolgen. Ein Code-Beispiel für PHP:

    if ( ! preg_match('/^[a-z0-9_\.\-]+@[a-z0-9\.\-]+\.[a-z]{2,}$/i', $_POST['email']) ) die ("Ungültiges Mailformat");
  3. Die Referrer-Überprüfung

    Darüber hinaus kann auch eine Referrer-Überprüfung eine sinnvolle Maßnahme zur Absicherung eines Kontaktformulars darstellen.

    Der Referrer beschreibt die URL, von welcher aus das Formular bzw. Skript aufgerufen wurde und wird von nahezu allen Browsern automatisch übermittelt. Wenn Ihr Kontaktformular beispielsweise unter der Adresse "http://eine-kundendomain.de/kontakt.html" zu finden ist und ein Besucher Ihnen eine Anfrage über dieses Formular zukommen lässt, so wird exakt diese Adresse übermittelt.

    Im Gegensatz zu normalen Besuchern Ihrer Seite übergeben Skripte von Spammern i.d.R. keinen Referrer, sondern einen Leerstring. Somit bietet der Referrer durchaus eine weitere wirksame Methode, Ihr Kontaktformular abzusichern.

    In PHP kann der Referrer wie folgt abgefragt werden:

    $referer = $_SERVER['HTTP_REFERER'];
    Bitte beachten Sie bei der Anwendung der Referrer-Überprüfung, dass es hierbei vereinzelt zu Problemen kommen kann, da manche Firewalls diesen Referrer automatisch aus der Kommunikation entfernen, um ein anonymes Surfen zu ermöglichen. Zudem läßt sich die Referrerübermittlung in vielen Browsern manuell deaktivieren.

    Sie sollten daher bei Anwendung der Referrer-Überprüfung einen entsprechenden Hinweistext ausgeben, der Benutzern angezeigt wird, wenn das ausgefüllte Formular aufgrund einer fehlgeschlagenen Referrer-Überprüfung nicht übermittelt werden konnte.

4. Wo erhalte ich weitergehende Informationen?

Weitergehende Informationen zur Absicherung von Skripten gegen missbräuchlichen Spamversand finden Sie auch im Heise-Artikel "Mailformulare auf Webseiten absichern".

Informationen zur Mailfunktion von PHP sowie zu Regular Expressions (siehe "Überprüfen der Syntax von E-Mail-Adressen") erhalten Sie in der PHP-Dokumentation:

Bitte beachten Sie unbedingt die oben stehenden Informationen zur Spamproblematik über unsichere Kontaktformulare und passen Sie Ihre Anwendungen/Skripte entsprechend an. Bei Rückfragen steht Ihnen unsere Technik jederzeit gerne unter technik@df.eu zur Verfügung.

Geben sie uns Ihr Feedback

Das freut uns und wir haben Ihre positive Rückmeldung vermerkt. Wenn Sie möchten, teilen Sie uns gerne noch Details mit: Was hat Ihnen besonders gefallen? Welche Informationen waren besonders hilfreich?

Leider können wir Ihr Feedback nicht direkt beantworten, wir verwenden es jedoch, um die FAQ weiterzuentwickeln und zu verbessern. Wir freuen uns auf Ihre Antwort!

Geben sie uns Ihr Feedback

Es tut uns leid, dass Sie mit den FAQ nicht zufrieden sind. Welche Information vermissen Sie? Was können wir besser machen?

Leider können wir Ihr Feedback nicht direkt beantworten, wir verwenden es jedoch, um die FAQ weiterzuentwickeln und zu verbessern. Wir freuen uns auf Ihre Antwort!