﻿﻿{"id":1207,"date":"2025-09-24T10:14:19","date_gmt":"2025-09-24T08:14:19","guid":{"rendered":"https:\/\/elearningsamba.com\/index.php\/un-scanner-pour-lutter-contre-lattaque-shai-hulud\/"},"modified":"2025-09-24T10:14:19","modified_gmt":"2025-09-24T08:14:19","slug":"un-scanner-pour-lutter-contre-lattaque-shai-hulud","status":"publish","type":"page","link":"https:\/\/elearningsamba.com\/index.php\/un-scanner-pour-lutter-contre-lattaque-shai-hulud\/","title":{"rendered":"Un scanner pour lutter contre l&#8217;attaque Shai-Hulud"},"content":{"rendered":"<p>Romain, fid\u00e8le lecteur de korben.info a d\u00e9velopp\u00e9 un scanner pour d\u00e9tecter l\u2019attaque Shai-Hulud qui a secou\u00e9 l\u2019\u00e9cosyst\u00e8me npm derni\u00e8rement ! L\u2019occasion parfaite pour moi de vous raconter cette histoire compl\u00e8tement dingue.<\/p>\n<p>Vous vous souvenez de CrowdStrike ? Cette entreprise de cybers\u00e9curit\u00e9 qui a provoqu\u00e9 la plus grande panne informatique mondiale en juillet 2024 avec une mise \u00e0 jour d\u00e9faillante ? Celle qui a clou\u00e9 au sol des milliers d\u2019avions et fait planter des millions de PC Windows ? Eh bien figurez-vous qu\u2019en septembre 2025, des packages npm mis \u00e0 disposition par CrowdStrike ont \u00e9t\u00e9 touch\u00e9s. Et si Crowdstrike n\u2019a pas \u00e9t\u00e9 directement pirat\u00e9, ces packages publics (qui n\u2019\u00e9taient pas utilis\u00e9s dans leurs solutions de s\u00e9curit\u00e9, ni en interne chez eux) utilisaient ces d\u00e9pendances qui ont \u00e9t\u00e9 compromises par l\u2019attaque.<\/p>\n<p>C\u2019est ce qu\u2019on appelle une supply chain attack et l\u2019attaque Shai-Hulud (oui, comme le ver des sables dans Dune) n\u2019est pas juste un malware de plus. C\u2019est le premier ver informatique qui s\u2019est propag\u00e9 de mani\u00e8re autonome dans l\u2019\u00e9cosyst\u00e8me npm, infectant des centaines de paquets en quelques heures.<\/p>\n<p>Le ver utilise TruffleHog, un outil de s\u00e9curit\u00e9 normalement con\u00e7u pour D\u00c9TECTER les secrets dans le code, c\u2019est \u00e0 dire les tokens GitHub, npm, AWS et GCP.<\/p>\n<p>Puis quand il trouve des credentials valides, le ver fait les trois choses suivantes : D\u2019abord, il cr\u00e9e un d\u00e9p\u00f4t GitHub public nomm\u00e9 \u201cShai-Hulud\u201d o\u00f9 il balance toutes les donn\u00e9es vol\u00e9es. Ensuite, il pousse une GitHub Action malicieuse dans tous les repos accessibles pour exfiltrer encore plus de secrets. Et le pompon c\u2019est que parfois, il transforme m\u00eame les repos priv\u00e9s d\u2019entreprise en repos publics personnels. J\u2019vous laisse imaginer la t\u00eate du RSSI qui d\u00e9couvre que tout le code proprio de sa bo\u00eete est accessible \u00e0 tout le monde sur GitHub\u2026<\/p>\n<p>\n<img decoding=\"async\" src=\"https:\/\/korben.info\/cdn-cgi\/image\/width=1200,fit=scale-down,quality=90,f=avif\/npm-shai-hulud-scanner-attaque-supply-chain\/npm-shai-hulud-scanner-attaque-supply-chain-1.jpg\" alt=\"\" loading=\"lazy\">\n<\/p>\n<p>Et quand le ver trouve des tokens npm dans son environnement, il publie automatiquement des versions infect\u00e9es de tous les paquets auxquels il a acc\u00e8s. C\u2019est d\u2019ailleurs la premi\u00e8re fois qu\u2019on voit ce comportement de ver auto-r\u00e9pliquant dans l\u2019\u00e9cosyst\u00e8me JavaScript. Par exemple, le paquet @ctrl\/tinycolor, t\u00e9l\u00e9charg\u00e9 2 millions de fois par semaine, a \u00e9t\u00e9 l\u2019un des premiers touch\u00e9s.<\/p>\n<p>Face \u00e0 ce bordel monumental, Romain a donc d\u00e9velopp\u00e9<br \/>\n<a href=\"https:\/\/github.com\/Drasrax\/npm-shai-hulud-scanner\">npm-shai-hulud-scanner<\/a><br \/>\n, un outil qui d\u00e9tecte non seulement les paquets connus comme compromis, mais aussi les tentatives de typosquatting et les patterns de code malicieux. Il utilise notamment la<br \/>\n<a href=\"https:\/\/fr.wikipedia.org\/wiki\/Distance_de_Levenshtein\">distance de Levenshtein<\/a><br \/>\npour identifier les variations suspectes de noms de paquets (du genre lodash vs lodash_ ou react vs raect).<\/p>\n<p>Quand vous le lancez, le scanner de Romain v\u00e9rifie d\u2019abord si vous avez des paquets de la liste des 500+ compromis. Ensuite il analyse votre code \u00e0 la recherche de patterns suspects : tentatives d\u2019exfiltration de credentials, ex\u00e9cution de code \u00e0 distance, obfuscation, communications r\u00e9seau louches. Il peut m\u00eame tourner en mode monitoring continu pour surveiller votre CI\/CD. Et cerise sur le g\u00e2teau, il peut mettre en quarantaine les paquets suspects automatiquement. C\u2019est top non ?<\/p>\n<p>Shai-Hulud est l\u2019un des attaques les plus s\u00e9v\u00e8res jamais vue sur la supply chain JavaScript et si m\u00eame CrowdStrike se fait avoir, je me dit que personne n\u2019est \u00e0 l\u2019abri. Donc soyez hyper vigilants et utilisez des outils de contr\u00f4le comme celui de Romain !<\/p>\n<p>On ne sait jamais !<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Romain, fid\u00e8le lecteur de korben.info a d\u00e9velopp\u00e9 un scanner pour d\u00e9tecter l\u2019attaque Shai-Hulud qui a secou\u00e9 l\u2019\u00e9cosyst\u00e8me npm derni\u00e8rement ! L\u2019occasion parfaite pour moi de vous raconter cette histoire compl\u00e8tement dingue. Vous vous souvenez de CrowdStrike ? Cette entreprise de cybers\u00e9curit\u00e9 qui a provoqu\u00e9 la plus grande panne informatique mondiale en juillet 2024 avec une mise \u00e0 jour d\u00e9faillante ? Celle qui a clou\u00e9 au sol des milliers d\u2019avions et fait planter des millions de PC Windows ? Eh bien figurez-vous qu\u2019en septembre 2025, des packages npm mis \u00e0 disposition par CrowdStrike ont \u00e9t\u00e9 touch\u00e9s. Et si Crowdstrike n\u2019a pas \u00e9t\u00e9 directement pirat\u00e9, ces packages publics (qui n\u2019\u00e9taient pas utilis\u00e9s dans leurs solutions de s\u00e9curit\u00e9, ni en interne chez eux) utilisaient ces d\u00e9pendances qui ont \u00e9t\u00e9 compromises par l\u2019attaque. C\u2019est ce qu\u2019on appelle une supply chain attack et l\u2019attaque Shai-Hulud (oui, comme le ver des sables dans Dune) n\u2019est pas juste un malware de plus. C\u2019est le premier ver informatique qui s\u2019est propag\u00e9 de mani\u00e8re autonome dans l\u2019\u00e9cosyst\u00e8me npm, infectant des centaines de paquets en quelques heures. Le ver utilise TruffleHog, un outil de s\u00e9curit\u00e9 normalement con\u00e7u pour D\u00c9TECTER les secrets dans le code, c\u2019est \u00e0 dire les tokens GitHub, npm, AWS et GCP. Puis quand il trouve des credentials valides, le ver fait les trois choses suivantes : D\u2019abord, il cr\u00e9e un d\u00e9p\u00f4t GitHub public nomm\u00e9 \u201cShai-Hulud\u201d o\u00f9 il balance toutes les donn\u00e9es vol\u00e9es. Ensuite, il pousse une GitHub Action malicieuse dans tous les repos accessibles pour exfiltrer encore plus de secrets. Et le pompon c\u2019est que parfois, il transforme m\u00eame les repos priv\u00e9s d\u2019entreprise en repos publics personnels. J\u2019vous laisse imaginer la t\u00eate du RSSI qui d\u00e9couvre que tout le code proprio de sa bo\u00eete est accessible \u00e0 tout le monde sur GitHub\u2026 Et quand le ver trouve des tokens npm dans son environnement, il publie automatiquement des versions infect\u00e9es de tous les paquets auxquels il a acc\u00e8s. C\u2019est d\u2019ailleurs la premi\u00e8re fois qu\u2019on voit ce comportement de ver auto-r\u00e9pliquant dans l\u2019\u00e9cosyst\u00e8me JavaScript. Par exemple, le paquet @ctrl\/tinycolor, t\u00e9l\u00e9charg\u00e9 2 millions de fois par semaine, a \u00e9t\u00e9 l\u2019un des premiers touch\u00e9s. Face \u00e0 ce bordel monumental, Romain a donc d\u00e9velopp\u00e9 npm-shai-hulud-scanner , un outil qui d\u00e9tecte non seulement les paquets connus comme compromis, mais aussi les tentatives de typosquatting et les patterns de code malicieux. Il utilise notamment la distance de Levenshtein pour identifier les variations suspectes de noms de paquets (du genre lodash vs lodash_ ou react vs raect). Quand vous le lancez, le scanner de Romain v\u00e9rifie d\u2019abord si vous avez des paquets de la liste des 500+ compromis. Ensuite il analyse votre code \u00e0 la recherche de patterns suspects : tentatives d\u2019exfiltration de credentials, ex\u00e9cution de code \u00e0 distance, obfuscation, communications r\u00e9seau louches. Il peut m\u00eame tourner en mode monitoring continu pour surveiller votre CI\/CD. Et cerise sur le g\u00e2teau, il peut mettre en quarantaine les paquets suspects automatiquement. C\u2019est top non ? Shai-Hulud est l\u2019un des attaques les plus s\u00e9v\u00e8res jamais vue sur la supply chain JavaScript et si m\u00eame CrowdStrike se fait avoir, je me dit que personne n\u2019est \u00e0 l\u2019abri. Donc soyez hyper vigilants et utilisez des outils de contr\u00f4le comme celui de Romain ! On ne sait jamais !<\/p>\n","protected":false},"author":1,"featured_media":1208,"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-1207","page","type-page","status-publish","has-post-thumbnail","hentry"],"campaignId":"","_links":{"self":[{"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/pages\/1207","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=1207"}],"version-history":[{"count":0,"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/pages\/1207\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/media\/1208"}],"wp:attachment":[{"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/media?parent=1207"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}