1 points par GN⁺ 2025-06-10 | 1 commentaires | Partager sur WhatsApp
  • L’opérateur de FSE a retracé, à partir de logs et d’e-mails, le fil qui relie l’arrivée d’utilisateurs illégaux sur son instance du fédiverse au scraping par BoardReader/SocialGist, puis à une demande d’information du FBI
  • Le point de départ du problème était les résultats de recherche de BoardReader, qui faisaient apparaître des publications de serveurs externes comme si elles venaient de FSE ; selon lui, cela a provoqué à la fois l’arrivée d’utilisateurs illégaux et une attribution erronée
  • BoardReader masquait son User-Agent, utilisait des proxys résidentiels, Tor et la rejouabilité de sessions de navigateur, et scrapait /api/v1/timelines/public?local=false ; même après blocage, les requêtes ont continué, augmentant la charge serveur et les coûts
  • Le FBI a envoyé le 14 mars 2023 une Emergency Disclosure Request concernant WitchKingOfAngmar, mais ce compte appartenait à sneed.social, pas à FSE, et la capture d’écran jointe ne montrait pas non plus l’interface de FSE
  • L’opérateur a ensuite empoisonné l’index de BoardReader avec une fausse timeline et observé que certaines expressions déclenchaient une flambée de requêtes Facebook ; il estime que les reportages de 2024 sur Torswats ont fourni une partie du contexte expliquant l’intérêt du FBI

Une enquête partie de l’arrivée d’utilisateurs illégaux

  • L’opérateur de FSE considérait l’arrivée sur le serveur d’utilisateurs liés à la pédophilie comme une menace existentielle pour FSE
    • Les risques directs étaient la mise en ligne de contenus illégaux d’exploitation sexuelle d’enfants, l’attention des forces de l’ordre et la possibilité de saisie du matériel
    • Il estimait que certains utilisateurs publiaient des contenus illégaux sur plusieurs sites, puis vérifiaient quels comptes n’étaient pas bloqués
  • Il a tenté de les dissuader en rendant publiques les informations disponibles, comme l’IP, l’e-mail ou le User-Agent, mais l’effet a été limité
    • Beaucoup semblaient déposer ou récupérer des fichiers puis repartir, dans une logique de recherche d’endroits où ils ne seraient pas bloqués
  • En remontant les canaux d’arrivée, il est apparu que l’en-tête Referer de nombreux utilisateurs pointait vers boardreader.com

Une méthode de suivi par les logs

  • L’idée de départ est que, pour exploiter une instance fedi exposée à l’Internet public, il faut être capable d’analyser soi-même les bots, scanners, vers et trafics anormaux
  • L’analyse des logs s’appuie sur awk, tail -f, mawk -Winteractive, grep, sqlite3, R, sed, sort, psql, etc.
    • awk est présenté comme un outil comparable à SQL pour des logs texte
    • Des outils réseau comme dig, whois, traceroute, tcpdump, iftop, Shodan ou les listes de nœuds de sortie Tor sont également utilisés
  • Le format de logs des serveurs web comme nginx a été modifié pour conserver des en-têtes arbitraires, les temps de réponse, les temps de réponse du backend, etc.
    • Les logs de FSE auraient été conçus dans un format proche du TSV, afin d’être faciles à manipuler avec awk ou des outils de type tableur
  • Même des statistiques simples servent à détecter l’anormal
    • En calculant la moyenne et l’écart-type du nombre de requêtes, il repère les IP, endpoints ou schémas de requêtes qui surgissent brusquement
    • À certains moments, des constats comme « 90 % des requêtes POST viennent de la même adresse » ont été établis de cette manière

