[WARNING · À VÉRIFIER CETTE SEMAINE]/Actualités·

Un ver dans un gem Ruby vole les accès aux outils de code IA et glisse des fichiers d'agent dans les dépôts – vérifiez les vôtres

Socket a analysé strutil-core 1.0.1, un paquet RubyGems qui lance à l'installation un ver voleur d'identifiants. Il est resté public le 1er novembre environ cinq heures avant que RubyGems ne le retire. En plus des secrets du cloud, de SSH et des registres de paquets, le ver récupère les identifiants des outils de code IA, ajoute ses propres entrées à leurs réglages locaux et, avec un accès Git volé, commite dans les dépôts des fichiers d'instructions pour les agents de code.

Êtes-vous concerné ?

  • Concernés : directement, les machines où strutil-core 1.0.1 a été installé. Selon nous, toute équipe dont les développeurs installent des paquets open source et utilisent des outils de code IA (Claude Code, Codex, Cursor, Gemini) ou VS Code devrait chercher les fichiers glissés.
  • Pas concerné si : personne dans votre entreprise n'installe de paquets ni n'utilise d'agents de code.

Que faire

  • Si vous utilisez Ruby : cherchez strutil-core dans les fichiers Gemfile.lock, les caches de CI et les images de conteneurs.
  • Dans les dépôts et les répertoires personnels : cherchez des modifications que personne n'a faites dans AGENTS.md, CLAUDE.md, .claude/settings.json, .cursor/mcp.json, les réglages .gemini, .vscode/tasks.json ou .github/init.js ; cherchez aussi un serveur MCP (un outil que l'assistant IA peut lancer) nommé workspace-tools et des hooks SessionStart (commandes lancées au démarrage d'une session).
  • Signes d'infection : des services nommés pkg-runtime ou net-health-checker, les fichiers ~/.config/index.js ou /var/tmp/.fontconfig_state, de nouveaux dépôts publics dans votre organisation GitHub décrits comme project-utils, ou des commits contenant AutoSyncComplete.
  • Si une machine est infectée : isolez-la. Supprimez net-health-checker et pkg-runtime, puis seulement révoquez le jeton GitHub, changez depuis un appareil sain tous les identifiants que la machine pouvait atteindre et réinstallez-la. Supprimer le gem ne suffit pas.
  • À éviter : révoquer d'abord le jeton GitHub – dès que le jeton est refusé, net-health-checker efface le répertoire personnel de l'utilisateur.
  • Selon nous, laissez activées la confiance de l'espace de travail (workspace trust) et les demandes d'approbation ; Socket indique que c'est d'elles que dépend le fait que l'ouverture d'un dépôt relance ou non le ver.

Ce que l'on sait – et ce que l'on ignore

  • Une version 1.0.0 saine a précédé de moins de deux heures la 1.0.1 malveillante. Socket n'a trouvé aucun projet dépendant du gem et n'a confirmé aucune victime.
  • Dans le bac à sable de Bitbison, le gem a lu des fichiers comme .claude/.credentials.json et .codex/auth.json. Les autres constats de Socket viennent de l'analyse du code.
  • Le fichier AGENTS.md glissé demande aux agents de lancer un script d'installation avant leur première commande ; la tâche VS Code s'exécute à l'ouverture du dossier.
  • Le code peut republier des paquets npm et PyPI ; Socket n'a vu aucune publication de ce type à partir de ce gem. On ignore combien de systèmes l'ont installé. Un paquet PyPI, pystr-codec, utilise le même serveur de collecte.
  • Socket rattache le ver à la famille Miasma, bâtie sur la boîte à outils Shai-Hulud, publique depuis mai 2026 ; un code commun ne prouve donc pas qu'un seul opérateur est derrière.

Pourquoi c'est important

Les fichiers d'instructions pour agents ressemblent à de la documentation, et personne ne les relit comme du code. Pourtant, un agent de code les suit. Un dépôt n'est plus seulement lu par vos outils : il détermine aussi ce qu'ils font.

Sources