Ansichten eines Informatikers

Spam-Schutz – Sicherheit von Captchas

Hadmut
13.8.2010 21:42

und warum ich derzeit was anderes gegen Spammer verwende.

Die Spammerei ist schon ärgerlich. Manchmal beklagen sich einige Leser, daß ich hier so ein seltsames Plugin verwende, das die Kommentarfunktion nur mit Cookies und JavaScript freigibt, anstatt Captchas zu verwenden (also diese verfremdeten Zahlen- und Buchstabenkombinationen, die man abtippen muß).

Dieses Plugin (WP-Spamfree) hat relativ lange sehr gute Dienste geleistet, ein paar Tausend Spam-Artikel hat es abgehalten. In letzter Zeit kommen aber doch einige Spam-Kommentare durch, die Spammer adaptieren sich. (Was mal wieder meine eigene These bestätigt, daß Maßnahmen gegen Spammer, Phisher usw., an die die sich adaptieren können und die auf Komplexität oder Obscurity beruhen nur so lange halten, wie es sich für die nicht lohnt, sie zu überwinden.)

Die wichtigste und wirksamste Anti-Spam-Maßnahme war allerdings, das Netz eines bestimmten Providers in der Ukraine von der Kommentarfunktion auszusperren.

Von Captchas allerdings halte ich nicht viel. Nicht nur, weil ich schon öfters mal selbst vor Captchas stand, die ich nicht korrekt ablesen konnte (an dieser Stelle bitte keine Kommentare…). Sondern weil diese sicherheitstechnisch auch nicht der Brüller sind. Gut, es geht hier nicht um Hochsicherheit, sondern um Cheap-and-Low-Security gegen Spams. Aber der Punkt ist nun mal, daß das Captcha nicht den am anderen Ende (als Mensch) authentifiziert, sondern nur belegt, daß irgendwo auf dieser Welt irgend ein Mensch die Challenge beantwortet hat, aber nicht unbedingt der, mit dem man redet. (Daß manche Captchas inzwischen doch maschinell gebrochen werden können, lassen wir mal außen vor.)

Das ist übrigens eine bekannte und typische Schwäche, die oft in Authentifikationsverfahren vorkommt. Bei einer Passwort-Authentifikation kann es beispielsweise sein, daß jemand anderes die Anfrage einfach weitergibt. Entweder als echte man-in-the-middle-Attacke oder in anderem Zusammenhang. Selbst bei manchen kryptographischen Challenge-Response-Verfahren sind solche Angriffe möglich. Vor einigen Jahren, also Kryptographie noch weniger bekannt war und ich darüber regelmäßig Vorträge und Workshops gehalten habe, habe ich das meistens mit dem Vergleich mit einem Schachspiel erläutert. Stellt Euch vor, ich kann kein Schach (kann ich wirklich nicht, kenne gerade mal entfernt die Regeln), und spiele mit zwei Profispielern, bei einem Weiß, beim anderen Schwarz. Ich lasse einen beginnen und kopiere alle Züge in beide Richtungen einfach durch. Beide Spieler haben den Eindruck, sie würden gegen einen guten Spieler spielen, obwohl ich das nicht bin. So kann man sich auch in manche Authentifikations- und Kryptoprotokolle hängen. (Mein Standard-Lacher-Spruch, der jedesmal funktioniert hat: Versuchen Sie das mal mit Boxen oder Tennis!)

