En bref

  • Le dépôt Open-OSS/privacy-filter a usurpé l'identité d'OpenAI sur Hugging Face et grimpé jusqu'à la première place du classement Trending avec 244 000 téléchargements.
  • Le repository déposait un infostealer écrit en Rust ciblant cookies, mots de passe, jetons Discord, portefeuilles crypto, secrets SSH et VPN sur Windows.
  • Hugging Face a retiré le dépôt après 18 heures, mais toute machine ayant exécuté start.bat ou loader.py doit être considérée comme compromise et réinstallée.

Ce qui s'est passé

Les chercheurs de HiddenLayer ont mis au jour le 11 mai un cas d'école de typosquatting sur Hugging Face. Le dépôt Open-OSS/privacy-filter, qui mimait le récent modèle openai/privacy-filter publié fin avril par OpenAI, a réussi à atteindre la première place du classement Trending de la plateforme avec 244 000 téléchargements et 667 likes en moins de 18 heures. Le model card avait été copié quasiment à l'identique de l'original, jusqu'aux exemples d'usage et aux graphiques de benchmark, rendant la supercherie particulièrement difficile à détecter pour un développeur pressé.

Derrière la façade d'un modèle de filtrage de contenu sensible, le repository embarquait deux fichiers piégés : start.bat, un script batch Windows présenté comme un wrapper de démarrage, et loader.py, censé charger les poids du modèle. En réalité, ces deux composants téléchargent et exécutent une charge utile Rust hébergée sur le domaine recargapopular[.]com. Selon BleepingComputer et The Hacker News, qui ont relayé l'analyse de HiddenLayer, le binaire final est un infostealer sophistiqué doté de capacités anti-analyse étendues.

Le périmètre du vol de données est massif. L'infostealer cible les cookies, mots de passe enregistrés, clés de chiffrement, jetons de session et historiques de navigation des navigateurs Chromium (Chrome, Edge, Brave, Opera) et Gecko (Firefox, LibreWolf). Il extrait également les jetons Discord et les bases SQLite locales du client, les portefeuilles cryptographiques (Metamask, Phantom, Exodus) et leurs extensions de navigateur, les configurations SSH, FTP et VPN, les fichiers locaux sensibles identifiés par patrons de nommage et les seeds de wallets. Pour finir, le malware effectue des captures multi-écrans et collecte les informations système avant de tout compresser et exfiltrer vers son serveur de commande.

Les capacités anti-analyse incluent la détection des hyperviseurs (VMware, VirtualBox, Hyper-V), des sandboxes (Cuckoo, ANY.RUN, Joe Sandbox), des debuggers (Cheat Engine, x64dbg, OllyDbg) et des outils de monitoring système comme Process Hacker ou ProcMon. En cas de détection, le binaire avorte silencieusement son exécution sans déposer d'artefact, échappant ainsi aux pipelines automatisés de classification. Cette technique, courante dans les infostealers commerciaux du marché russophone, suggère que l'opérateur s'appuie sur un builder commercial type RedLine, StealC ou Lumma plutôt que sur un développement maison.

HiddenLayer estime que les chiffres de téléchargement et de likes ont été massivement gonflés artificiellement pour atteindre le sommet du classement. Hugging Face calcule en effet le ranking Trending sur la base d'une combinaison de likes, téléchargements et activité communautaire sur 24 heures, indicateurs facilement manipulables avec des comptes automatisés. Une fois le dépôt promu en page d'accueil et indexé par les bots de monitoring, l'effet boule de neige attire de vrais utilisateurs qui découvrent le « nouveau modèle OpenAI » via les agrégateurs d'actualités IA.

Selon Infosecurity Magazine, le timing de l'attaque coïncide précisément avec la sortie publique du véritable openai/privacy-filter le 28 avril, modèle distillé conçu pour filtrer les PII et contenus sensibles avant ingestion dans des pipelines RAG. L'opérateur de la campagne malveillante a manifestement surveillé la roadmap publique d'OpenAI pour publier son clone dans la fenêtre où la communauté cherchait activement à tester ce modèle. La technique exploite donc autant l'ingénierie sociale que la faille du modèle de gouvernance de la plateforme.

Hugging Face a réagi en retirant le dépôt environ 18 heures après les premiers signalements, mais le mal était fait : 244 000 téléchargements potentiels, dont une part significative d'exécutions effectives. La plateforme a publié un communiqué reconnaissant la difficulté de modérer en temps réel un catalogue qui dépasse désormais 1,5 million de modèles et 400 000 jeux de données. Aucune mesure technique de fond n'est annoncée à ce stade ; CSO Online rapporte que des discussions sont en cours pour introduire une vérification d'identité obligatoire pour les comptes publiant dans les namespaces sensibles, mais la roadmap reste indéterminée.

