5 Punkte von GN⁺ 5 시간 전 | 1 Kommentare | Auf WhatsApp teilen
  • Durch einen vorübergehenden Fehler auf Reddit im Jahr 2021 wurden in Relay for reddit löschungsgründe des siteweiten Spam-Filters und interne Bewertungsdaten sichtbar, die normalerweise als Removed: Auto verborgen waren
  • Laut dem öffentlichen Archivcode werden Löschinformationen über ban_info.banner weitergegeben; Relay zeigte banned_by=true aus der API als Auto an, doch offenbar trat das Problem auf, als dasselbe Feld interne Gründe enthielt
  • Zu den offengelegten Gründen gehörten domain, spammit, banned user, shadowban, spamurai und weitere; bei spamurai waren sogar Kontenalter, Karma, Anzahl der Meldungen, ISP, E-Mail-Domain, User-Agent, Sprach-Header, TLS-Fingerprint, Referrer und bis hin zum Perspective-API-Score enthalten
  • Der SPAM-Score der Google-Perspective API stimmte fast exakt mit den Reddit-Löschlog-Werten überein; zudem zeigte sich, dass sich die Werte durch das Hinzufügen kurzer Zeichenfolgen, den Austausch durch kyrillische Zeichen sowie durch Ignorieren von Groß-/Kleinschreibung und Zahlen stark verändern konnten
  • Reddits Anti-Spam-System wirkt wie ein mehrgenerationelles Gemisch aus Python-2.7-basierten Prüfungen, regelbasiertem Lua in REV1/REV2, Snooron sowie OCR- und Bildklassifizierungs-Tools; 2026 wird das Offenlegungsrisiko als geringer eingeschätzt, weil die Perspective API eingestellt wird und LLM-basierter Spam die Lage verändert hat

2021 sichtbar gewordene Löschgründe

  • Ein Nutzer, der Moderator auf Reddit war, erhielt 2021 in der App Relay for reddit Benachrichtigungen über entfernten Spam und sah dabei interne Anti-Spam-Nachrichten, die normalerweise nicht sichtbar sein sollten
  • In der normalen Moderatoransicht werden automatische Spam-Entfernungen als Removed: Auto angezeigt, doch damals erschienen die tatsächlichen Löschgründe und internen Daten in rotem Text
  • Etwa eine Stunde später war das Verhalten wieder normal, und übrig blieben nur die damals aufgenommenen Screenshots

Reddit-Moderation und die Anzeige Auto

  • In den Reddit-Untergemeinschaften, den Subreddits, übernehmen Community-Moderatoren das Entfernen von Beiträgen, das Sperren von Nutzern, die Verwaltung von Modmail und mehr
  • Moderatoren können sehen, von wem ein Beitrag oder Kommentar entfernt wurde
    • Eine normale Moderator-Entfernung wird mit dem Namen des Moderators angezeigt
    • Eine Entfernung durch AutoModerator wird als AutoModerator angezeigt
    • Entfernungen durch den siteweiten Spam-Filter oder durch Reddit-Administratoren können als Auto erscheinen
  • Im Moderationslog erscheinen siteweite Entfernungen als reddit oder Anti-Evil Operations

Der Offenlegungspfad laut öffentlichem Archivcode

  • Reddit veröffentlichte bis 2017 seinen Quellcode, und anhand dieses Archivcodes lässt sich ein Teil des Ablaufs bei Entfernungen nachvollziehen
  • Die Moderator-Entfernungsfunktion POST_remove ruft admintools.spam auf
    • moderator_banned unterscheidet, ob die Entfernung durch einen Moderator oder einen Administrator erfolgte
    • banner speichert den Benutzernamen des Kontos, das die Entfernung durchgeführt hat
  • get_mod_attributes exportiert ban_info entfernter Elemente in die API-Antwort
    • Wenn ein Moderator etwas entfernt hat, wird der Wert von banner als banned_by zurückgegeben
    • Wenn ein Administrator etwas entfernt hat, wird statt des echten Namens True zurückgegeben
  • Relay for reddit ersetzt laut dekompiliertem Code bannedBy, wenn es "true" ist, durch die Zeichenfolge Auto
  • In Reddit gab es beim Einreichen von Links auch einen Codepfad, der bei erkannten verbotenen Domains interne Gründe wie banner = "domain (REASON)" in das Feld banner schrieb
  • Das banner-Feld mit internem Löschgrund sollte eigentlich nur für siteweite Administratoren sichtbar sein, wurde aber vermutlich durch einen Fehler in einem ähnlichen Codepfad Moderatoren offengelegt