Genau das haben die Spammer aber eine Zeitlang gemacht. Sie haben Pornowebseiten angeboten und den Porno-gierigen eine Anmeldeseite vorgeschoben, auf der man sich – mit den urigsten Begründungen – per Captcha anmelden mußte. Und die Leute haben es natürlich gemacht. Worin sollte schon die Gefahr liegen, gegenüber einer Pornoseite ein Captcha zu lösen? Nun, das Captcha kam nicht von der Pornoseite selbst. Jedesmal, wenn sich einer zum Pornogucken anmelden wollte, haben die sich im Hintergrund automatisiert auf einer anderen Webseite wie Google Mail, Hotmail oder sowas als neuem Benutzer angemeldet und auf deren Captcha-Challenge gewartet. Die haben sie dann dem Porno-Kunden durchgereicht, der hat das gelöst und sie haben die Antwort nach hinten wieder an Google Mail & Co. durchgereicht und sich automatisiert einen Account verschafft. Und der Porno-Kunde hat gar nicht gemerkt, daß er in Wirklichkeit dem Pornowebseitenanbieter einen Mailaccount verschafft hat.

Man muß zugeben, daß das zumindest Pfiff hat. Nette Idee.

Inzwischen scheint’s aber sowohl profaner, als auch professioneller abzugehen. Wie Golem berichtet, werden immer mehr Billigkräfte angeheuert, die für Dumping-Löhne Captchas im Auftrag von Spammern lösen. Spammer zahlen 1-20 Dollar pro 1000 Captchas, die Arbeiter bekommen 50 Cent bis 1 Dollar davon. Laut der kalifornischen Forscher, die das herausgefunden haben, funktioniert das ziemlich gut und effizient.

Vermutlich sind davon Blog-Kommentare eher wenig betroffen, der Nutzen eines im Blog abgesetzten Kommentars ist doch ziemlich gering. Weitaus interessanter für Spammer ist es da, sich Mailaccounts usw. zu holen. Was aber nicht heißt, daß Blogs und andere Web-2.0-Funktionen davor sicher wären. Bei diesen Billigpreisen.

Ich bastele gerade an einem Konzept für eine neue Blog-Software. Mir geht WordPress, aber mehr noch PHP auf den Wecker. So im großen und ganzen verdichtet sich mein Plan, worauf es hinausläuft, ein paar gute Ideen habe ich dazu.

Eine Frage ist nun, wie man Spam-Kommentare verhindert.

  • Kommentare ganz abschalten? Nee, macht kein Spaß. Hier kommen zwar viele Spammer und ab und zu auch Blödmänner vorbei, aber so ingesamt kommen hier so viele interessante und gute Kommentare, daß ich auf die nicht verzichten will.
  • Anlegen eines Accounts als Voraussetzung hatte ich früher mal, ist aber auch nicht der Brüller. Zu viele Leser wollten dann nicht mehr kommentieren (oder sich Passworte merken), die Anmeldepflicht stört viele. Und unter den angelegten Accounts war ungefähr 1% ernsthaft, der Rest waren Spammer-Accounts (die teils nie genutzt wurden).
  • Das aktuelle Plugin mit Cookies und JavaScript für bei den Lesern auch nicht zu uneingeschränkter Begeisterung. Bei manchen klappt’s halt nicht, und nicht alle wollen Javascript einschalten.
  • Captchas mag ich eigentlich auch nicht, siehe oben.
  • Vor ein paar Jahren habe ich mal ein Anti-Spam-Verfahren für E-Mail namens RMX gebaut, das auch funktioniert hätte, das aber darauf beruht, daß beide Beteiligte (Sender und Empfänger) mitmachen und etwas im DNS eintragen bzw. abfragen. Das ist so auf ein Blog nicht übertragbar.

Die Frage ist nun, was tun.

Tatsächlich ist es so, daß kaum Spam-Kommentare aus deutschen Netzen kommen, es sind meistens so die „üblichen Verdächtigen” unter den Ländern. Insofern könnte man tatsächlich darüber nachdenken, ob man einfach verschiedene Verfahren einbaut und die je nach Netz oder Herkunftsland unterschiedlich konfiguriert. Aber so richtig dauerhaft ist das nicht und mit viel Nachkonfiguriererei verbunden. Zudem könnte der Eindruck täuschen und nur darauf beruhen, daß meine Blogs deutschsprachig sind. Ich will aber noch eines in Englisch aufmachen und da gilt das vielleicht alles nicht mehr. Und am Ende würde man sich vielleicht gute Kommentare aus eben diesen Ländern abschneiden.