Les recommandations immédiates sont claires : toute machine Windows ayant exécuté start.bat ou loader.py depuis ce dépôt doit être considérée comme entièrement compromise. Les chercheurs préconisent la réinstallation complète plutôt que le nettoyage, car la charge utile est un voleur de credentials et toute connexion ultérieure depuis l'hôte affecté avant le wipe relâche de nouveaux secrets dans la nature. Les organisations doivent par ailleurs auditer leurs registres Hugging Face Hub pour détecter tout pull du namespace Open-OSS au cours des deux dernières semaines.

Pourquoi c'est important

L'affaire Open-OSS/privacy-filter confirme que Hugging Face est devenu un vecteur de supply chain au même titre que npm, PyPI ou Docker Hub. La plateforme, fondée comme un dépôt de modèles open source, sert aujourd'hui de couche de distribution pour la quasi-totalité des assets IA utilisés par les entreprises. Sa surface d'attaque est immense : modèles entraînés, datasets, agents pré-configurés, scripts d'inférence, le tout exécuté avec des permissions élevées sur des postes de développeurs disposant d'accès production. Le ROI pour un attaquant est exceptionnel comparé aux supply chains traditionnelles, ce qui explique l'accélération récente des campagnes ciblant cette plateforme.

Pour les équipes IA et MLOps, l'incident rappelle qu'un modèle Hugging Face n'est pas un simple fichier de données : il s'agit d'un artefact actif susceptible d'embarquer du code arbitraire via les fichiers de configuration trust_remote_code, les hooks de tokenizer custom, ou tout simplement les scripts Python livrés dans le repository. Le principe de moindre privilège, longtemps confiné à la production, doit désormais s'étendre aux postes de data science. Les notebooks Jupyter exécutés en root sur la machine du chercheur étoile sont autant de portes ouvertes que les serveurs web mal patchés des années 2010.

Le modèle de gouvernance de Hugging Face est désormais sous pression réglementaire. L'AI Act européen impose aux fournisseurs de modèles à usage général une documentation détaillée des poids et des données d'entraînement, mais ne prévoit pas explicitement de contrôle sur l'authenticité des dépôts hébergés par des tiers. Un parlementaire européen, sollicité par LeMagIT, indique que la prochaine révision pourrait élargir la responsabilité aux plateformes de distribution, sur le modèle du Digital Services Act, ce qui imposerait à Hugging Face des obligations de modération renforcées.

Pour les RSSI, la riposte passe par trois leviers. Premièrement, l'interdiction par défaut de trust_remote_code dans tous les pipelines internes. Deuxièmement, l'instauration d'un dépôt miroir interne approuvant uniquement les modèles ayant passé un contrôle scanner statique. Troisièmement, la sensibilisation des équipes data sur le fait qu'un dépôt Trending n'est pas un gage de confiance, en s'appuyant sur l'affaire Open-OSS comme cas concret. L'écart entre la culture sécurité « infra » mature et la culture sécurité « IA » naissante reste préoccupant dans la plupart des grandes entreprises françaises.

Ce qu'il faut retenir

  • Toute machine ayant exécuté un script du dépôt Open-OSS/privacy-filter doit être réinstallée et tous les secrets locaux rotés sans exception.
  • Désactiver systématiquement trust_remote_code dans les pipelines transformers et bannir l'exécution automatique de scripts Python issus de modèles tiers.
  • Mettre en place un registre interne Hugging Face avec liste blanche de modèles approuvés et scanner statique sur les fichiers Python embarqués.

Comment savoir si un développeur a téléchargé ce dépôt malveillant ?

Le cache Hugging Face local se trouve dans ~/.cache/huggingface/hub sur Linux/macOS et C:\Users\[user]\.cache\huggingface\hub sur Windows. Recherchez tout sous-dossier nommé « models--Open-OSS--privacy-filter ». Côté réseau, inspectez les logs de proxy ou DNS pour des requêtes vers recargapopular.com sur les 14 derniers jours. Sur Windows, vérifiez aussi les journaux d'événements PowerShell et l'historique d'exécution batch via Sysmon Event ID 1 pour identifier les exécutions de start.bat ou loader.py originaires de chemins Hugging Face.

Besoin d'un accompagnement expert ?

Ayi NEDJIMI vous accompagne sur vos projets cybersécurité et IA.

Prendre contact