Suivi de BoardReader/SocialGist

  • boardreader.com était à l’origine un outil de recherche dans les forums, et l’opérateur de FSE estime que le site ne comprenait pas correctement fedi, traitant FSE comme un simple forum
    • Même des publications publiques venues d’autres instances auraient été affichées comme des messages du forum freespeechextremist.com
    • SocialGist disait vendre des « accessible social data », et l’opérateur estime qu’un billet de blog indiquant que le développeur était en Serbie concordait avec les IP observées
  • Le 5 mars 2023, les logs de FSE ne montraient aucune visite explicite de BoardReader, mais un scraping à grande vitesse de /api/v1/timelines/public?local=false a été découvert
    • Le navigateur se présentait comme Chrome, mais allait bien plus vite qu’un humain en train de faire défiler une page
    • Il existait des enregistrements A de spider1.boardreader.com jusqu’à spider43, mais le trafic réel serait alors venu de 45.15.176.187, une IP appartenant à DediPath
  • Après le blocage de l’IP, de nombreuses tentatives ont suivi depuis des IP résidentielles américaines, ce qui a conduit l’opérateur à penser que BoardReader achetait des proxys résidentiels pour éviter la détection
  • Le 8 mars 2023, il a commencé à bloquer les requêtes utilisant certains tokens avec awk, iptables et des scripts Ruby
    • Par la suite, des requêtes provenant d’une IP d’un FAI serbe et référant devtools.boardreader.com sont apparues
    • Ces requêtes chargeaient les ressources comme un navigateur normal, obtenaient un Bearer token, exécutaient le JavaScript, puis reprenaient le scraping avec ce token
  • Des réponses 429, 401, 403 et 500 ont été testées, mais le scraper répétait encore plus les requêtes, devenant de fait un DoS
    • Il a ensuite commencé à renvoyer 402 Payment Required, et l’accès à la timeline publique TWKN a été bloqué pendant ce temps

Échanges d’e-mails avec SocialGist

  • Le 5 mars 2023, l’opérateur a demandé des informations sur le crawler à info@boardreader.com
  • Le 13 mars 2023, dave@socialgist.com lui a répondu en demandant ce qu’il voulait savoir
    • L’opérateur a demandé qu’ils ne récupèrent que les publications locales et utilisent un User-Agent identifiant BoardReader
    • Il a fourni toute la plage d’IP qu’il possède comme cible à exclure du crawling, et a aussi signalé le problème d’arrivée d’utilisateurs liés à la pédophilie
  • Dave a dit qu’il transmettrait à l’équipe d’ingénierie, mais l’opérateur estime qu’au même moment un développeur déboguait encore le scraper
    • Les logs contenaient une requête du 13 mars 2023 depuis 109.92.154.188, faisant référence à devtools.boardreader.com
    • L’opérateur a conclu que SocialGist continuait à travailler sur le contournement tout en affirmant vouloir arrêter

L’Emergency Disclosure Request du FBI

  • Le 14 mars 2023, l’opérateur a reçu depuis une adresse e-mail fbi.gov un message intitulé Emergency Disclosure Request
    • Le Special Agent Peter Christenson demandait des informations d’abonné concernant l’utilisateur WitchKingOfAngmar
    • Le fichier joint s’appelait FSE Screen Shot.PNG
  • Après avoir vérifié les en-têtes de mail, les logs du serveur mail et les informations SPF de fbi.gov, il a conclu que le message venait bien du FBI
  • La capture d’écran jointe n’était pas une interface de FSE
    • FSE y était affiché comme un « forum », et le haut de l’image indiquait « Forum • Blackrock Executiv... »
    • Des termes de recherche comme « kill blackrock » et « larry fink » étaient surlignés
    • Une analyse de sentiment simple y figurait aussi
    • La publication avait été écrite 26 jours avant l’e-mail, mais la capture affichait des horaires comme « 11 hours ago » ou « 13 hours »
  • WitchKingOfAngmar n’était pas un utilisateur de FSE, mais de sneed.social
  • L’opérateur a répondu au FBI que FSE ne détenait pas d’informations sur cet utilisateur, et que BoardReader avait ajouté « Free Speech Extremist » alors que la publication ne venait pas de FSE
    • L’agent du FBI a demandé à qui s’adresser, et l’opérateur lui a conseillé de vérifier le serveur d’origine