Die Frage ist eben, wie man einen Kommentator von einem menschlichen oder automatisierten Spammer unterscheidet, obwohl der gar nichts anderes macht. Hat so ein bisschen was vom Turing-Test. Vielleicht doch wieder ein RMX-Ansatz, also gar nicht Spam zu verhindern, sondern anonymes und pseudonymes Kommentieren? Damit man wenigstens weiß, wer es war? Hätte jedenfalls den angenehmen Nebeneffekt, daß eine Menge blöder Kommentare ebenfalls webbleiben. Aber leider auch einige gute. Und im Moment macht man sich sehr unbeliebt mit allem, was gegen Ano- und Pseudonymität geht.

11 Kommentare (RSS-Feed)

spam-bot-1744.20
14.8.2010 5:25
Kommentarlink

Als Anwender möchte ich sagen, daß es da große Unterschiede bei den Captchas gibt, ich als Anwender aber nicht weiß, wie zuverlässig die (noch) arbeiten.

Das reCaptcha-Dings konnte ich noch immer entziffern, und man nuß ja auch nur eins der zwei Worte erkennen.
Verblüffend finde ich auch, daß sowas einfaches wie ‘Was ist 3 + 2’ von manchen verwendet wird.

Aber viele sind eine Zumutung. Es steht schon nicht dabei, ob da nur Buchstaben oder auch Zahlen abgebildet sind, und ob Groß/Kleinschreibung eine Rolle spielt, und dann sind die Zeichen gedreht und verzerrt und wilde Striche liegen darüber, jeder Buchstabe in einem anderen Font, und mehrere Farben auch. Da soll man dann entscheiden ob es ein l ein L ein großes I ist oder eine 7.

Den Menschen erkennt man daran, daß er es dort kein zweites Mal versucht.

Ein anderes, schwieriges Captcha sehen Sie hier: Es müssen 2 Rätsel gelöst werden, um kommentieren zu dürfen: http://projecteuler.net/index.php?section=problems&id=209 – man muss aber erst einen Account anlegen, bevor man das 2. Captcha sehen darf. 🙂


Hadmut
14.8.2010 11:03
Kommentarlink

@spam-bot: Damit würde ich die Zahl der Kommentare vermutlich in den Griff kriegen…


Artikel und Kommentare vollständig trennen, in zwei verschiedene Systeme packen. Artikel im http und Kommentare im nntp, in ein Usenet, mit verteilten Servern, das gibt den Kommentatoren wirkliche Freiheit des Kommentars und befreit den Artikelschreiber von der Zensuraufgabe.

Carsten

“Versöhnung ist ein absolut sinnloser Begriff. Den Erben des judenmordenden NS-Staates kommt gar nichts anderes zu, als die schwere historische Verantwortung auf sich zu nehmen und zwar generationenlang und für immer.”
Michel Friedmann


Hadmut
14.8.2010 11:13
Kommentarlink

@Carsten: Klares Nein.

Erstens würden dann zu viele Leute nicht mehr die Kommentare lesen können. Usenet/nntp ist meines Erachtens tot, was den praktischen Nutzen angeht.

Zweitens ist das Usenet das beste Beispiel dafür, daß bei solchen unmoderierten Streitigkeiten – vor allem, wenn die Meldungen im Sekundentakt fliegen – meistens nur Streit und dummes Gerede rauskommt.

Drittens will ich sowas nicht. Ich bekomme hier ab und zu dämliche bis wüste pöbel-Kommentare, wo Leute einfach nur ihren Haß, ihre Inkompetenz oder ihren sonstigen Denkschrott hier abladen wollen und dann noch ausfällig werden, wenn der nicht innerhalb von Sekunden erscheint. Ich habe überhaupt keine Lust, solchen Leuten auch noch ein Forum zu geben, indem ich eine Newsgruppe zum Hadmut-bashing eröffne. Man löst das Problem der Moderation und der Spammerei nicht durch Kapitulation.