Kategorien der offengelegten Löschgründe

  • domain

    • Domainbasierte Entfernungen sind eine Kategorie, die sich auch im öffentlichen Code nachvollziehen lässt
    • Meist erschienen sie als Removed: domain (spam), in manchen Fällen aber mit konkreteren Notizen
    • 2012 gab es einen Fall, in dem bestimmte Domains im Rahmen eines Tumblr-bezogenen Spam-Experiments entfernt wurden
    • Auch Formulierungen wie le sexxxxy sex spam tauchten als Löschgrund auf
  • spammit

    • spammit scheint eine Kategorie zu sein, die Beiträge analysiert und einen Spam-Wahrscheinlichkeitswert in Prozent anhängt
    • In bestätigten Fällen reichten die Werte von 39.71% bis 98.19%
    • In den betreffenden Subreddits wurden auch normale Imgur-Posts häufig mit 70–98 % Spam-Score entfernt, weshalb die Genauigkeit nicht besonders hoch wirkte
  • Gesperrte Nutzer und Shadowban

    • Es gab Entfernungen wie Removed: banned user oder Removed: Reddit (banall performed)
    • Diese Fälle wirkten meist wie klarer Spam, etwa Links auf werbliche Dienste
    • Beiträge von shadowbangebannten Nutzern wurden als Removed: Reddit (shadowban applied on Datum) angezeigt
    • Ein Shadowban ist eine stille Sperre, bei der Nutzer weiter posten zu können scheinen, ihre Beiträge und Kommentare aber für andere unsichtbar sind

Die internen Bewertungsdaten, die spamurai offenlegte

  • spamurai ist unter den offengelegten Kategorien der Eintrag mit den meisten internen Daten
  • In öffentlich zugänglichen Präsentationsunterlagen hieß es, Reddit nutze für „ML“ Minsky und für „Rules“ Spamurai
  • spamurai-Löschgründe enthielten sowohl einfache Regeln als auch detaillierte Datendumps
    • Der Name echelon, offenbar ein Untersystem, tauchte bei bestimmten Keyword-Entfernungen auf
    • Es gab einen Fall, in dem ein Konto unter 30 Minuten Alter einen Kommentar postete, der auf Spam-Bedingungen passte und entfernt wurde
    • Sichtbar waren konkrete Regeln zu verdächtigem Shirt-Affiliate-Spam, URL-only-Kommentaren und Kommentaren mit hohem Perspective-Score
  • Felder im spamurai-Datendump

    • link t3_... oder comment t1_... ist Reddits fullname ID
    • t1 ist ein Kommentar
    • t2 ist ein Nutzer
    • t3 ist ein Beitrag
    • t4 ist eine private Nachricht
    • t5 ist ein Subreddit
    • Der Wert perspective spam ließ sich als SPAM-Score der Google-Perspective API bestätigen
    • Es waren kontobezogene Daten enthalten
      • Kontenalter
      • spammy-Score
      • Karma
      • Anzahl der Meldungen
      • E-Mail-Domain
      • ISP oder Organisationsname
    • Auch Verbindungs- und Umgebungsdaten waren enthalten
      • Nutzung von oauth.reddit.com
      • User-Agent
      • Sprach-Header LANG
      • Referrer
      • RHS, offenbar ein Browser-Fingerprint
      • ein Wert, der wie ein TLS-Fingerprint aussieht
      • Thumbnail-URL
      • Beitragstext oder Kommentartext
      • ursprünglicher Reddit-Link

