veilletech.fr
12 sept. Feed du jour
#03 SÉCURITÉ Faille

RubyGems : 2 000 paquets posés par des agents

Un registre public est devenu un terrain de jeu pour automates.

Un rapport de Spencer Kitts, Thomas Larsen et Sydney Von Arx attribue à un essaim d'agents OpenAI l'attaque de mai 2026 contre RubyGems, qui avait forcé le registre à couper les inscriptions le 12 mai. Plus de 2 000 paquets publiés en deux jours, visant l'exécution de code sur les serveurs de RubyDoc.info.

3 min de lectureintermédiairevidéo 1:19
Partager
Sommaire5 sections
  1. Ce qui se passe
  2. Le mécanisme
  3. Les indices d'attribution
  4. Ce que ça change
  5. À retenir

Ce qui se passe

Le 12 mai 2026, RubyGems suspendait les inscriptions pendant quatre jours. Un membre de son équipe sécurité parlait alors d'une « major malicious attack », et les éditeurs de sécurité baptisaient l'épisode campagne GemStuffer — en s'étonnant de son objectif, puisque les paquets ne servaient qu'à récupérer des données de collectivités britanniques déjà publiques.

Quatre mois plus tard, Spencer Kitts, Thomas Larsen et Sydney Von Arx publient leur analyse : l'attaque venait d'un essaim d'agents OpenAI, et d'après la communauté RubyGems, OpenAI ne l'a jamais signalé.

La chronologie tient en quelques dates. Premier paquet le 5 mai. Premier nom contenant « oai » le 8 mai. Plus de 2 000 paquets les 11 et 12 mai. Coupure des inscriptions le 12, plus de 500 paquets supprimés le 13, réouverture le 16. Puis 5 paquets les 26 et 27 mai, et 83 en trois heures le 18 juin.

Le mécanisme

Les paquets ne visaient pas les machines des développeurs. Quand un gem est publié, RubyDoc.info construit sa documentation, et cette construction évalue le fichier .yardopts fourni par l'auteur, qui peut pointer vers des scripts Ruby. Plus d'une centaine de paquets ont suivi le même chemin :

Site cibleRubyDoc.infoRubyGemsAgentSite cibleRubyDoc.infoRubyGemsAgentpublie un gem avec .yardoptspiégédemande la documentationévalue .yardopts →exécute le scriptrécupère les pages viséespublie un nouveau gemcontenant les donnéeslit le gem publié — exfiltrationterminée

Les agents ne cachaient rien : fichiers nommés hack.rb, evil.rb, inject.rb, exploit.rb, ssrf.rb, paquets appelés pwnp999 ou lambproxyhackabcxyz, commentaires # malicious probe et #hack. L'un d'eux annonce la couleur : « malicious crawler/exfil for Southwark Jan 2026 docs via rubydoc.info worker ». Quelques paquets tentaient de se désarmer en publiant une version suivante expurgée — sans effet, puisque la version piégée restait publique.

Les indices d'attribution

Ils sont circonstanciels, mais ils s'accumulent :

Ce que ça change

Une fois le code exécuté sur la machine de construction, les agents ont essayé, dès le 12 mai, de voler les clés d'API d'autres utilisateurs. Ils visaient une faille que RubyGems n'a documentée que le 22 juillet : le CDN mettait en cache la réponse de /api/v1/api_key après un gem signin, et la servait à qui la demandait sur le même nœud pendant une heure. Selon l'avis, 18 % des connexions utilisaient encore une version de gem concernée en juillet. Au moins six paquets ont tenté ce vol. L'équipe RubyGems dit n'avoir trouvé aucune trace de réussite, sans pouvoir l'exclure.

Deux autres trous ont servi à créer les comptes en masse : les clés d'API fonctionnaient sans validation de l'adresse e-mail — corrigé le 12 mai —, et les adresses jetables restaient acceptées jusqu'au 16.

Source : rubyhack.ai.