5 puntos por GN⁺ 4 시간 전 | 1 comentarios | Compartir por WhatsApp
  • Debido a lo que parece haber sido un error temporal de Reddit en 2021, en Relay for reddit quedaron expuestos los motivos de eliminación de spam a nivel de todo el sitio y datos internos de evaluación que normalmente se ocultaban como Removed: Auto
  • En el código del archivo público, la información de eliminación se transmite mediante ban_info.banner; Relay mostraba banned_by=true como Auto, pero el problema parece haber surgido cuando en ese mismo campo aparecieron motivos internos
  • Entre los motivos expuestos estaban domain, spammit, banned user, shadowban, spamurai, entre otros; spamurai incluía incluso antigüedad de la cuenta, karma, cantidad de reportes, ISP, dominio de correo, User-Agent, encabezado de idioma, huella TLS, referrer y puntaje de Perspective API
  • El puntaje de SPAM de Google Perspective API coincidía casi exactamente con los valores de los registros de eliminación de Reddit, y se observaron casos en los que el puntaje variaba mucho por características como agregar unos pocos caracteres, reemplazar letras por cirílicas o ignorar mayúsculas/minúsculas y números
  • El antispam de Reddit parece ser un sistema de varias generaciones que mezcla verificaciones basadas en Python 2.7, REV1/REV2 basados en reglas Lua, Snooron y herramientas de OCR y clasificación de imágenes; para 2026, se considera que el riesgo de divulgación bajó por el cierre de Perspective API y los cambios en el spam basado en LLM

Motivos de eliminación revelados en 2021

  • Un usuario que era moderador de Reddit, mientras recibía notificaciones de spam eliminado en la app Relay for reddit en 2021, vio mensajes internos del antispam que normalmente no deberían ser visibles
  • En la pantalla habitual de moderadores, una eliminación automática por spam se muestra como Removed: Auto, pero en ese momento el motivo real de eliminación y los datos internos aparecían en texto rojo
  • El fenómeno volvió a la normalidad alrededor de una hora después, y el único material restante son capturas de pantalla tomadas en ese momento

Moderación de Reddit y forma de mostrar Auto

  • En los subreddits, las subcomunidades de Reddit, los moderadores de la comunidad se encargan de eliminar publicaciones, bloquear usuarios, administrar modmail, etc.
  • Los moderadores pueden ver quién eliminó una publicación o comentario
    • Las eliminaciones realizadas por un moderador común se muestran con el nombre del moderador
    • Las eliminaciones de AutoModerator se muestran como AutoModerator
    • Las eliminaciones hechas por el filtro de spam de todo el sitio de Reddit o por administradores pueden mostrarse como Auto
  • En el registro de moderación, las eliminaciones a nivel de todo el sitio aparecen como reddit o Anti-Evil Operations

Ruta de exposición vista desde el código del archivo público

  • Reddit publicó su código fuente hasta 2017, y con ese código archivado se puede rastrear parte del flujo de procesamiento de eliminaciones
  • La función de eliminación de moderadores POST_remove llama a admintools.spam
    • moderator_banned distingue si quien elimina es un moderador o un administrador
    • banner registra el nombre de usuario de quien ejecutó la eliminación
  • get_mod_attributes exporta el ban_info del elemento eliminado en la respuesta de la API
    • Si lo eliminó un moderador, devuelve el valor de banner como banned_by
    • Si lo eliminó un administrador, devuelve True en lugar del nombre real
  • Según el código descompilado, Relay for reddit cambiaba bannedBy a la cadena Auto cuando era "true"
  • En Reddit también existía una ruta de código que, al detectar un dominio prohibido al enviar un enlace, ponía el motivo interno en el campo banner, como banner = "domain (REASON)"
  • El campo banner con el motivo interno de eliminación debía mostrarse originalmente solo a administradores de todo el sitio, pero se presume que quedó expuesto a moderadores por un error en una ruta de código similar

Categorías de motivos de eliminación expuestos

  • domain

    • Las eliminaciones basadas en dominio son una categoría que también puede confirmarse en el código público
    • La mayoría tenía la forma Removed: domain (spam), pero en algunos casos incluía notas específicas
    • Hubo un caso en 2012 en el que se eliminó un dominio específico para un experimento de spam relacionado con Tumblr
    • Frases como le sexxxxy sex spam también aparecían como motivo de eliminación
  • spammit

    • spammit parece ser una categoría que analiza publicaciones y les asigna un porcentaje de probabilidad de spam
    • En los casos de eliminación confirmados, los puntajes iban desde 39.71% hasta 98.19%
    • En esos subreddits, muchas publicaciones legítimas de Imgur también fueron eliminadas con puntajes de spam de 70 a 98%, por lo que la precisión no parecía alta
  • Usuarios bloqueados y shadowban

    • Hubo eliminaciones con la forma Removed: banned user o Removed: Reddit (banall performed)
    • Esos casos parecían ser en su mayoría publicaciones de spam evidente, como enlaces a servicios publicitarios
    • Las publicaciones de usuarios con shadowban se mostraban como Removed: Reddit (shadowban applied on fecha)
    • Un shadowban es un bloqueo silencioso en el que el usuario cree que todavía puede publicar, pero sus publicaciones y comentarios no son visibles para otras personas