Perspective API und Umgehungsmöglichkeiten

  • Der Wert 0.12571795 perspective spam in den Reddit-Logs stimmt praktisch exakt mit einem Aufruf des SPAM-Attributs der Perspective API überein
  • Bei einem Aufruf der Perspective API mit demselben Text wurde 0.12571794 zurückgegeben; die Differenz von 0.00000001 kann als Rundungsfehler gelten
  • Auch das Format der Beispielwerte in der Perspective-Dokumentation und ein vom Reddit-CTO zitiertes Beispiel gelten als Indizien dafür, dass Reddit Perspective nutzte
  • Das SPAM-Attribut von Perspective ist keine Toxizitätserkennung, sondern ein experimentelles Attribut zur Spamerkennung und laut Dokumentation auf einem einzelnen Datensatz aus New-York-Times-Kommentaren und Moderationsdaten trainiert
  • Seit Februar 2026 können in Google Cloud keine neuen Perspective-API-Projekte mehr erstellt werden, was neue Tests erschwert
  • Empfindliche Veränderungen der SPAM-Scores

    • Die Perspective-SPAM-Scores änderten sich in manchen Fällen stark, wenn nur wenige Zeichen hinzugefügt wurden
    • Puppygirl Consulting is the best way to grow your revenue ergibt 0.8638981
    • Mit angehängtem qp fällt der Wert auf 0.010811162
    • Die Ergebnisse deuten darauf hin, dass Zahlen sowie Groß-/Kleinschreibung ignoriert werden
    • Auch beim Ändern der Ziffern einer Telefonnummer und der Groß-/Kleinschreibung wurde derselbe Score zurückgegeben
    • Einige andere Schriftsysteme wurden ebenfalls mit demselben Score behandelt
    • Unterschiedliche kyrillische Zeichenfolgen erhielten denselben Wert von 0.35077864
    • Wenn in Buy my product das lateinische p durch das kyrillische р ersetzt wird, sinkt der Score von 0.6473346 auf 0.4452748
    • Wer Nachrichten anhand der öffentlichen API schrittweise veränderte, konnte möglicherweise einen der zentralen Bewertungsmaßstäbe von spamurai umgehen

Einbezug von Nutzermeldungen und Moderatorfreigaben

  • spamurai scheint auch Nutzermeldungen in seine Löschregeln einzubeziehen
  • Der Grund REPORT: High spam perspective score on comment with hyperlink reported for spam deutet darauf hin, dass ein Hyperlink-Kommentar, der als Spam gemeldet wurde, wegen eines hohen Perspective-Scores entfernt wurde und von einem Moderator wieder freigegeben werden konnte
  • Bei bestimmten Löschgründen erschien ein Hinweis, dass zukünftige Entfernungen abnehmen, wenn ein Moderator diesen Inhalt freigibt
  • Das Argument train_spam in admintools.spam im öffentlichen Reddit-Code entscheidet, ob Moderatoraktionen für das Training des Anti-Spam-Systems verwendet werden
  • Daraus lässt sich schließen, dass das Freigeben legitimer Beiträge in einem Subreddit helfen kann, False Positives zu reduzieren

Weitere Löschregeln und URL-Prüfung

  • Es gab Entfernungen von Pinterest-Redirect-Links, mega.nz-Links und Links mit frei erstellbaren Subdomains
  • Unter den entfernten mega.nz-Links befanden sich auch legitime Fälle wie archivierte YouTube-Videos, also False Positives
  • Im Fall Matched forbidden regex u'torenteu' wurde etwas entfernt, obwohl torenteu nicht direkt im Text vorkam
    • Reddit verwendete unidecode, um Unicode-Zeichenfolgen in ASCII umzuwandeln
    • Das koreanische 토렌.트 konnte nach Umwandlung und weiterer Verarbeitung mit torenteu übereinstimmen
  • Im Fall Failed inspection: Phrase(s) [u'UA-49307539-'] zeigte sich, dass nicht der Kommentartext oder der umgewandelte Text übereinstimmte, sondern eine Google-Analytics-ID im HTML der per Redirect erreichten Seite
  • inspection scheint ein Vorgang zu sein, bei dem Reddit eine URL öffnet, Weiterleitungen verfolgt und anschließend auf der Seite nach Mustern sucht
  • Als auf einem Testkonto ein Link zu einer Webseite mit dieser Zeichenfolge gepostet wurde, wurde ein fünf Jahre altes Konto sofort gesperrt und seine Posting-Historie gelöscht
    • Bei einem Freundeskonto mit umfangreicherer Aktivität ließ sich derselbe Effekt nicht reproduzieren
    • Da unklar ist, ob der Filter noch aktiv war oder die Kontosperre Zufall war, wurde die tatsächliche Zeichenfolge verändert veröffentlicht

