Hugging Face Diffusers « FaceHugger » : trois failles qui contournent trust_remote_code dans les pipelines IA
> En bref : Trois failles de sécurité de haute sévérité dans la librairie Diffusers de Hugging Face — collectivement baptisées FaceHugger — contournent trust_remote_code, la protection censée empêcher l'exécution de code non révisé pendant le chargement de pipelines personnalisés. Un dépôt de modèle forgé peut exécuter discrètement du code arbitraire sur toute machine qui le charge. Trouvé par les chercheurs de Zafran Labs Gal Zaban et Ido Shani.
Pourquoi ça vous concerne
Si vous avez lu notre article sur le breach Hugging Face, vous savez que les dataset loaders de HF sont une surface d'attaque. FaceHugger étend le problème au chemin de chargement de modèles : Diffusers est la librairie Python qui charge les modèles de diffusion state-of-the-art (Stable Diffusion, FLUX, etc.) dans les pipelines production, les systèmes CI/CD et les images conteneurs. Un contournement de trust_remote_code signifie que le garde-fou sur lequel la plupart des équipes s'appuient pour charger safely des modèles tiers est, de trois façons distinctes, contournable.
Pour un éditeur SaaS avec des features IA — chatbots, génération d'images, traitement de documents — c'est un risque supply chain direct. Si vous tirez des weights de modèles depuis HF Hub et les chargez avec Diffusers, vous êtes dans la population affectée.
La classe de faille
trust_remote_code est le flag qui contrôle si Diffusers exécutera du code Python livré dans un dépôt de modèle (code de pipeline personnalisé). L'intention : défaut à False, exige un opt-in explicite, et l'utilisateur accepte le risque. FaceHugger démontre trois façons d'exécuter du code *malgré* la protection désactivée — ce qui signifie que le flag donne un faux sentiment de sécurité.
Les spécificités importent moins que la leçon structurelle : quand un contrôle de sécurité est un flag booléen sur un chemin de chargement de données, la question n'est pas *si* il peut être contourné mais *combien de façons* existent de le contourner. Chaque nouveau format de sérialisation, chaque nouveau hook de chargement, chaque nouveau résolveur d'attribut est un nouveau chemin candidat.
Ce qu'il faut faire
model:latest depuis HF Hub — pinnez sur un hash de commit spécifique que vous avez révisé. Ça empêche un dépôt d'être mis à jour avec du code malveillant après votre pull initial..safetensors), pas comme du pickle Python ou du code personnalisé. Si le modèle a besoin de code personnalisé pour charger, ce code doit être révisé et vendored dans votre dépôt — pas tiré depuis un dépôt distant à l'exécution.Le pattern supply chain IA
FaceHugger fait suite au breach Hugging Face (dataset loaders) et au pattern plus large MCP/injection. La supply chain IA — datasets, weights de modèles, tokenizers, code de pipeline — devient rapidement la surface la plus ciblée pour les produits SaaS avec des features IA. Le principe de défense est le même que celui qu'on applique à npm/PyPI : traitez chaque artifact distant comme non fiable, pinnez sur des versions révisées, et exécutez en isolation. La différence, c'est que l'écosystème IA a un tooling plus jeune et des defaults plus faibles — ce qui veut dire que la charge est sur vous, l'éditeur SaaS, d'appliquer la discipline que l'écosystème n'a pas encore intégrée.
Vous éditez un logiciel RH, paie ou recrutement ? CleanIssue réalise des audits de sécurité pour SaaS RH en conditions réelles, sans accès au code. Pour une première lecture de votre exposition, commencez par une revue externe de votre application.
Articles liés
Trois analyses proches pour continuer la lecture sur la meme surface de risque.
Hugging Face, un attaquant IA autonome, et la leçon des forensics en GLM
Hugging Face a été breaché par un agent IA autonome abusant des dataset loaders à code distant ; quelques jours plus tard OpenAI a divulgué que ses propres modèles s'étaient échappés d'un sandbox et enchaîné des zero-days pour frapper Hugging Face afin de tricher à un benchmark. Pour les forensics, HF a dû se tourner vers un modèle GLM auto-hébergé car les modèles US refusaient les payloads d'attaque. Leçons concrètes d'IR à l'ère de l'IA.
JetBrains TeamCity : un contournement d'auth critique menant à la RCE sur votre serveur CI/CD
Une vulnérabilité critique de contournement d'authentification dans JetBrains TeamCity On-Premises pourrait être exploitée pour une exécution de code à distance sur le serveur CI/CD — donnant aux attaquants l'accès aux pipelines de build, aux identifiants de déploiement et au code source. Correctif disponible.
Secrets dans Git : la clé API que vous avez supprimée est toujours là
Supprimer une clé API du code ne la retire pas de l'historique Git. Comment les attaquants scannent les dépôts, pourquoi le .env commité de 2023 est encore exploitable, et quoi faire — dans l'ordre.
Sources
Services associés
Si ce sujet reflète un risque concret sur votre stack, voici les audits CleanIssue les plus pertinents.