Le flux supposé entre BoardReader, Facebook et le FBI

  • L’opérateur a noté que le FBI et BoardReader cassaient Unicode de la même manière, et qu’ils attribuaient à tort à FSE des publications venant de serveurs externes
    • Les points de code Unicode d’origine 1f9e2, 1f438 et 1f44d auraient été remplacés par des carrés avec point d’interrogation indiquant un Unicode invalide
  • À partir de ces éléments, il a conclu que le FBI avait contacté FSE après avoir consulté des données BoardReader
  • Le 15 mars 2023, BoardReader continuait de faire des requêtes vers FSE et ne recevait que des réponses 402
    • L’opérateur a publié une explication publique limitée et a placé FSE en mode verrouillé
    • Sans compte, il n’était plus possible de voir TWKN ou la timeline publique, et les inscriptions ont été fermées
  • Après le 16 mars 2023, BoardReader aurait encore tenté de contourner les blocages avec des proxys résidentiels, Tor et un User-Agent changeant à chaque requête

Fausse timeline et empoisonnement des données

  • À partir du 24 mars 2023, face à la poursuite du scraping par BoardReader et de l’arrivée d’utilisateurs liés à la pédophilie, l’opérateur a commencé à servir une fausse timeline
  • Il a créé un petit script CGI générant du JSON à partir de comptes inexistants et de publications inexistantes
    • Les ID initiaux étaient des nombres 32 bits aléatoires ; plus tard, il y a mélangé une partie de l’heure de la requête afin de faciliter leur suivi dans BoardReader
    • nginx ne prenant pas en charge CGI, les requêtes vers cet endpoint étaient transmises à lighttpd
    • L’implémentation aurait été faite principalement avec awk
  • La liste de mots des publications mélangeait des termes de recherche de BoardReader et des mots liés à CARNIVORE
  • Les fausses publications ont été indexées par BoardReader, et l’opérateur a comparé les logs du serveur web FSE aux éléments indexés en entrant des ID aléatoires dans le champ de recherche de BoardReader

Observation d’une flambée de requêtes Facebook

  • L’opérateur a constaté dans les histogrammes de logs l’arrivée massive de requêtes Facebook vers les URL des fausses publications
    • Les segments contenant beaucoup de 4 verts/bleus correspondaient à des réponses 402, et provenaient presque tous de requêtes Facebook
    • Les URL demandées correspondaient aux fausses publications
  • Il estime que Facebook récupérait les publications juste après leur indexation par BoardReader
  • Quand la liste de mots des fausses publications a été remplacée par la seule expression « larry fink », les requêtes Facebook auraient presque immédiatement explosé
    • Une fois l’expression supprimée, le trafic a diminué puis s’est arrêté
    • Après l’avoir réintroduite, la flambée a repris après le délai d’indexation de BoardReader
  • L’opérateur suppose un flux awk CGI → lighttpd → nginx → crawler BoardReader → index BoardReader → Facebook → interface de recherche interne du FBI
    • Il précise que le rôle exact de Facebook dans ce flux, comme outil ou comme dépôt de données pour le FBI, n’a jamais été élucidé

Comment SocialGist a été stoppé

  • Pour réduire les surcoûts de bande passante, il a rendu les réponses très lentes et les a ajustées pour se terminer juste avant le timeout
    • Il coupait parfois une partie de la fin du JSON pour provoquer un échec de parsing
    • BoardReader semblait utiliser un parseur JSON classique, et l’opérateur estimait qu’il passait environ une minute sans obtenir de données utiles
  • Ensuite, il a inséré le numéro de téléphone de Dave dans les publications générées aléatoirement, et Dave a répondu le lendemain
    • Dave a dit avoir créé un ticket Jira et qu’il reviendrait bientôt avec une réponse
    • Après un court échange, le scraping a rapidement cessé, mais il a fallu environ une semaine pour que FSE disparaisse de l’index BoardReader

