- La plateforme de blog gratuite Bear est devenue une cible pour les fermes de backlinks, le phishing, la vente de drogues illégales, la publicité pour des casinos en ligne et le spam de promotion crypto, en raison de sa faible barrière à l’inscription
- Les directives no-index/no-follow et l’exclusion des flux ont permis de réduire la visibilité, mais il restait difficile d’empêcher le contenu spam d’être publié sur la plateforme elle-même
- Le blocage basé sur Akismet était efficace, mais les messages de blocage donnaient aux spammeurs des indices pour le contourner
- La « frustration loop » consiste à faire perdre du temps aux spammeurs, plutôt qu’à les bloquer, en réinitialisant les formulaires, en désactivant le copier-coller, en déplaçant le focus et en affichant des erreurs répétées
- Après sa mise en place, la proportion de spam parmi les nouveaux blogs est passée d’environ 30 % à moins de 5 %, et en trois mois un seul utilisateur a signalé un problème : un annonceur de casino en ligne
Pourquoi Bear est devenu une cible du spam
- Bear est gratuit, ce qui facilite l’inscription et attire donc les spammeurs qui cherchent à exploiter la plateforme
- Le spam ressemble moins à du trafic de bots classique qu’à des fermes de spam, comme lorsqu’on achète « 100 backlinks » sur Fiverr
- Des centaines de travailleurs faiblement rémunérés soumettent du contenu un peu partout sur le Web
- L’objectif est d’améliorer le classement SEO, même si l’auteur estime que cela n’a pas d’effet réel
- Bear a mis en place une première ligne de défense afin que, même si du spam est publié, il ne soit pas exposé au reste d’Internet
- Les blogs non examinés reçoivent des balises no-index et no-follow
- Ils n’apparaissent pas non plus dans le sitemap ni dans le flux de découverte
- Les utilisateurs peuvent demander un examen pour lever cet état
- Mais au-delà du fait d’empêcher l’exposition, Bear veut aussi réduire la présence même de contenus spam au sein de la plateforme
Ralentir le contournement plutôt que bloquer
- Pour détecter le spam, Bear utilise Akismet, un outil issu de l’écosystème WordPress
- L’auteur a tenté de créer son propre système de détection avec GPT-4, mais il était moins précis qu’Akismet et coûtait plus cher
- Il est ensuite passé à un abonnement Akismet
- Le blocage au moment de l’inscription a eu un certain effet, mais avec le temps les spammeurs ont appris à s’y adapter
- Le blocage devient un signal indiquant quel contenu est détecté
- Les spammeurs donnent d’abord l’apparence d’un blog légitime, puis publient du spam dans des zones moins strictement contrôlées
- Au final, il fallait les repérer et les marquer manuellement
- Le blocage d’IP est également peu efficace
- Les spammeurs utilisent des VPN commerciaux comme Nord
- Nord VPN dispose à lui seul de centaines de serveurs dans le monde, ce qui rend le blocage par IP presque inutile
- Empêcher la publication depuis certaines IP peut aussi bloquer des utilisateurs légitimes
Fonctionnement de la « frustration loop »
- The Frustration Loop ne bloque pas directement un blog lorsqu’un spam est détecté ; elle donne plutôt l’impression d’une erreur système ou d’un échec afin d’épuiser l’utilisateur
- L’idée vient de The Password Game
- Lorsqu’un spam est détecté, le formulaire est effacé et une erreur du type « Our servers are bearly managing. Try again later. » s’affiche
- Le collage est désactivé dans toutes les zones de texte
- Toutes les 5 à 10 secondes, le focus de saisie est déplacé vers un autre champ, si bien que l’utilisateur peut se retrouver à taper au mauvais endroit
- Lors d’une nouvelle soumission, une autre erreur du type « Ensure content contains necessary parameters. » s’affiche
- Le processus se répète jusqu’à ce que l’utilisateur conclue que le logiciel est cassé et abandonne
- L’auteur estime qu’il y a peu de chances que cela se déclenche pour un utilisateur légitime
- Lors des tests, il n’a pas réussi à l’activer sans adopter explicitement un comportement suspect
- Le système a fonctionné en production pendant trois mois, et un seul utilisateur a signalé un problème
- Cet utilisateur faisait la promotion d’un casino en ligne
Résultats et failles restantes
- Après la mise en place, la proportion de spam parmi les nouveaux blogs est passée d’environ 30 % à moins de 5 %
- Ce n’est pas une solution parfaite, et il reste des améliorations à apporter ainsi que des failles à combler
- Publier cette méthode pourrait aider des spammeurs potentiels à la contourner, mais l’auteur estime qu’ils ne liront pas ce blog
1 commentaires
Avis sur Hacker News
Cela me rappelle Newsvine[2], un des premiers sites d’actualité communautaire créé en 2006 par Mike Davidson[1], un ancien collègue d’ESPN
Newsvine proposait des commentaires, des recommandations, la soumission de liens et la rédaction d’articles ; c’était une sorte de Reddit centré sur l’actualité. Pour gérer les spammeurs et les trolls, lorsqu’un utilisateur était marqué comme troll côté backend, chaque chargement de page de ce compte se voyait appliquer un délai aléatoire de 10 à 60 secondes, et je me souviens que cela réduisait assez efficacement le problème
1- http://mikeindustries.com/blog/
2- https://en.wikipedia.org/wiki/Newsvine
Une personne marquée comme troll côté backend pour des raisons totalement différentes pourrait subir des délais lorsqu’elle communique avec des représentants du gouvernement. Un délai n’est pas la même chose qu’un blocage, mais je me demande si la dégradation de l’expérience utilisateur serait suffisamment similaire aux yeux d’un juge fédéral
Historiquement, les riches, les classes protocolaires et les classes oisives ont pu acheter davantage d’attention, et ont donc continué à diffuser toutes sortes de bruit qui leur passait par la tête. Désormais, la production de contenu écrase la consommation, au point qu’il ne reste plus assez d’attention pour quoi que ce soit
Si personne ne lit 99 % des commentaires et des liens sur HN, les brillants génies qui exploitent HN nous le diront-ils ? Les plateformes ont donné à tout le monde un droit de diffusion gratuit sans même savoir ce qu’elles construisaient, et maintenant ce ne sont plus seulement les riches, mais tout le monde qui peut spammer et troller gratuitement. Il ne reste que du bruit ; il suffit de lire le rapport de l’ONU sur l’économie de l’attention
On dirait que la seule raison de l’existence de ces systèmes absurdes, qui gaspillent le temps et l’énergie de tout le monde, est que des ingénieurs logiciel à la pensée linéaire ont réussi à les rendre rapides et scalables
J’ai travaillé plus de six ans en interne chez Akismet
Akismet est très bon pour la détection du spam dans les commentaires, mais s’il avait été bon pour détecter le spam à l’inscription, il n’y aurait pas eu autant de blogs de spam sur wordpress.com
J’utilisais des moteurs de recherche, des listes de termes sélectionnés et des outils fournis par des développeurs pour traquer les blogs de spam, et j’ai suspendu des milliers de vrais blogs de spam. Il y a eu quelques erreurs de temps en temps, mais c’était rare
Plus tard, certains outils d’automatisation ont été créés, mais cette chasse et ces suspensions sont passées au second plan. Au début, wordpress.com devait paraître propre pour pouvoir grandir, puis, une fois qu’il a été jugé suffisamment grand, cela s’est arrêté. Je savais que c’était comme éteindre une voiture en flammes avec un pistolet à eau, mais cela ne prenait pas longtemps et c’était assez satisfaisant
À cette période de l’année, je fouillais les blogs de spam d’Halloween, et les blogs de spam de Christmas commençaient aussi à apparaître
J’utilise une méthode simple pour me débarrasser du spam par e-mail sans filtre tiers
J’ai un domaine personnel pour mes e-mails et un compte catch-all qui reçoit tous les messages envoyés à ce domaine. En revanche, je donne une adresse différente à chaque site et service, comme sitea@mydomain.com ou site2@mydomain.com
Cela permet de classer automatiquement les messages de façon fiable selon l’expéditeur, et je crée aussi un format de nommage cohérent pour les adresses que je donne, si bien que les e-mails aléatoires qui ne correspondent pas à ce format sont immédiatement supprimés sans même être vus
Je reçois très peu de spam, mais si un service divulgue une adresse, je change ou résilie l’adresse e-mail de ce service et j’ajoute cette adresse à la liste de blocage. C’est tellement simple que j’ai l’impression que tous les clients e-mail devraient pouvoir gérer un domaine entier de cette manière
Par exemple, si je reçois une « alerte de la banque » sur une adresse créée pour une boutique en ligne, elle ne peut pas être authentique. Une adresse compromise peut être invalidée en la supprimant de /etc/aliases
En plus de cela, mon serveur postfix est configuré pour refuser la connexion si l’expéditeur n’a pas de mappage DNS inverse. Cela fonctionnait déjà il y a 20 ans et, à en juger par les logs, c’est encore utile aujourd’hui
Par exemple, tout ce qui arrive à anything_s@mydomain.com va directement dans le dossier spam. Je l’utilise presque partout, de Google aux inscriptions sur de petits sites web. Après tout, la plupart n’envoient généralement que du spam, et lorsque je vérifie occasionnellement le dossier spam, je n’y ai jamais trouvé quelque chose d’important
La plupart des e-mails envoyés par les entreprises ordinaires ne m’intéressent pas non plus, donc je les considère comme du spam. Uber Eats envoie plusieurs messages pour chaque commande, ce qui, selon mes critères, n’est que du spam. Si c’était un service dont je me soucie vraiment, je donnerais une adresse avec un autre suffixe qui n’envoie pas vers le spam, mais cela arrive très rarement
Cela filtre bien non seulement le spam de phishing qui arrive lorsqu’un site web a divulgué l’adresse, mais aussi la plupart des e-mails du type « informations importantes au sujet d’une petite interaction » envoyés par la majorité des sites web
Le catch-all donne aux spammeurs l’impression que tous les e-mails ont été distribués avec succès, ce qui peut les pousser à continuer à renvoyer des messages et à gaspiller leurs ressources
D’après mes observations, le spam n’arrive que sur l’adresse e-mail publiée sur mon blog et sur mon adresse GitHub. Il semble que personne n’ait vendu mon adresse à des spammeurs ; ils ont simplement aspiré les adresses publiques
Les équipes anti-spam des réseaux sociaux procèdent généralement à un shadow ban des spammeurs
L’objectif est de rendre aussi difficile que possible pour le spammeur de comprendre qu’il s’est fait attraper. C’est pourquoi je pense que les techniques visant à provoquer de la frustration, ou la simple suspension de compte, ne sont pas très répandues
La lutte anti-spam est intéressante parce qu’il s’agit fondamentalement d’une course aux armements entre les entreprises qui déploient des tactiques de détection et des spammeurs sophistiqués qui utilisent des méthodes de plus en plus complexes pour y échapper. Si l’entreprise peut faire croire au spammeur qu’il n’a pas besoin de faire évoluer sa méthode, c’est bénéfique pour elle
Mon compte Instagram a été définitivement suspendu au motif que je me serais usurpé moi-même. C’était pire parce que j’ai perdu tout le compte, et après m’avoir demandé d’envoyer un selfie, ils m’ont suspendu définitivement au moment même où j’ai soumis l’image
Ils peuvent vérifier par échantillonnage si les commentaires sont visibles et supprimer automatiquement les comptes shadow bannis
Akismet n’a pas de vraie procédure d’appel qui fonctionne. Il y a très longtemps, j’ai été banni par Akismet en commentant sur mon blog
Quand je commente sur un site qui utilise Akismet, je suis filtré silencieusement. J’ai aussi été banni de Disqus pour avoir posté beaucoup de liens utiles dans les commentaires de blogs de personnes que je connais, mais eux ont réglé le problème en 2 jours et ont été très courtois
Akismet devrait au moins faire le ménage parmi les utilisateurs WordPress bannis depuis une éternité incalculable, et WordPress devrait passer à une alternative un peu moins insensée
Le fait que je ne puisse pas répondre sur mon propre blog WordPress est en réalité assez drôle, et pour moi c’est simple puisque je peux utiliser un autre moteur de blog, mais je n’aime pas trop que WordPress traite ses propres utilisateurs sur le mode « tuons un peu de spam »
Ajouter le domaine à la liste uBlock et chercher le titre sur Google ne demande qu’un clic. Aucune procédure d’appel ne peut être aussi simple et fiable
Dans l’article original, il manque la manière dont ils distinguent les utilisateurs légitimes pour éviter de les mettre dans la boucle de frustration
Il explique que bloquer le spam à l’inscription avec Akismet a marché dans une certaine mesure, mais que c’était facile à contourner, et que certains spammeurs avaient trouvé comment ressembler à des blogs normaux, ce qui obligeait à les trouver et les marquer manuellement. Ensuite, il dit qu’ils ont créé une « Frustration Loop » qui, quand du spam est détecté, fait perdre du temps aux spammeurs et les pousse à abandonner
Mais sur la question de savoir si cela ne se déclenche pas pour des utilisateurs normaux, il indique seulement qu’ils l’ont fait tourner pendant 3 mois et qu’un seul utilisateur a signalé un problème. Personnellement, c’est le passage le plus intéressant de l’article
Les mesures pour frustrer les spammeurs sont sympas en soi, mais j’aurais aimé avoir davantage de contenu sur la séparation entre spammeurs et vrais utilisateurs, ainsi que sur l’évaluation des faux positifs et faux négatifs. Je comprends qu’il soit difficile de divulguer les détails de la détection et que le sujet de l’article soit la Frustration Loop
Si Akismet répond que c’est du spam, ils activent la boucle de frustration ; j’ai trouvé ça assez malin
https://akismet.com/developers/comment-check/
Parce que le résoudre ne ferait que nuire aux métriques et aux revenus ; c’est ce que j’en suis venu à penser
Sur les formulaires de contact par mail, la protection anti-spam qui a le mieux marché était plusieurs champs de saisie texte cachés portant des noms comme « blindcopy », « bcc », « cc » ou « additional address »
Ils avaient tous une valeur par défaut, et le gestionnaire de soumission rejetait l’envoi s’il détectait que la valeur de ces champs avait changé par rapport à la valeur par défaut. Je crois ne pas avoir reçu un seul faux e-mail via ce formulaire
J’avais ajouté à un formulaire de contact un champ caché sans texte, avec un avertissement poli en texte d’aide pour l’accessibilité. Si quelque chose était rempli dans ce champ, je le jetais silencieusement, et le contenu saisi m’était envoyé en copie ; je crois avoir reçu 0 spam pendant les quelque 8 ans où le formulaire a été en ligne
Je me demande toutefois comment les gestionnaires de mots de passe ou l’autocomplétion évitent de tomber dedans. Peuvent-ils détecter que le champ n’est pas visible ?
Échantillonnent-ils le contenu saisi par les utilisateurs « frustrés » pour vérifier qu’il s’agit réellement de contenu légitime ? Ont-ils des taux de faux positifs et de faux négatifs ? Ont-ils aussi regardé si le nombre total d’inscriptions légitimes avait baissé ou augmenté ?
Cette approche n’est pas utilisée par eux seuls. Beaucoup de pages, lorsqu’on utilise un VPN, échouent sans même afficher d’erreur, de façon silencieuse mais frustrante. Quand on désactive le VPN, tout fonctionne comme par magie. Etsy aussi, pendant un temps, renvoyait une page blanche avec un VPN, ce qui était extrêmement frustrant
Instagram a une boucle de frustration. Je le sais parce qu’elle se déclenche sur mon compte
À chacune de mes actions, aussi insignifiante soit-elle, il me force à me reconnecter. Que je clique sur un lien ou que je fasse quoi que ce soit, je dois passer par l’écran de connexion à chaque fois
Au début, cela a commencé par « une activité suspecte a été détectée sur votre compte », puis « votre compte a été désactivé » est apparu. Il ne donne pas la vraie raison, mais la seule raison plausible indiquée dans les règles officielles serait d’avoir publié quelque chose qui offense quelqu’un
Sauf qu’il y a un problème avec cette explication. Je n’ai jamais rien publié. Tout ce que je fais sur Instagram, c’est suivre quelques personnes. Après avoir saisi un code et même envoyé une photo de moi, j’ai récupéré l’accès à mon compte, mais maintenant je dois me reconnecter quoi que je fasse. J’ai du mal à croire que ce soit un hasard ou un bug ; on dirait clairement qu’ils m’ont identifié comme une personne problématique, mais faute de preuves pour m’exécuter, ils me punissent pour une infraction imaginaire
La cause est probablement que j’ai parfois suivi des liens vers des photos Instagram. Le fait que ce soit une partie de Meta pose aussi problème : si je fermais complètement Instagram, je perdrais aussi l’accès à mon compte Facebook, que j’utilise pour rester en contact avec quelques amis éloignés
Le monde a quitté Facebook et tout le monde est désormais sur Instagram. Je l’aurais probablement fait aussi, si Instagram me l’avait permis
Je vois dire que la détection du spam est une guerre de créativité entre spammeurs et détecteurs ; avec Akismet, c’est peut-être vrai. Mais pour un site web qui offre un endroit où les spammeurs peuvent se rassembler, ce n’est plus ce schéma
C’est une concurrence entre mon blog/site web et les autres blogs/sites web. Si je suis mieux protégé que mes voisins, les spammeurs iront chez eux. C’est encore plus vrai lorsqu’il s’agit de bloquer non pas des bots, mais des fermes à clics
Comme dans la blague, en forêt, inutile de courir plus vite que l’ours : il suffit de ne pas être le plus lent du groupe