Spam im Wiki

From NJH-Wiki

Jump to: navigation, search

Contents

Vandalismus

Bisher gab es nur einen einzigen Fall von menschlichem Vandalismus in diesem Wiki. Das ist lange her und hat sich nicht wiederholt.

Später gab es aber Amok-laufende Spambots.

Vorbereitung für Link-Spam

Es gab mehrere kurz aufeinander folgende Spam-Attacken:

Alle Verunstaltungen gingen von der IP-Adresse 64.27.20.205 aus. Es wurden merkwürdige 23-stellige Dezimalzahlen in die Seiten eingefügt.

Wahrscheinlich handelt es sich um eine Identifizierungs-Nummer, sodass der Angreifer erst einmal schauen kann, welche Wikis sein tolles Spamming-Tool dauerhaft manipulieren kann, bevor er den eigentlichen Wiki-Spam absetzt.

Vielleicht haben diese Nummern auch einen anderen Zweck. Öffentlicht dokumentiert ist dieses Vorgehen leider nicht, aber es gibt weitere Theorien über diese merkwürdigen Zahlen.

Link-Spam

Wie befürchtet schlug nun der eigentliche Spam ein:

Unter diesen 7 Attacken tauchte 3x die IP-Adresse 195.175.37.71 auf.

Das war's dann wohl. Es ist nur noch eine Frage der Zeit, bis es mehr Änderungen von Spam-Bots als von Menschen geben würde. :-(

Ich muss handeln.

Maßnahmen

Das MediaWiki erlaubt etliche Anti-Spam-Maßnahmen. Eine davon ist, keine anonymen Änderungen mehr zuzulassen. Jeder, der etwas zu an diesem Wiki beitragen möchte, muss sich vorher einen Benutzernamen ausdenken und ein Passwort wählen. Das wird zurecht als "Poor Solution" bezeichnet, aber sie ist sehr effektiv.

Zumal dieses Wiki keine wirkliche Community hat. Es gibt im Wesentlichen 2 Schreiber. Die wenigen, die außer uns beiden noch substanzielle Beiträge schrieben, hatten sich sowieso schon einen Account geholt. Anonyme Beiträge beschränkten sich meist auf minimale Korrekturen. Und die meisten davon, wenn nicht alle, stammten von uns: Man vergisst hin und wieder, sich einzuloggen.

Dummy-Anmeldungen und neuer Link-Spam

Nun kam der erste nicht-anonyme Spam-Eintrag:

Dieser Spam-Bot hat sich offenbar einen Account "Dilbert" hier eingerichtet. Damit geht es in die nächste Runde. Unser schönes Wiki. :-(

Dennoch: Dies war erstmal ein Einzelfall. Erst 3 Monate später kamen weitere Spam-Einträge:

Diese kamen von einem neu eingerichteten Account "1173219964".

Noch etwas später 3 weitere:

Diese kamen von einem neu eingerichteten Account "1174617665".

Und in sehr kurzem Abstand noch zwei weitere:

Da es sich um nahezu identische Angriffe handelt, lohnt sich kein großartiger Aufwand, aber irgendwas muss getan werden. Es bleib nichts weiter übrig, als im MediaWiki etwas zu hacken, da es nur äußerst bescheidene automatische Gegenmaßnahmen unterstützt:

--- mediawiki/includes/User.php.orig    2007-03-25 21:20:56.000000000 +0200
+++ mediawiki/includes/User.php 2007-03-25 21:23:48.000000000 +0200
@@ -189,6 +189,8 @@
         * is longer than the maximum allowed username size or doesn't begin with
         * a capital letter.
         *
+        * Also forbid numerc-only names.
+        *
         * @param string $name
         * @return bool
         * @static
@@ -200,6 +202,7 @@
                || User::isIP( $name )
                || strpos( $name, '/' ) !== false
                || strlen( $name ) > $wgMaxNameChars
+               || preg_match( "/^\d+$/", $name )
                || $name != $wgContLang->ucfirst( $name ) )
                        return false;
 

Hoffen wir, dass jetzt wieder Ruhe ist.

Amok-laufende Spambots

Von zufälligen Accounts der Länge 6 kommen nun besonders üble Edits:

Unter anderem werden "+"-Zeichen entfernt und es wird alles hinter einem "&"-Zeichen gelöscht. Irgendein toller Spambot hat wohl einen "kleinen" Bug. Damit haben wir zum zweiten Mal einen Fall von Vandalismus in dem Wiki.