Viertens halte ich sowas für rechtlich viel zu heikel, weil dann jeder seinen Mist ablädt und ich dafür verantwortlich bin bzw. auf Löschen usw. in Anspruch genommen werden kann. Geht gar nicht.


Felix
14.8.2010 14:06
Kommentarlink

Ich möchte zuerst einmal festhalten, dass ein Captcha nicht unbedingt ein Bild sein muss. Die Unterscheidung von Computern und Menschen kann man ja auch anders erreichen.

Und nun mein Lösungsvorschlag (den habe ich hier vermutlich auch schonmal so ähnlich zum besten gegeben):
Zum einen würde ich eine Lösung nur für diesen Blog favorisieren, also kein plug-in. Bei einem von vielen Blogs genutzten plug-in lohnt sich die Entwicklung eines Automatismus zum umgehen vermutlich eher, als wenn man damit nur auf diesem einen Blog hier spammen kann.
Umsetzen würde ich das mit CSS. Das können die meisten Browser (Textbrowser bleiben leider außen vor) und das wird auch von den Benutzern nicht abgeschaltet. Dann macht man mehr Eingabefelder in das Formular, versteckt diese mit “display: none” und prüft hinterher, ob sie doch ausgefüllt wurden. Falls das doch jemand knackt, kann man da etwas drin rumoptimieren und gut.
Der große Vorteil für den menschlichen Benutzer: Er bekommt davon nichts mit und braucht weder Cookies noch Javascript.


In Webforen gibt es keine Diskussion, weil keine möglich ist. Zwanzig Beiträge und der Überblick ist weg. Das sind alles nur einsame Kommentare zu meist einsamen Artikeln auf einsamen Bloginseln. Daß ich hier gelegentlich was schreibe ist eine Ausnahme.

Das nntp, Usenet ist die einzige Form, die ich kenne, die überhaupt eine Diskussion ermöglicht.

Trolle jagen tut dort keiner, dafür ist jeder selbst zuständig. Ein Moderator zwingt Gruppen seine Meinug auf. Das muß in einem freien Medium der Leser entscheiden.

Das einzige Argument, das ich sehe ist, daß es ein Medienbruch ist. Das könnte man aber ändern, wenn man neu programmiert. Wieder ein tausendstes Webforum zu programmieren ist keine gute Idee. Allein die Typographie ist in jedem anders.

Selbst wenn Du ein gutes Produkt zusammenbringst ist es eine Einzellösung, die nicht einfach “verkauft” ist.

Zensur gibt im Usenet es auch nicht. Der Schreiber ist verantwortlich, nicht der Moderator.

Ein wirklich freies Diskussionsmedium wartet noch auf seine Erfindung. Es wird aber dem Usenet ähneln.

Carsten

“Die effizienteste Manipulation von Medien ist das Verschweigen, was zu selektiver Wahrnehmung führt.”
Peter Mühlbauer


pepe
14.8.2010 18:49
Kommentarlink

Seh das Problem auch schon lange so wie Carsten. Die Diskussionsfunktionen in Blogs, Online-Zeitungen und Foren sind meist ziemlich miserabel. Mir geht nicht selten eine halbe Stunde Text komplett verloren weil der Browser auf einmal mit javascript oder was-auch-immer zicken macht. Texteingabe, Quotation, max Beitraegslaenge, insgesamt gesehen unter aller Sau und weitgehend unmoeglich zu automatisieren.

Dabei haben wir die erforderlichen Infrastrukturen seit Jahrzehnten, neben dem weitgehend toten NNTP wuerde ich vor allem Mailinglisten sehen. Die kann man doch technisch ganz problemlos als Backend fuer die Kommentarfunktion nutzen. Das einzige was da technisch fehlt oder was ich jedenfalls nicht kenne, ist eine gemeinsame Bewertungsfunktion fuer Beitraege.

