Attaques de la chaîne d’approvisionnement : paquets malveillants et bibliothèques de portefeuilles compromises
Une attaque de la chaîne d’approvisionnement crypto cache du code malveillant dans un logiciel auquel vous faites confiance. Découvrez comment fonctionnent les paquets et bibliothèques compromis et comment vous protéger.
Une attaque de la chaîne d’approvisionnement crypto consiste pour des criminels à compromettre un logiciel dont dépendent des portefeuilles, des applications ou des sites web, comme un paquet open source, une extension de navigateur ou un serveur de mise à jour, afin que du code malveillant atteigne les utilisateurs par un canal de confiance. Ce code remplace généralement les adresses de destination, injecte un wallet drainer dans un site web ou vole des phrases de récupération, et les victimes ne commettent souvent aucune erreur, si ce n’est utiliser un produit auquel elles font déjà confiance.
Ces attaques concernent tout le monde dans la crypto, pas seulement les développeurs. Les portefeuilles et applications décentralisées modernes sont construits à partir de centaines de composants tiers, et un seul composant compromis peut toucher de nombreux produits à la fois. Ce guide explique comment fonctionnent ces attaques, ce qu’il faut surveiller et comment réduire votre exposition en tant qu’utilisateur ou développeur.
Comment fonctionne une attaque de la chaîne d’approvisionnement
La « chaîne d’approvisionnement » d’une application crypto, c’est tout ce qui entre dans sa fabrication : bibliothèques de code, outils de compilation, hébergeurs, réseaux de diffusion de contenu (CDN) et serveurs de mise à jour. Une attaque suit généralement ces étapes :
- 1Obtenir un accès. L’attaquant piège par hameçonnage le mainteneur d’une bibliothèque populaire, rachète un paquet abandonné, devine un mot de passe faible ou exploite un serveur de compilation.
- 2Insérer du code malveillant. Il publie une nouvelle version contenant du code caché, souvent obfusqué et conçu pour ne s’activer que dans certaines conditions, par exemple lorsqu’un portefeuille crypto est présent.
- 3Se propager via les mises à jour. Les applications qui récupèrent automatiquement la dernière version de la bibliothèque intègrent le code malveillant à leur prochain build ou, pour les sites web, dès le chargement du script.
- 4Voler. Le code peut remplacer les adresses copiées dans le presse-papiers, afficher une fausse demande de transaction, réclamer une phrase de récupération ou injecter un drainer dans le front-end d’une application décentralisée.
- 5Effacer les traces. Les attaquants retirent souvent le code peu après usage, ce qui complique l’enquête.
Il existe des incidents réels documentés qui suivent ce schéma. En 2018, une dépendance malveillante ajoutée à un paquet JavaScript populaire était conçue pour voler les utilisateurs d’une application de portefeuille bitcoin précise. En décembre 2023, une version compromise de la bibliothèque Connect Kit de Ledger a brièvement amené plusieurs applications décentralisées à afficher un wallet drainer à leurs utilisateurs. Dans les deux cas, le point faible était le code partagé, pas les utilisateurs. Pour aller plus loin, consultez Les risques des adresses vanity et des adresses ressemblantes.
Points d’entrée courants
| Point d’entrée | Comment il est détourné | Qui est touché |
|---|---|---|
| Paquets open source (npm, PyPI et similaires) | Publication d’une version malveillante ou mise en ligne d’un paquet au nom presque identique | Applications et développeurs utilisant le paquet |
| Scripts front-end chargés depuis des tiers | Script modifié pour injecter un drainer | Tous les visiteurs du site |
| Extensions de navigateur | Extension vendue ou piratée, puis mise à jour avec du code malveillant | Utilisateurs ayant installé l’extension |
| Mises à jour d’applications | Serveur de mise à jour ou clés de signature compromis | Utilisateurs qui installent la mise à jour |
| Outils de développement et paquets suggérés par l’IA | Faux noms de paquets qui semblent plausibles | Développeurs qui installent sans vérifier |
Le typosquatting, qui consiste à publier un paquet dont le nom est très proche de celui d’un paquet populaire, est particulièrement courant. Un développeur qui fait une faute de frappe dans un nom de paquet peut installer un logiciel malveillant sans s’en apercevoir.
Un exemple hypothétique
Il s’agit d’un exemple composite et illustratif, pas d’un cas réel. Imaginez une petite plateforme d’échange décentralisée qui charge une bibliothèque populaire de connexion de portefeuille depuis un registre public de paquets. Un matin, le mainteneur de la bibliothèque est victime d’hameçonnage et l’attaquant publie une nouvelle version. Le site de la plateforme charge automatiquement la dernière version.
Pendant quelques heures, chaque utilisateur qui connecte un portefeuille voit ce qui ressemble à une demande de swap normale. En réalité, il s’agit d’une demande d’autorisation de ses tokens au profit du contrat de l’attaquant. Les utilisateurs qui lisent attentivement l’écran d’autorisation de leur portefeuille remarquent un contrat inconnu et s’arrêtent. Ceux qui cliquent sans lire perdent leurs tokens. L’équipe de la plateforme découvre le problème lorsque des utilisateurs signalent des pertes et publie une alerte, mais le code a déjà été retiré.
Signaux d’alerte pour les utilisateurs
- Une application familière vous demande soudain une phrase de récupération ou une étape de « validation du portefeuille » qu’elle n’avait jamais demandée.
- Une action courante déclenche une demande inhabituelle dans le portefeuille, comme une autorisation illimitée ou une signature pour un contrat inconnu.
- L’adresse affichée sur l’écran de votre portefeuille matériel ne correspond pas à celle que vous vouliez.
- Une extension de navigateur se met à jour et demande de nouvelles autorisations, notamment pour lire et modifier les données sur tous les sites web.
- Un projet ou des chercheurs en sécurité publient des avertissements urgents demandant de ne pas utiliser un site ou une application.
Beaucoup de ces signaux recoupent ceux des malwares de presse-papiers et des fausses applications de portefeuille, qui utilisent des techniques similaires. Voir aussi : Fausses mises à jour de navigateur et malwares captcha visant les utilisateurs de crypto.
Comment vous protéger
En tant qu’utilisateur
- 1Utilisez un portefeuille matériel et lisez l’adresse, le montant et le contrat sur son écran avant de confirmer.
- 2Limitez au minimum les extensions. Supprimez celles que vous n’utilisez pas et méfiez-vous lorsqu’une extension change de propriétaire ou demande de nouvelles autorisations.
- 3Séparez vos fonds. Conservez vos avoirs à long terme dans un portefeuille qui se connecte rarement à des sites web et utilisez un autre portefeuille pour la DeFi au quotidien.
- 4Faites une pause après une alerte de sécurité. Évitez d’utiliser une application tant qu’elle n’a pas confirmé que le problème est résolu.
- 5Révoquez régulièrement les autorisations inutiles.
En tant que développeur ou projet
- Figez les versions des dépendances et utilisez des fichiers de verrouillage ; examinez les changements avant de mettre à jour.
- Vérifiez soigneusement les noms des paquets et privilégiez des bibliothèques bien maintenues.
- Exigez l’authentification multifacteur pour les comptes de registres de paquets et d’hébergement de code.
- Utilisez des versions signées et, si possible, des builds reproductibles afin que les utilisateurs puissent vérifier les binaires.
- Utilisez une content security policy et le subresource integrity pour les scripts tiers.
Que faire si vous avez été touché
- 1Cessez d’utiliser l’application ou l’extension concernée et déconnectez tous vos portefeuilles.
- 2Vérifiez votre historique de transactions à la recherche d’autorisations ou de transferts pendant la période concernée.
- 3Révoquez toute autorisation suspecte et transférez les fonds restants vers un nouveau portefeuille avec une nouvelle phrase de récupération si votre phrase de récupération a pu être exposée.
- 4Rassemblez les hashs de transaction et les adresses, puis signalez l’incident via les canaux officiels du projet et notre formulaire de signalement d’arnaque.
Suivez la liste complète dans que faire immédiatement si votre portefeuille est compromis.
En résumé
Les attaques de la chaîne d’approvisionnement transforment des logiciels de confiance en canal de vol : vous ne pouvez donc pas vous contenter d’éviter les liens suspects. Considérez l’écran de votre portefeuille matériel et les demandes de votre portefeuille comme l’ultime vérification, limitez au minimum les logiciels que vous utilisez et réagissez vite aux alertes de sécurité officielles. Les développeurs portent l’essentiel de la responsabilité : figez, examinez et signez tout ce que vous publiez.
Questions fréquentes
Qu’est-ce qu’une attaque de la chaîne d’approvisionnement dans la crypto ?
C’est une attaque dans laquelle des criminels compromettent un logiciel dont dépendent d’autres produits, comme une bibliothèque de code, une extension de navigateur ou une mise à jour d’application, au lieu de s’en prendre directement aux utilisateurs. Lorsque le logiciel de confiance est mis à jour, le code malveillant atteint toutes les applications et tous les utilisateurs qui en dépendent, souvent pour voler des cryptos ou remplacer des adresses.
Une attaque de la chaîne d’approvisionnement peut-elle toucher un portefeuille matériel ?
L’écran d’un portefeuille matériel est conçu pour vous protéger même si votre ordinateur ou un site web est compromis, car vous confirmez l’adresse et le montant réels sur l’appareil. Une attaque peut néanmoins vous amener à approuver une transaction malveillante si vous ne lisez pas l’écran : vérifiez donc toujours les détails sur l’appareil lui-même.
Comment savoir si un site que j’ai utilisé a été touché ?
En général, vous l’apprenez par les annonces officielles du projet concerné ou par des chercheurs en sécurité. Si un projet que vous avez utilisé signale une bibliothèque ou un front-end compromis, vérifiez si vous avez signé quoi que ce soit pendant la période concernée, révoquez les autorisations et transférez vos fonds vers un nouveau portefeuille si nécessaire.
Les portefeuilles open source sont-ils à l’abri des attaques de la chaîne d’approvisionnement ?
L’open source aide, car davantage de personnes peuvent examiner le code, mais il ne rend pas un logiciel invulnérable. Du code malveillant peut s’introduire via des dépendances, des comptes de mainteneurs compromis ou des systèmes de compilation. Les builds reproductibles, les versions signées et une gestion rigoureuse des dépendances réduisent le risque.