Un épilogue recoupé par les reportages sur Torswats

  • Le 18 janvier 2024, Wired a rapporté l’arrestation à Lancaster, Californie, d’Alan Winston Filion
    • Il serait lié à Torswats et aurait été présenté comme l’auteur de centaines de faux signalements, dont des alertes à la bombe et de fausses prises d’otages
  • L’opérateur pense que WitchKingOfAngmar était justement ce Torswats
    • WitchKingOfAngmar semble être une référence au « Lord of the Rings »
    • Comme Torswats lançait souvent de longues diatribes menaçantes et absurdes contre Larry Fink, l’opérateur estime que le FBI s’intéressait aux menaces liées à Larry Fink
  • Cet épilogue relie en partie la demande du FBI, le terme de recherche « larry fink » et l’intérêt pour des menaces visant un dirigeant de Blackrock
  • Des questions restent ouvertes
    • Ce qu’est BoardReader aujourd’hui
    • Si SocialGist utilise BoardReader comme prétexte plausible
    • Le rôle de Facebook dans ce pipeline
    • Si Facebook fournit un outil au FBI ou sert plutôt de dépôt de données

Conseils laissés aux opérateurs fedi

  • L’opérateur explique que, si l’on veut des données fedi, mieux vaut créer une fausse instance et la connecter à un relais plutôt que scraper, car cela abîme moins les serveurs
    • Il considère aussi cette méthode comme inappropriée, mais souligne qu’elle permet au moins de recevoir les données en temps réel sans casser les serveurs d’autrui
  • Il estime que seuls les scrapers génériques les plus bruyants se voient, tandis qu’il est difficile de repérer ceux qui collectent discrètement des données en modifiant un logiciel ActivityPub ou un relais
  • L’opérateur avertit que SocialGist n’a pu être suivi que parce qu’il a commis des erreurs, et qu’il est difficile de savoir combien d’organisations font la même chose sans commettre ces erreurs

