﻿﻿{"id":2531,"date":"2026-03-16T15:50:47","date_gmt":"2026-03-16T14:50:47","guid":{"rendered":"https:\/\/elearningsamba.com\/index.php\/un-malware-invisible-se-cache-dans-des-caracteres-unicode-sur-github-npm-et-vs-code\/"},"modified":"2026-03-16T15:50:47","modified_gmt":"2026-03-16T14:50:47","slug":"un-malware-invisible-se-cache-dans-des-caracteres-unicode-sur-github-npm-et-vs-code","status":"publish","type":"page","link":"https:\/\/elearningsamba.com\/index.php\/un-malware-invisible-se-cache-dans-des-caracteres-unicode-sur-github-npm-et-vs-code\/","title":{"rendered":"Un malware invisible se cache dans des caract\u00e8res Unicode sur GitHub, npm et VS Code"},"content":{"rendered":"<p>La soci\u00e9t\u00e9 Aikido Security a d\u00e9couvert une campagne de malware baptis\u00e9e Glassworm qui utilise des caract\u00e8res Unicode invisibles pour dissimuler du code malveillant.<\/p>\n<p>Plus de 150 d\u00e9p\u00f4ts GitHub, des paquets npm et des extensions VS Code sont touch\u00e9s, et le malware utilise la blockchain Solana comme serveur de commande. L&#8217;objectif : voler les identifiants de portefeuilles crypto.<\/p>\n<h2>Des caract\u00e8res invisibles qui cachent du code<\/h2>\n<p>Le principe est assez fourbe. Les attaquants utilisent des caract\u00e8res Unicode dits PUA (Private Use Area), qui ne s&#8217;affichent pas du tout \u00e0 l&#8217;\u00e9cran, mais qui contiennent quand m\u00eame des valeurs exploitables.<\/p>\n<p>Dit plus simplement, chaque caract\u00e8re invisible correspond \u00e0 un point de code que le d\u00e9codeur extrait, reconstruit en payload, puis ex\u00e9cute via eval(). Le code malveillant est l\u00e0, sous vos yeux, mais vous ne le voyez pas.<\/p>\n<p>Aikido Security a d\u00e9couvert que cette campagne avait eu lieu entre le 3 et le 9 mars derniers. Plus de 150 d\u00e9p\u00f4ts GitHub ont \u00e9t\u00e9 compromis, mais aussi des paquets npm comme @aifabrix\/miso-client et @iflow-mcp\/watercrawl-watercrawl-mcp.<\/p>\n<p>Si on regarde du c\u00f4t\u00e9 de VS Code, l&#8217;extension quartz-markdown-editor et 72 extensions sur Open VSX ont \u00e9t\u00e9 touch\u00e9es. Les attaquants ont aussi utilis\u00e9 des LLM pour g\u00e9n\u00e9rer des commits de couverture parfaitement cr\u00e9dibles, et passer ainsi sous les radars des reviewers.<\/p>\n<h2>La blockchain Solana impliqu\u00e9e<\/h2>\n<p>Ce qui rend Glassworm encore plus fourbe, c&#8217;est son infrastructure. Au lieu d&#8217;utiliser un serveur classique facile \u00e0 bloquer, le malware r\u00e9cup\u00e8re ses instructions de commande sur la blockchain Solana. Ce qui veut dire qu&#8217;il n&#8217;y a pas de serveur central \u00e0 couper : les instructions sont inscrites dans la blockchain, accessibles \u00e0 tous et quasi impossibles \u00e0 supprimer.<\/p>\n<p>L&#8217;objectif final est le vol de donn\u00e9es li\u00e9es aux portefeuilles crypto. Le malware cible 49 extensions de navigateur, dont MetaMask, Coinbase Wallet et Phantom. Il r\u00e9cup\u00e8re les identifiants stock\u00e9s localement et les exfiltre vers les serveurs des attaquants.<\/p>\n<p>C\u00f4t\u00e9 attaquants, c&#8217;est du beau travail. Cacher du code dans des caract\u00e8res que personne ne voit, utiliser une blockchain comme canal de commande et se servir d&#8217;IA pour maquiller les commits, c&#8217;est bien ficel\u00e9.<\/p>\n<p>Le probl\u00e8me, c&#8217;est que \u00e7a expose un angle mort assez g\u00eanant dans la confiance qu&#8217;on accorde \u00e0 l&#8217;open source : on installe des paquets et des extensions sans forc\u00e9ment lire chaque ligne de code, et quand le code malveillant est carr\u00e9ment invisible, \u00e7a devient compliqu\u00e9 \u00e0 d\u00e9tecter.<\/p>\n<p>Sources :<br \/>\n<a href=\"https:\/\/www.aikido.dev\/blog\/glassworm-returns-unicode-attack-github-npm-vscode\">Aikido.dev<\/a><br \/>\n,<br \/>\n<a href=\"https:\/\/socket.dev\/blog\/glassworm-unicode-supply-chain-attack\">Socket.dev<\/a>\n<\/p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>La soci\u00e9t\u00e9 Aikido Security a d\u00e9couvert une campagne de malware baptis\u00e9e Glassworm qui utilise des caract\u00e8res Unicode invisibles pour dissimuler du code malveillant. Plus de 150 d\u00e9p\u00f4ts GitHub, des paquets npm et des extensions VS Code sont touch\u00e9s, et le malware utilise la blockchain Solana comme serveur de commande. L&#8217;objectif : voler les identifiants de portefeuilles crypto. Des caract\u00e8res invisibles qui cachent du code Le principe est assez fourbe. Les attaquants utilisent des caract\u00e8res Unicode dits PUA (Private Use Area), qui ne s&#8217;affichent pas du tout \u00e0 l&#8217;\u00e9cran, mais qui contiennent quand m\u00eame des valeurs exploitables. Dit plus simplement, chaque caract\u00e8re invisible correspond \u00e0 un point de code que le d\u00e9codeur extrait, reconstruit en payload, puis ex\u00e9cute via eval(). Le code malveillant est l\u00e0, sous vos yeux, mais vous ne le voyez pas. Aikido Security a d\u00e9couvert que cette campagne avait eu lieu entre le 3 et le 9 mars derniers. Plus de 150 d\u00e9p\u00f4ts GitHub ont \u00e9t\u00e9 compromis, mais aussi des paquets npm comme @aifabrix\/miso-client et @iflow-mcp\/watercrawl-watercrawl-mcp. Si on regarde du c\u00f4t\u00e9 de VS Code, l&#8217;extension quartz-markdown-editor et 72 extensions sur Open VSX ont \u00e9t\u00e9 touch\u00e9es. Les attaquants ont aussi utilis\u00e9 des LLM pour g\u00e9n\u00e9rer des commits de couverture parfaitement cr\u00e9dibles, et passer ainsi sous les radars des reviewers. La blockchain Solana impliqu\u00e9e Ce qui rend Glassworm encore plus fourbe, c&#8217;est son infrastructure. Au lieu d&#8217;utiliser un serveur classique facile \u00e0 bloquer, le malware r\u00e9cup\u00e8re ses instructions de commande sur la blockchain Solana. Ce qui veut dire qu&#8217;il n&#8217;y a pas de serveur central \u00e0 couper : les instructions sont inscrites dans la blockchain, accessibles \u00e0 tous et quasi impossibles \u00e0 supprimer. L&#8217;objectif final est le vol de donn\u00e9es li\u00e9es aux portefeuilles crypto. Le malware cible 49 extensions de navigateur, dont MetaMask, Coinbase Wallet et Phantom. Il r\u00e9cup\u00e8re les identifiants stock\u00e9s localement et les exfiltre vers les serveurs des attaquants. C\u00f4t\u00e9 attaquants, c&#8217;est du beau travail. Cacher du code dans des caract\u00e8res que personne ne voit, utiliser une blockchain comme canal de commande et se servir d&#8217;IA pour maquiller les commits, c&#8217;est bien ficel\u00e9. Le probl\u00e8me, c&#8217;est que \u00e7a expose un angle mort assez g\u00eanant dans la confiance qu&#8217;on accorde \u00e0 l&#8217;open source : on installe des paquets et des extensions sans forc\u00e9ment lire chaque ligne de code, et quand le code malveillant est carr\u00e9ment invisible, \u00e7a devient compliqu\u00e9 \u00e0 d\u00e9tecter. Sources : Aikido.dev , Socket.dev<\/p>\n","protected":false},"author":1,"featured_media":2532,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"give_campaign_id":0,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_kadence_starter_templates_imported_post":false,"footnotes":""},"class_list":["post-2531","page","type-page","status-publish","has-post-thumbnail","hentry"],"campaignId":"","_links":{"self":[{"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/pages\/2531","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/comments?post=2531"}],"version-history":[{"count":0,"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/pages\/2531\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/media\/2532"}],"wp:attachment":[{"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/media?parent=2531"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}