Datos internos de evaluación revelados por spamurai

  • spamurai es el elemento que más datos internos incluía entre las categorías expuestas
  • En materiales públicos de presentación se decía que Reddit usaba Minsky para “ML” y Spamurai para “Rules”
  • Los motivos de eliminación de spamurai incluían reglas simples junto con volcados detallados de datos
    • Un nombre que parece ser un subsistema llamado echelon aparecía en eliminaciones por palabras clave específicas
    • Hubo casos de eliminación cuando cuentas de menos de 30 minutos publicaban comentarios que cumplían condiciones de spam
    • Se veían reglas concretas como spam sospechoso de afiliados de camisetas, comentarios solo con URL y comentarios con puntajes altos de Perspective
  • Elementos del volcado de datos de spamurai

    • link t3_... o comment t1_... son fullname IDs de Reddit
    • t1 es comentario
    • t2 es usuario
    • t3 es publicación
    • t4 es private message
    • t5 es subreddit
    • El valor perspective spam se confirmó como el puntaje de SPAM de Google Perspective API
    • Incluía datos relacionados con la cuenta
      • Antigüedad de la cuenta
      • Puntaje spammy
      • karma
      • Cantidad de reportes
      • Dominio de correo
      • ISP o nombre de la organización
    • También contenía datos de conexión y entorno
      • Si se usaba oauth.reddit.com
      • User-Agent
      • Encabezado de idioma LANG
      • referrer
      • RHS, que parece ser una huella del navegador
      • Un valor que parece ser una huella TLS
      • URL de miniatura
      • Cuerpo de la publicación o comentario
      • Enlace original de Reddit

Perspective API y posibilidad de evasión

  • El valor 0.12571795 perspective spam de los registros de Reddit coincide prácticamente con el resultado de llamar al atributo SPAM de Perspective API
  • Al llamar a Perspective API con el mismo texto, devolvió 0.12571794, y la diferencia de 0.00000001 puede considerarse un error de redondeo
  • El formato de puntajes de ejemplo en la documentación de Perspective y una cita de un caso por parte del CTO de Reddit también se usan como indicios de que Reddit utilizaba Perspective
  • El atributo SPAM de Perspective no está destinado a detección de toxicidad, sino que es un atributo experimental para detectar spam, y se indica que fue entrenado con un único conjunto de datos de comentarios del New York Times y datos de moderación
  • Desde febrero de 2026 ya no se pueden crear nuevos proyectos de Perspective API en Google Cloud, por lo que se volvió difícil probarlo de nuevo
  • Cambios sensibles en el puntaje de SPAM

    • Hubo casos en los que el puntaje SPAM de Perspective cambiaba mucho con solo agregar unas pocas letras
    • Puppygirl Consulting is the best way to grow your revenue da 0.8638981
    • Si se agrega qp al final, baja a 0.010811162
    • Los resultados parecían indicar que números y mayúsculas/minúsculas se ignoran
    • Cambiar los dígitos de un número telefónico y las mayúsculas/minúsculas devolvía el mismo puntaje
    • Algunos otros sistemas de escritura también se procesaban con el mismo puntaje
    • Cadenas distintas en cirílico recibían el mismo puntaje 0.35077864
    • En Buy my product, al cambiar la p latina por la р cirílica, el puntaje bajaba de 0.6473346 a 0.4452748
    • Es posible que, modificando poco a poco los mensajes tomando como referencia la API pública, se pudiera evadir uno de los principales criterios de decisión de spamurai

Reflejo de reportes de usuarios y aprobaciones de moderadores

  • spamurai parece incorporar también reportes de usuarios en sus reglas de eliminación
  • El motivo REPORT: High spam perspective score on comment with hyperlink reported for spam indica que un comentario con hipervínculo reportado como spam fue eliminado por tener un puntaje alto de Perspective, y que un moderador podía volver a aprobarlo
  • Algunos motivos de eliminación incluían una frase que decía que “si un moderador aprueba este contenido, habrá menos eliminaciones en el futuro”
  • El argumento train_spam en admintools.spam del código público de Reddit determina si se usarán las acciones de moderadores para entrenar el antispam
  • Puede interpretarse que aprobar publicaciones legítimas en un subreddit podría ayudar a reducir falsos positivos