Frühere und aktuelle Bausteine von Reddits Anti-Spam-System

  • Im Reddit-Engineering-Beitrag von 2023, Protecting Reddit Users in Real Time at Scale, werden Rule-Executor-V1, REV2 und Snooron erwähnt
  • Die rekonstruierte Zeitleiste sieht so aus
    • REV1 wurde 2016 entwickelt
    • Snooron wurde 2021 gebaut, um REV1 zu modernisieren
    • Etwa zwei Jahre später erfolgte die Migration auf REV2
  • REV1 und REV2 arbeiten mit Lua-Regeln; Zeichenfolgen wie nil und der zeitliche Kontext legen eine mögliche Verbindung zu spamurai nahe
  • Python-2.7-Unicode-Strings wie u'torenteu' oder u'UA-49307539-' könnten auf Python-2.7-basierte Prüfungen außerhalb von spamurai oder auf einen separaten URL-Prüfcode hindeuten, den REV1 aufruft
  • Laut zugehörigem Vortrag läuft Snooron auf Flink Stateful Functions, führt Bildklassifizierung und OCR aus und verwendet Python 3 auf den Workern
  • Laut Reddit-Dokumenten zur Australian-eSafety-Regulierung von 2024 nutzt Reddit für OCR sowie Bild- und Videoklassifizierung Hive AI und die Google Vision OCR API
  • Hive OCR unterstützt 12 Sprachen; Google OCR wird zusätzlich für breitere Sprachunterstützung eingesetzt, und Reddit arbeitet laut den Unterlagen auch an einem internen Tool mit Unterstützung für 80 Sprachen
  • In einem Ticket von 2009 wurde crm114 als Spam-Filter bestätigt, der Moderatortraining unterstützt; CRM114 ist eine ältere Open-Source-Software zur Spam-Klassifizierung

Warum die Veröffentlichung 2026 erfolgte

  • Nach Einschätzung des Autors hätte eine Veröffentlichung dieser Informationen im Jahr 2021 Reddits Spam-Problem schwer verschärfen können
  • 2026 steht die Perspective API is shutting down vor der Abschaltung zum Jahresende, sodass Reddit selbst bei weiterer Nutzung bald migrieren müsste
  • Da LLMs die Spam-Industrie verändert haben, wird angenommen, dass Reddit sein Anti-Spam-System bis 2026 stark umgebaut hat
  • Deshalb wird das Risiko einer Veröffentlichung dieser Informationen im Jahr 2026 als gering eingeschätzt

1 Kommentare

 
GN⁺ 5 시간 전
Meinungen auf Lobste.rs
  • Interessantes Material und eine spannende Untersuchung. Wie auch im Fazit erwähnt, bekommt man selten Gelegenheit, die Details solcher Anti-Missbrauchsmechanismen zu sehen; besonders aufgefallen ist mir dabei Lyras außergewöhnlich geschickter Umgang mit CSS.
    Die Zensurbalken und roten Kreise in der nachgebauten Reddit-UI sahen für mich zunächst wie ein Screenshot aus, waren tatsächlich aber ein vollständig interaktives Mock-up.

    • Bis ich diesen Kommentar gelesen habe, hatte ich überhaupt nicht bemerkt, dass es kein Bild ist.
  • Ich freue mich immer, wenn ein neuer Blogpost erscheint. Der Inhalt ist wirklich interessant, und die Fähigkeit, andere UIs nachzubauen, ist großartig.
    Bisher habe ich mindestens ein Easter Egg gefunden.

    • Danke. In diesen Beitrag habe ich ziemlich viele davon eingebaut ;)
  • Die Stelle war wirklich heftig, in der die Zeichenfolge <pre>UA-49307539-2</pre> auf der Website gepostet und auf Reddit verlinkt wurde, um es mit dem eigenen Account zu testen, woraufhin ein fünf Jahre alter Test-Account sofort gesperrt und die gesamte Posting-Historie gelöscht wurde.
    Deshalb wurde die echte Nummer wohl zu UA-49307539- geändert, um keinen Text zu veröffentlichen, der Accounts töten kann; ich hoffe, dieser Account war wirklich nur zum Testen da und nichts Wichtiges hing daran.

  • Wenn ich versuche, es in Mobile Safari auf der neuesten iOS-Developer-Beta auf einem iPhone 16 Pro unter <url> zu öffnen, bekomme ich den Fehler „a problem repeatedly occurred“ und kann es nicht ansehen.

    • Ich habe keine Ahnung, warum das passiert, und gerade auch kein iPhone zur Hand.
      Ich wäre sehr dankbar, wenn jemand das HTML per binärer Suche durchgehen und die Ursache des Absturzes finden könnte.
  • Für alle, die sich fragen: Der enthaltene Perspective-API-Schlüssel ist nicht gültig.

    • Dass die in bans (2016 - present) als Spam-Beispiel zensierte Beratungsfirma Puppygirl Consulting heißt, ist für DevTools-Süchtige ein Hinweis darauf, dass die zensierten Stellen vermutlich gefälscht oder Easter Eggs sind :^)