Das Problem ist viel mehr, dass man heute “Consumer” hat, die sich keine Birne machen und nur den Browser kennen. Und selbst die Anbieter machen sich keinen Kopf mehr sondern gehen halt irgendein PHP-Geraffel kostenlos mitbenutzen. Auf die Schnelle viel einfacher, aber langfristig auch so verdammt mittelmaessig und ineffizient…


quarc
16.8.2010 16:24
Kommentarlink

Ich fand die damalige Lösung mit Account und Passwort gar nicht so schlecht.
Zum einen konnte man sich Javascript sparen und, falls erforderlich,
auch per Lynx kommentieren. Außerdem kann man dadurch “das offene Visier”
gegenüber dem Blogbetreiber aufrechterhalten, auch wenn man die Kommentare
selbst nicht unter dem eigenen Klarnamen einstellen möchte.

Übrigens halte auch ich das Format von Web-Logs nicht so gut für
längere Diskussionen geeignet, und würde NNTP bevorzugen.
Bei Deinem Blog würden sich die Kategorien auch gut auf einzelne NG’s
abbilden lassen, und zumindest der account-gebundene Zugang würde auch
hier verhindern, dass “jeder seinen Mist ablädt”.


Hadmut
16.8.2010 19:04
Kommentarlink

Danke für das Feedback. Ich denke mal vertieft drüber nach.

Es scheint darauf hinauszulaufen, daß es mehrere Verfahren geben wird. Ohne Moderation werde ich aber auf Servern, die ich verantworte und die mit mir assoziiert werden, keine Kommentare durchlassen.

NNTP halte ich nicht für geeignet, weil es eigentlich und in erster Linie dafür gedacht ist, daß mehrere Server gegenseitig Newsartikel austauschen. Ein Szenario mit mehreren Servern gibt es hier aber nicht. Außerdem können auch nicht alle Browser damit umgehen. Ich will da schon bei HTTP bzw. HTTPS bleiben.

Mir schwebt aber schon was vor, die Diskussionen etwas abzutrennen.


Irgendwie scheinen da gerade unerwartete Zusatzfunktionalitäten von WordPress 2.3 für Unmut zu sorgen. Ich hab ja eh noch nie verstanden, wieso das so viele Leute einsetzen. Als ob der Eigengeruch davon noch nicht übel genug wäre. Ich weiß schon, wieso ich meine Blog-Software selber geschrieben habe 🙂 Aber mal ganz abgesehen davon: es ist Open Source, Leute. Wenn es euch nicht passt, dann könnt ihr es selbst entfernen.

Proudly made without PHP, Java, Perl, MySQL and Postgres


quarc
17.8.2010 17:43
Kommentarlink

Kurzer Nachtrag zu NNTP: dass hier kein Austausch mit anderen Servern
erforderlich ist, macht es ja lediglich einfacher, man bedient eben
nur die Klienten, so wie man das in grauer Vorzeit mit Uni- und
Firmeninternen News gemacht hat, wo die ganzen Artikel in lokalen
Verzeichnissen lagen (es sind ja sowieso nur mails mit ID und Refereznen).
Ich weiß jetzt nicht, welche Browser als Klienten damit Probleme haben,
weil ich für so etwas nur Newsreader verwende.

Der Hauptvorteil ist halt, dass man die einzelnen Fäden der Diskussion
genauer verfolgen kann und gezielter auf einzelne Kommentare antworten
kann. Eine Mailingliste (nebst Spiegelung nach gmane.org) wäre natürlich
auch möglich, aber da ist vielleicht die psychologische Hürde zu groß.

Wenn es nur um Spamschutz geht, könntest Du natürlich auch ausgewählte
Abschnitte aus Adele abfragen. Das ist interessanter als Captchas
per Graphik.