Slopsquatting
Le slopsquatting est une attaque contre la chaîne d’approvisionnement logicielle qui exploite les noms de paquets inventés par l’IA pour inciter les développeurs à installer des dépendances malveillantes.
Le slopsquatting est une attaque contre la chaîne d’approvisionnement logicielle dans laquelle un attaquant publie un paquet malveillant sous un nom inventé par un assistant de programmation IA, puis compte sur les développeurs ou les outils automatisés pour l’installer. Le piège transforme une recommandation de dépendance à l’apparence plausible en code tiers exécutable. Il relie les hallucinations des LLM — des informations fabriquées présentées comme factuelles — aux gestionnaires de paquets utilisés pour créer des logiciels.
Le chercheur en sécurité Seth Larson a créé ce terme en avril 2025, et Andrew Nesbitt l’a popularisé en lui attribuant la paternité dans sa définition originale du slopsquatting. Le nom combine l’AI slop et le « squatting », qui désigne le fait de s’approprier un nom de logiciel que d’autres personnes chercheront.
Fonctionnement du slopsquatting#
Un grand modèle de langage génère du code contenant un nom de paquet inventé ou une commande d’installation. Un attaquant repère ce nom et publie un paquet correspondant sur un registre comme PyPI ou npm. Lorsque la recommandation réapparaît, l’installation récupère le paquet de l’attaquant. Les hallucinations de paquets peuvent se reproduire avec différentes invites et différents modèles, concentrant la demande sur des noms que les attaquants peuvent s’approprier.
L’état du registre détermine le résultat. Un nom non enregistré entraîne un échec de l’installation ; un nom contrôlé par un attaquant est résolu avec succès et introduit du code malveillant dans l’environnement. La confiance du développeur envers l’assistant devient une voie d’accès à la chaîne d’approvisionnement logicielle.
Ce risque concerne aussi bien le développement assisté par des humains que le codage agentique. Un agent IA doté de capacités d’utilisation d’outils peut transformer une dépendance générée en action d’installation. Le code malveillant d’un paquet peut s’exécuter pendant l’installation ou lors d’une utilisation ultérieure, exposant des fichiers, des identifiants et des résultats de compilation selon les autorisations de l’environnement.
Comment un paquet inventé est parvenu jusqu’aux développeurs#
Bar Lanyado a publié un paquet Python vide nommé huggingface-cli après que des modèles d’IA ont recommandé cette dépendance inexistante. Au 28 mars 2024, le paquet halluciné avait enregistré plus de 30 000 téléchargements authentiques en trois mois. Des instructions d’installation figuraient également dans le fichier README d’un dépôt de recherche d’Alibaba. L’adoption de ce paquet vide a démontré qu’un nom de dépendance inventé pouvait s’introduire dans de véritables workflows de développement.
La dénomination des paquets ajoute une autre source de confusion : un exécutable en ligne de commande, un module importable et une distribution installable peuvent avoir des noms différents. C’est important pour le développement en vision par ordinateur, lorsque les assistants génèrent des instructions de configuration d’environnement. Ultralytics YOLO prend en charge YOLO26 via le paquet Python ultralytics, qui fournit des workflows d’entraînement, de prédiction et d’exportation ; vérifier que les instructions d’installation générées correspondent à l’identité de ce paquet permet d’agir au stade de la sélection des dépendances, là où intervient le slopsquatting.
Slopsquatting et attaques apparentées#
Ces termes décrivent des mécanismes distincts qui affectent la sécurité des dépendances :
- Hallucination de paquet : le modèle invente une dépendance. Le slopsquatting exploite cette erreur de dénomination par le biais d’un enregistrement malveillant.
- Typosquattage : un attaquant enregistre un nom ressemblant à celui d’un paquet existant pour tirer parti des fautes de frappe. Le slopsquatting cible les noms générés par l’IA.
- Confusion de dépendances : un gestionnaire de paquets récupère un paquet public alors qu’une dépendance privée était prévue.
- Injection d’invite : un contenu contrôlé par un attaquant détourne le comportement d’un système d’IA. Le slopsquatting exploite une recommandation de paquet générée via le registre.
Prévenir le slopsquatting dans les pipelines de compilation#
L’approbation des dépendances permet d’établir le projet visé, l’éditeur, le dépôt source et l’historique des versions avant l’installation. Une revue des dépendances axée sur la sécurité s’applique aux ajouts générés par l’IA comme au code écrit par des humains. La disponibilité dans un registre confirme qu’un nom existe ; la vérification de sa propriété permet d’établir quel logiciel sera exécuté. L’ancrage d’un assistant dans la documentation de paquets approuvés fournit les identités des paquets nécessaires à cette revue.
Dans l’intégration continue, des étapes de revue contrôlent les modifications des dépendances avant leur intégration à une compilation. Les versions épinglées identifient les versions approuvées, tandis que les hachages des artefacts identifient leurs fichiers exacts. Le bac à sable des agents, l’accès réseau restreint et les identifiants à privilèges minimaux limitent les ressources auxquelles le code des dépendances peut accéder, réduisant ainsi son accès aux données sensibles et aux identifiants de déploiement.
Le mode d’installation avec vérification des hachages de Python utilise --require-hashes pour comparer les fichiers de paquets téléchargés aux hachages consignés dans un fichier d’exigences. Chaque dépendance, y compris les dépendances transitives — les bibliothèques nécessaires à d’autres bibliothèques — doit avoir une version exacte et des hachages d’artefacts autorisés. Si le hachage d’un paquet téléchargé ne correspond à aucun des hachages autorisés, pip rejette le fichier et arrête l’installation.