Ich versuche es nun erneut mit einer möglichst primitiven Gegenmaßnahme, aber ich brauche wohl demnächst eine dauerhafte Lösung:

--- mediawiki/includes/User.php.orig   2007-03-25 21:20:56.000000000 +0200
+++ mediawiki/includes/User.php        2007-04-11 00:05:55.000000000 +0200
@@ -189,6 +189,8 @@
        * is longer than the maximum allowed username size or doesn't begin with
        * a capital letter.
        *
+       * Also forbid numerc-only names and names of length 6.
+       *
        * @param string $name
        * @return bool
        * @static
@@ -200,6 +202,8 @@
               || User::isIP( $name )
               || strpos( $name, '/' ) !== false
               || strlen( $name ) > $wgMaxNameChars
+              || strlen( $name ) == 6
+              || preg_match( "/^\d+$/", $name )
               || $name != $wgContLang->ucfirst( $name ) )
                       return false;
 

Amok-laufende Spambots (2)

Von zufälligen Accounts der Länge 10 kommen nun ebenfalls Edits:

Der Bot fügt jeweils "nur" eine einzelne Markierungs-Zeile hinzu, doch zerstört nebenher sämtliche Umlaute. Schon wieder ein toller Spambot mit einem "kleinen" Bug.

Da die letzte primitiven Gegenmaßnahme überraschend lange hielt, versuche ich es erneut damit:

--- mediawiki/includes/User.php.orig   2007-03-25 21:20:56.000000000 +0200
+++ mediawiki/includes/User.php        2008-07-12 12:19:17.000000000 +0200
@@ -189,6 +189,8 @@
        * is longer than the maximum allowed username size or doesn't begin with
        * a capital letter.
        *
+       * Also forbid numerc-only names and names of length 6 and 10.
+       *
        * @param string $name
        * @return bool
        * @static
@@ -200,6 +202,9 @@
               || User::isIP( $name )
               || strpos( $name, '/' ) !== false
               || strlen( $name ) > $wgMaxNameChars
+              || strlen( $name ) == 6
+              || strlen( $name ) == 10
+              || preg_match( "/^\d+$/", $name )
               || $name != $wgContLang->ucfirst( $name ) )
                       return false;
 

Neuer Spam

Von zufälligen Accounts werden nun viele neue Seiten anglegt und wahrscheinlich per E-Mail beworben:

Als erste Gegenmaßnahme habe ich diese Seiten gegen Aufklärungsseiten ersetzt, sodass die willigen Spamkäufer erst einmal vor den Kopf gestoßen werden.

Da auch die letzte primitive Gegenmaßnahme überraschend lange hielt, habe ich sie einfach etwas verschärft:

--- mediawiki/includes/User.php.orig    2009-05-01 06:24:09.000000000 +0000
+++ mediawiki/includes/User.php         2009-06-28 15:29:17.000000000 +0000
@@ -492,6 +492,8 @@
         * is longer than the maximum allowed username size or doesn't begin with
         * a capital letter.
         *
+        * Also forbid numerc-only names and names of length 6 and >= 9.
+        *
         * @param $name \string String to match
         * @return \bool True or false
         */
@@ -502,6 +504,9 @@
                || User::isIP( $name )
                || strpos( $name, '/' ) !== false
                || strlen( $name ) > $wgMaxNameChars
+               || strlen( $name ) == 6
+               || strlen( $name ) >= 9
+               || preg_match( "/^\d+$/", $name )
                || $name != $wgContLang->ucfirst( $name ) ) {
                        wfDebugLog( 'username', __METHOD__ .
                                ": '$name' invalid due to empty, IP, slash, length, or lowercase" );

Der letzte Spam

Nach einer kleinen Ruhephase sind wieder Spambots aufgetreten. Diese werden die letzten gewesen sein, da ich nun das Registrieren neuer Nutzer komplett sperre:

--- mediawiki/includes/User.php.orig    2009-05-01 06:24:09.000000000 +0000
+++ mediawiki/includes/User.php         2010-04-23 15:58:03.000000000 +0000
@@ -590,6 +590,7 @@
        static function isCreatableName( $name ) {
                global $wgInvalidUsernameCharacters;
                return
+                       false &&
                        self::isUsableName( $name ) &&
 
                        // Registration-time character blacklisting...
Personal tools