Le typosquattage dans les registres de paquets consiste à publier des paquets malveillants sous des noms qui sont des variantes typographiques de paquets légitimes et populaires, en exploitant la tendance des développeurs à mal saisir les noms de paquets, à accepter une suggestion erronée de saisie automatique ou à copier-coller depuis une documentation comportant une erreur. Le paquet usurpateur est généralement conçu pour paraître légitime sur sa page du registre, en reprenant la description, le fichier de présentation et même l’interface de code du paquet authentique, tout en exécutant discrètement des fonctions malveillantes : exfiltration de variables d’environnement, installation de portes dérobées ou établissement d’un accès persistant à l’environnement du développeur.
Le mécanisme d’exposition transitive est le risque précis qui rend le typosquattage particulièrement dangereux. Un développeur qui examine soigneusement les paquets qu’il installe directement peut néanmoins exécuter des paquets usurpateurs sans le savoir, parce qu’un paquet légitime qu’il a installé dépendait d’un paquet usurpateur, lui-même inclus dans l’arbre de dépendances d’un paquet de confiance. Les dépendances transitives, c’est-à-dire les dépendances de vos dépendances, ne sont pas examinées avec la même attention que les dépendances directes. Un paquet usurpateur qui s’insère dans l’arbre de dépendances d’un paquet populaire atteint tous les utilisateurs de ce paquet sans qu’aucun d’eux ne l’ait directement choisi.
Le problème de l’absence de CVE aggrave le risque. Les outils d’analyse de sécurité qui détectent les vulnérabilités connues par leur identifiant CVE ne signaleront pas un paquet usurpateur : les paquets usurpateurs ne sont pas des vulnérabilités connues au sens classique. Ce sont du code malveillant sans CVE attribuée, sans entrée dans la NVD et sans signature dans les bases de données de vulnérabilités traditionnelles. L’analyse SCA qui couvre de manière exhaustive les vulnérabilités connues des paquets légitimes n’offre aucune couverture des paquets malveillants qui se font passer pour légitimes.
Pourquoi c’est important
Le typosquattage compte pour le TPRM, car les produits logiciels de vos fournisseurs reposent sur des arbres de dépendances qui peuvent inclure des paquets usurpateurs à l’insu du fournisseur : parce que le paquet usurpateur était une dépendance transitive, parce qu’il n’avait pas de CVE et parce que, par définition, leurs analyses SCA ne détectent pas les paquets malveillants. Le SBOM qui recense tous les composants ne distingue pas les paquets légitimes des paquets usurpateurs : un paquet usurpateur « lodash-utils » figure dans le SBOM aux côtés des paquets légitimes.
- Les paquets usurpateurs n’ont pas de CVE : les analyses de vulnérabilités SCA ne les détectent pas
- Dépendances transitives non examinées avec la même attention que les dépendances directes
- Le SBOM inclut des paquets usurpateurs : l’inventaire ne distingue pas les paquets malveillants des paquets légitimes
- Évaluation de la légitimité des paquets absente de l’examen des dépendances
- Surveillance des registres pour les variantes de noms de paquets non mise en œuvre
À quoi ressemblent les bonnes pratiques
Les programmes matures de défense contre le typosquattage mettent en œuvre des vérifications de la légitimité des paquets en complément de l’analyse des vulnérabilités (vérification de l’ancienneté du paquet, de l’historique de téléchargement, de la réputation du mainteneur et revue du code des dépendances nouvellement ajoutées) et surveillent l’apparition de nouveaux paquets dont le nom ressemble à celui de dépendances internes et externes couramment utilisées.
- Vérifications de la légitimité des paquets : ancienneté, nombre de téléchargements, réputation du mainteneur pour les nouveaux paquets
- Processus d’examen des nouvelles dépendances : examen humain des paquets nouvellement ajoutés
- Surveillance des registres pour repérer les variantes usurpatrices des paquets couramment utilisés
- Épinglage des dépendances : spécification de versions exactes empêchant toute substitution inattendue de paquet
- Vérification des paquets à la compilation : vérification des empreintes de tous les paquets résolus
Outils
Sécurité des paquets : Socket.dev pour la détection en temps réel des paquets malveillants ; Snyk pour la notation des risques de la chaîne d’approvisionnement
Socket.dev assure une inspection approfondie des paquets qui va au-delà de l’analyse des CVE : analyse du code des paquets à la recherche de comportements malveillants, détection des schémas de typosquattage et évaluation des signaux de légitimité tels que la réputation du mainteneur et l’évolution du code. Pour les praticiens TPRM, demander si les fournisseurs utilisent Socket ou des outils équivalents qui détectent les paquets malveillants au-delà de l’analyse des CVE constitue une question précise sur la défense contre le typosquattage.
Enjeux de gouvernance
La difficulté de gouvernance du typosquattage tient à l’ampleur de l’écosystème des dépendances. Un projet logiciel moderne peut compter des centaines de dépendances directes et des milliers de dépendances transitives : il est impossible de toutes les examiner manuellement. La solution de gouvernance repose sur des outils automatisés qui notent les paquets selon des signaux de légitimité et signalent les anomalies pour examen humain, combinés à un épinglage des dépendances qui empêche tout changement inattendu de paquet d’une compilation à l’autre.
- Déployer socket.dev ou un outil équivalent pour détecter les paquets malveillants au-delà des CVE
- Mettre en œuvre l’épinglage des dépendances : imposer les fichiers de verrouillage pour empêcher la dérive des versions
- Examiner les nouvelles dépendances directes avant de les ajouter en production
- Surveiller les variantes usurpatrices des paquets couramment utilisés
- Inclure la détection des paquets malveillants dans l’évaluation de la sécurité de la compilation des fournisseurs
Si vous êtes une petite équipe
Activez Socket.dev ou l’action d’examen des dépendances de GitHub pour vos dépôts de production. Ces outils analysent des signaux de légitimité des paquets (modifications du code, comportement des mainteneurs, scripts d’installation) et signalent les paquets présentant des caractéristiques suspectes. Exécutez-les sur votre arbre de dépendances actuel et examinez les paquets signalés. Les paquets que Socket signale comme suspects sont ceux qu’une analyse fondée sur les CVE ne ferait jamais apparaître.
- Activer Socket.dev ou l’examen des dépendances de GitHub pour les dépôts de production
- Examiner les paquets signalés par l’analyse de légitimité
- Imposer les fichiers de verrouillage : épinglage des dépendances
- Ajouter des vérifications de légitimité à l’évaluation de la sécurité de la compilation des fournisseurs
Ce qu’il faut exiger
Demandez directement :
« Au-delà de l’analyse des CVE, comment détectez-vous les paquets malveillants auxquels aucune CVE n’est attribuée, en particulier les paquets usurpateurs ou autrement malveillants de votre arbre de dépendances ? Et utilisez-vous des outils qui analysent des signaux de légitimité des paquets au-delà des bases de données de vulnérabilités ? »
Preuves attendues
- Détection des paquets malveillants au-delà de l’analyse des CVE
- Processus d’évaluation de la légitimité des paquets
- Épinglage des dépendances et application des fichiers de verrouillage
- Approche d’examen des dépendances transitives
Il convient d’interroger un fournisseur qui confirme son analyse des vulnérabilités SCA sur la détection des paquets malveillants. L’SCA analyse les vulnérabilités connues. Les paquets usurpateurs ne sont pas des vulnérabilités connues : ce sont du code malveillant sans CVE. Outils différents, modèle de menace différent.
Comment le prouver
- Mise en œuvre d’outils de vérification de la légitimité des paquets
- Mise en œuvre de l’épinglage des dépendances
- Dossiers du processus d’examen des nouveaux paquets
- Capacité de détection des paquets malveillants
À retenir
lodash : légitime, 47 millions de téléchargements par semaine. lodash-utils : paquet usurpateur, 43,000 téléchargements, sept mois sur npm, 312 déploiements en production dans des entreprises qui ne l’avaient jamais installé directement. Aucune CVE. Aucune alerte SCA. Juste du code qui s’est exécuté. Les paquets usurpateurs ne sont pas des entrées de bases de données de vulnérabilités : ce sont du code malveillant déguisé en paquets légitimes. L’analyse CVE détecte les vulnérabilités connues des paquets légitimes. Elle n’offre aucune couverture des paquets malveillants. Les outils d’analyse de la légitimité (Socket.dev, analyse du comportement des paquets) apportent la couverture complémentaire pour le modèle de menace que l’analyse CVE ne traite pas.