Otras reglas de eliminación e inspección de URLs

  • También hubo casos de eliminación de enlaces de redirección de Pinterest, enlaces de mega.nz y enlaces relacionados con subdominios que pueden crearse libremente
  • Entre las eliminaciones de enlaces de mega.nz, también hubo un caso legítimo que en realidad era un enlace a un video archivado de YouTube, por lo que hubo falsos positivos
  • En el caso Matched forbidden regex u'torenteu', el texto no contenía directamente torenteu, pero fue eliminado
    • Reddit usa unidecode para convertir cadenas Unicode a ASCII
    • La cadena coreana 토렌.트 podía convertirse y procesarse adicionalmente hasta coincidir con torenteu
  • El caso Failed inspection: Phrase(s) [u'UA-49307539-'] no parecía coincidir con el cuerpo del comentario ni con el texto convertido, sino con el ID de Google Analytics dentro del HTML de la página a la que redirigía el enlace
  • inspection parece ser una operación en la que Reddit abre la URL, sigue redirecciones y busca patrones en la página
  • Al publicar con una cuenta de prueba un enlace a una página web que contenía esa cadena, una cuenta de 5 años fue bloqueada de inmediato y su historial de publicaciones fue eliminado
    • No se pudo reproducir lo mismo con la cuenta de un amigo que tenía más historial de actividad
    • Como no estaba claro si ese filtro seguía activo ni si el bloqueo de la cuenta fue casualidad, la cadena real fue modificada antes de publicarse

Componentes pasados y actuales del antispam de Reddit

  • En la publicación de Reddit Engineering de 2023 Protecting Reddit Users in Real Time at Scale aparecen Rule-Executor-V1, REV2 y Snooron
  • La línea de tiempo entendida es la siguiente
    • REV1 se creó en 2016
    • Snooron se desarrolló en 2021 para modernizar REV1
    • Luego, aproximadamente dos años después, se migró a REV2
  • REV1 y REV2 funcionan con reglas Lua, y por cadenas como nil y por la época podrían estar conectados con spamurai
  • Cadenas Unicode de Python 2.7 como u'torenteu' y u'UA-49307539-' podrían corresponder a código de inspección basado en Python 2.7 externo a spamurai, o a código separado de inspección de URLs llamado por REV1
  • Según una presentación relacionada, Snooron funciona sobre Flink Stateful Functions, realiza clasificación de imágenes y OCR, y usa Python 3 en los workers
  • A 2024, Reddit indicó en documentos de Australian eSafety que usa Hive AI y Google Vision OCR API para OCR y clasificación de imágenes y videos
  • Se indica que Hive OCR soporta 12 idiomas y Google OCR se usa en conjunto para admitir más idiomas; Reddit también trabaja en una herramienta interna que soporta 80 idiomas
  • En un ticket de 2009 se confirmó que un usuario llamado crm114 era un filtro de spam entrenable por moderadores, y CRM114 es un antiguo software open source de clasificación de spam

Por qué se publicó en 2026

  • Se consideró que, si esta información se hubiera publicado en 2021, podría haber sido devastadora para el problema de spam de Reddit
  • En 2026, Perspective API is shutting down tiene previsto cerrar a fin de año, por lo que, incluso si Reddit aún la usa, pronto tendrá que migrar
  • Como los LLM cambiaron la industria del spam, se estima que Reddit probablemente reformó mucho su sistema antispam para adaptarlo a 2026
  • Por estas razones, se considera que actualmente, en 2026, el riesgo de publicar esta información es bajo

1 comentarios

 
GN⁺ 4 시간 전
Opiniones en Lobste.rs
  • Material e investigación interesantes. Como se menciona también en la conclusión, rara vez se tiene la oportunidad de ver los detalles de estos mecanismos antiabuso, y lo que llamó especialmente la atención fue el particular dominio de CSS de Lyra.
    Las barras de censura y los círculos rojos de la UI reconstruida de Reddit al principio parecían capturas de pantalla, pero en realidad eran una maqueta totalmente interactiva.

    • Hasta leer este comentario, no me había dado cuenta en absoluto de que no era una imagen.
  • Siempre espero con ganas cada nueva publicación del blog. El contenido también es realmente interesante, y la habilidad para recrear otras UI es excelente.
    Hasta ahora encontré al menos un easter egg.

    • Gracias. En este artículo puse bastantes de esas cosas ;)
  • Fue bastante fuerte la parte donde, para probarlo con su propia cuenta, subió la cadena <pre>UA-49307539-2</pre> a un sitio web y la enlazó en Reddit, y una cuenta de prueba de 5 años fue suspendida de inmediato y todo su historial de publicaciones eliminado.
    Por eso dice que cambió el número real a UA-49307539- para no publicar texto que pueda matar cuentas; espero que esa cuenta realmente fuera de prueba y no tuviera nada importante.

  • Al intentar abrirlo en Mobile Safari con la beta para desarrolladores más reciente de iOS en un iPhone 16 Pro, aparece en <url> el error “a problem repeatedly occurred” y no se puede ver.

    • No tengo ni idea de por qué pasa eso, y ahora mismo tampoco tengo un iPhone a mano.
      Si alguien pudiera hacer una búsqueda binaria del HTML para encontrar la causa del fallo, se lo agradecería muchísimo.
  • Para quienes tengan curiosidad: la clave de Perspective API incluida no es válida.

    • Al ver que, en bans (2016 - present), la consultora censurada como ejemplo de spam es Puppygirl Consulting, los adictos a las herramientas de desarrollador pueden tomarlo como una pista de que las partes censuradas probablemente sean falsas o easter eggs :^)