1 commentaires

 
GN⁺ 2025-06-10
Avis sur Hacker News
  • Le lien dans l’article de blog ne mène qu’à une liste d’instances ayant choisi la défédération.
    S’il ne renvoie pas vers la liste officielle Fediblock, c’est parce que Fediblock a fermé il y a quelques années. L’auteur de Fediblock avait clairement indiqué qu’il ne fallait en aucun cas l’utiliser comme une sorte de verdict final, et qu’il fallait comparer soigneusement les critères des instances listées avec ses propres critères. À l’instinct, j’ai l’impression que l’auteur a voulu mettre un lien vers une entrée Fediblock, ne l’a pas trouvée, puis l’a remplacée sans vraie vérification par le lien le plus proche.

    • J’administre un serveur Mastodon de taille moyenne, et l’un de leurs utilisateurs m’a traité avec le n-word ; je l’ai signalé à l’administrateur, mais comme aucune mesure n’a été prise, je les ai bloqués.
      Cela n’a absolument rien à voir avec Fediblock ni avec un quelconque mécanisme communautaire de blocage. Les utilisateurs se comportaient mal, l’admin ne faisait rien, et j’ai simplement décidé que je ne voulais plus interagir avec eux. Voir FSE se plaindre d’être bloqué à cause d’une société secrète, c’est assez drôle. Pas besoin d’un grand complot : des trolls ordinaires peuvent très bien agacer eux-mêmes les autres au point que plusieurs serveurs coupent les ponts.
    • Fediblock a fermé en septembre 2023, et l’article contient quantité d’horodatages montrant que ces événements ont eu lieu avant.
  • J’ai apprécié que l’histoire commence sur le fait qu’ils ne veulent pas mettre en place de CAPTCHA, parce que cela nuit aux vrais utilisateurs, puis que les 80 % suivants parlent de la durée pendant laquelle les inscriptions publiques et la timeline publique sont restées hors ligne, et donc de l’impact négatif pour les utilisateurs.
    Cela dit, c’était un article intéressant, et il m’a clairement convaincu que je ne pourrais pas héberger moi-même un espace communautaire en ligne pour d’autres personnes.

  • Il y a pas mal de choses que j’aime dans cet article : une personne qui fait de la science citoyenne en identifiant une partie de l’appareil de collecte d’information/de surveillance du FBI, quelques morceaux de drama du Fediverse, et des tactiques d’administration système intéressantes pour les opérateurs de petits serveurs.
    Le personnage nommé torswats a l’air d’être un sacré problème, et son arrestation finit par créer une intrigue secondaire intéressante. L’auteur semble aussi assez intelligent, et j’aime son style. Ça vaut cinq étoiles comme lecture.

    • C’est un excellent article, avec juste ce qu’il faut de détails techniques. Il ferait très bien l’affaire comme présentation lors d’un événement du type Chaos Communication Congress.
    • Il faut faire attention aux conclusions erronées que tire l’auteur. Le FBI a demandé des informations sur un utilisateur en envoyant une capture d’écran contenant des menaces de violence, et la personne côté FSE conclut immédiatement qu’il ne s’agit que de fanfaronnades inoffensives.
      C’est d’autant plus vrai si l’on pense qu’un autre CEO avait été assassiné à peine six mois plus tôt. À la fin de l’article, cette personne avait déjà commis un nombre incalculable d’actes violents par procuration. C’est une bonne chose que la personne côté FSE ait communiqué avec une agence fédérale, mais voir une capture de menaces et supposer immédiatement qu’il ne peut pas s’agir d’une personne violente révèle un biais dangereux.
  • Ils disent que « Fediblock a donné la fausse impression que FSE autorisait des choses qu’il n’a jamais autorisées », tout en mettant un lien vers un site dont le code source est hébergé sur kiwifarms.
    La raison pour laquelle ils sont bloqués, c’est que la plupart d’entre nous ne veulent pas interagir avec le camp de la « liberté d’expression », et c’est à peu près tout.

    • Cela ressemble à une remarque qui ne s’enchaîne pas logiquement avec la phrase à laquelle tu réponds. Quel rapport entre bloquer ou ne pas aimer quelqu’un et vérifier les faits ?
  • Bon article. J’ai une correction toute petite, peu importante, et peut-être même fausse.
    Le mot « Negative » dans la capture d’écran du moteur de recherche interne est interprété comme de l’analyse de sentiment, mais il me semble possible qu’il s’agisse en réalité d’un résultat « négatif » au sens où la publication ne correspond pas à l’intention de recherche, autrement dit un bouton pour le signaler comme faux positif dans le système interne. Dans ce contexte, l’analyse de sentiment ne me paraît pas particulièrement utile.

    • Je ne suis pas d’accord. L’icône « Negative » est une tête de personne rouge. Qui choisirait une telle icône pour un « faux positif » ? À mon avis, l’interprétation « sentiment négatif » tient mieux.
  • Le fait que « des pédophiles soient apparus sur FSE » ressemble à un problème plus général du Fediverse. Il faut reconnaître que c’est pareil sur Discord.

    • En pratique, c’est le cas partout où l’on peut téléverser des photos sans être lié à sa véritable identité.
    • Signal et Telegram aussi.
  • Il est intéressant que tout cela ait commencé à cause de l’en-tête Referer. Le fait que les navigateurs communiquent par défaut une partie de mon historique de navigation aux serveurs ressemble à un problème de confidentialité.
    Si je me souviens bien, Tor n’a pas ce problème.

    • Ce qui est intéressant, c’est que cela se configure à la fois côté utilisateur et côté site qui envoie la référence.
      La plupart des navigateurs, du moins ceux qui comptent dans ce contexte, respectent l’en-tête referer-policy défini par le site référent 1. Des frameworks web courants comme Django proposent aussi une option pour le contrôler 2. Comme la plupart des user agents s’y conforment, le site d’indexation aurait facilement pu empêcher l’envoi de cet en-tête pour la majorité des utilisateurs s’il l’avait voulu.
  • N’y avait-il pas de meilleures méthodes techniques pour bloquer les scrapers ? Par exemple bloquer les IP ou les domaines au point d’entrée au lieu de traiter les requêtes. Cela dit, ils auraient peut-être quand même payé le coût du trafic entrant.
    Il existe bien un marché pour des services tiers de protection DDoS destinés aux endpoints d’API, du genre Cloudflare. Mais ce n’était probablement pas une solution adaptée à « Free Speech Extremist », et cela a un coût. Malgré tout, dans ce genre de situation, cela aurait peut-être réellement permis d’économiser de l’argent.

    • « Nous avons donc fait en sorte que le serveur rejette le trafic des IP qui faisaient du scraping. Problème réglé ! Puis, presque aussitôt, nous avons commencé à voir un grand nombre de tentatives venant d’autres IP. Des IP résidentielles américaines. Ils achetaient des proxys résidentiels. »