# Les fichiers de modèle Hugging Face peuvent exécuter du code caché

Published: 2026-10-12

Les paquets de modèles malveillants peuvent exécuter du code lors d'un chargement non sécurisé. Trois exemples documentés expliquent les reverse shells Pickle, le comportement des scanners de fichiers corrompus et la confusion de noms de modèles démontrée par la recherche, avec des limites claires sur les allégations de vol d'informations d'identification.

Canonical: https://thedailydiff.dev/fr/video/2026-10-12-huggingface-model-malware/

## Ce que couvre cette vidéo

- Les poids de modèles numériques, la sérialisation exécutable et le code de référentiel personnalisé sont des choses différentes.
- JFrog et ReversingLabs ont documenté des charges utiles de reverse shell; leurs rapports sélectionnés n'établissent pas de vol d'informations d'identification auprès de victimes nommées.
- La confusion de modèle de Checkmarx était une démonstration de recherche nécessitant un modèle distant correspondant et un chargement non sécurisé.
- Préférez les safetensors et les chargeurs patchés, examinez et épinglez le code personnalisé, et isolez les paquets inconnus des secrets personnels et de l'accès réseau inutile.

## Chapitres

- 0:00 Comment un téléchargement de modèle peut-il inviter un invité ?
- 0:35 Comment un chargeur exécute-t-il les instructions du colis ?
- 1:09 Quels secrets sont à la portée du processus ?
- 1:38 Pourquoi un chemin local manquant peut-il devenir un modèle distant ?
- 1:55 Comment les paquets corrompus ont-ils échappé à l'ancien scanner ?
- 2:44 Qu'est-ce qui maintient la clé hors de portée de l'invité ?
- 3:12 Pourquoi est-ce que je tamponnerais cela "NEEDS REVIEW" ?

## Transcription traduite

Traduit de la narration originale en anglais. L'audio et les sous-titres disponibles sont gérés par YouTube.

### Comment un téléchargement de modèle peut-il inviter un invité ?

0:00 Un fichier de modèle est juste des nombres sur le disque. Le chargement d'un paquet Hugging Face malveillant a ouvert un shell distant, ce qui est une interprétation ambitieuse de l'IA locale. Comment le chargement devient-il exécution ? Quels secrets peut-il atteindre ? Qu'est-ce qui l'arrête réellement ? Et gardez un mystère à l'esprit. Un modèle peut échouer à se charger après que la partie dangereuse se soit déjà produite.

0:18 Ceci est The Daily Diff, sous le capot. Hugging Face est une plateforme de partage de modèles d'apprentissage automatique, de jeux de données et d'applications. Les poids des modèles sont les nombres appris. Un dépôt peut également contenir des configurations et du code Python. Le danger ici est le packaging exécutable qui entre sur votre ordinateur lorsque vous le chargez. Pickle stocke les objets Python avec des instructions pour les reconstruire.

### Comment un chargeur exécute-t-il les instructions du colis ?

0:37 Un chargeur non sécurisé peut suivre ces instructions et appeler des fonctions pendant le dépaquetage. Le téléchargement des octets place le colis sur votre disque. La désérialisation l'ouvre. Quelque part, un format de fichier a été promu administrateur système non rémunéré. JFrog a signalé Goober Two en février deux mille vingt-quatre. Sa charge utile Pickle a ouvert un reverse shell, se connectant vers l'extérieur pour offrir un accès à des commandes à distance . Le dépôt a été supprimé. JFrog a également trouvé des indices suggérant l'implication d'un chercheur,

1:02 donc l'attribution est incertaine. L'invité indésirable a été documenté. Le vol d'informations d'identification auprès de victimes réelles n'a pas été établi.

### Quels secrets sont à la portée du processus ?

1:09 Le code s'exécutant en tant qu'utilisateur peut lire tout ce que ce processus peut lire. Une clé cloud montée ou un jeton accessible devient une cible possible. L'envoi nécessite également une route réseau fonctionnelle. Les poids numériques seuls n'ont aucun pouvoir magique en matière d'informations d'identification. Vos permissions fournissent la partie intéressante de la carte du modèle. Il y a une autre porte. Certains modèles vous demandent de faire confiance à du code distant, ce qui autorise Python du dépôt. Les fichiers "safetensor" peuvent se trouver à côté de ce code.

1:32 Vérifier le format des poids couvre une entrée, tandis que le code du dépôt est toujours en attente que vous lui donniez un badge de visiteur.

### Pourquoi un chemin local manquant peut-il devenir un modèle distant ?

1:38 Checkmarx a démontré la confusion de modèles. Un chemin de modèle local manquant pourrait se résoudre en un dépôt public avec un nom correspondant. Combinez cela avec le code distant activé, et le mauvais paquet peut s'exécuter. Il s'agissait d'une démonstration de recherche impliquant un échantillon d'une entreprise non nommée, corrigé en une journée. Un dossier manquant a acquis un propriétaire. ReversingLabs a signalé deux échantillons en février deux mille vingt-cinq,

### Comment les paquets corrompus ont-ils échappé à l'ancien scanner ?

1:58 nommant la technique "nullify AI". Les deux contenaient des reverse shells. Leur emballage en 7z bloquait le chargement ordinaire de PyTorch, ce chemin a donc nécessité une extraction et une désérialisation non sécurisée. Les flux Pickle corrompus ont également exposé un angle mort du scanner. Un scan échoué mérite une enquête avant que quiconque n'ouvre le colis. Dans le test inoffensif des chercheurs, les instructions ont écrit un fichier avant que le chargeur

2:18 n'atteigne la partie corrompue et ne lève une erreur. Imaginez ouvrir un colis, libérer le raton laveur, puis remarquer que l'étiquette d'expédition est invalide. Le message d'erreur arrive avec une excellente grammaire et un timing terrible. Hugging Face a supprimé les échantillons signalés dans les vingt-quatre heures et a modifié le scanner. Cette découverte spécifique a entraîné une correction. Un scan de sécurité est une preuve utile, et traiter chaque erreur de scanner comme un blanc-seing reste une interprétation remarquablement généreuse de l'échec.

2:43 Préférez les "safetensors" et les chargeurs patchés actuels.

### Qu'est-ce qui maintient la clé hors de portée de l'invité ?

2:46 PyTorch a restreint son chargeur par défaut à partir de la version deux point six. Examinez le code personnalisé et épinglez la révision examinée. Exécutez les paquets inconnus en isolement sans clés personnelles, avec un accès réseau restreint. Un conteneur rempli de "credentials" montées est un panier cadeau avec des espaces de noms. Ce mystère d'ouverture a une réponse. L'échec du chargement vous indique où l'exécution s'est arrêtée. Des instructions antérieures peuvent déjà avoir été exécutées.

3:08 Gardez les secrets hors de sa portée avant d'ouvrir le colis. Verdict, sous le capot.

### Pourquoi est-ce que je tamponnerais cela "NEEDS REVIEW" ?

3:16 chargeur. Le téléchargement gratuit devrait inclure un modèle, et la liste des invités devrait rester ma décision. Si vous préférez lire ceci plutôt que de m'entendre le dire, le "diff" arrive dans votre boîte de réception chaque matin, gratuitement sur "the daily diff dot dev", lien ci-dessous. Et c'est le "diff" pour aujourd'hui. Je suis Niko d'Axrisi. Fusionnez de manière responsable.

## Sources

- [Data Scientists Targeted by Malicious Hugging Face ML Models with Silent Backdoor](https://jfrog.com/blog/data-scientists-targeted-by-malicious-hugging-face-ml-models-with-silent-backdoor/) — JFrog
- [Malicious ML models discovered on Hugging Face platform](https://www.reversinglabs.com/blog/rl-identifies-malware-ml-model-hosted-on-hugging-face) — ReversingLabs
- [AI Model Confusion: An LLM/AI Model Supply Chain Attack](https://checkmarx.com/zero-post/hugs-from-strangers-ai-model-confusion-supply-chain-attack/) — Checkmarx Zero
- [Pickle Scanning](https://huggingface.co/docs/hub/en/security-pickle) — Hugging Face
- [Safetensors](https://huggingface.co/docs/safetensors/en/index) — Hugging Face
- [Loading custom models](https://huggingface.co/docs/transformers/en/models) — Hugging Face
- [Serialization semantics](https://docs.pytorch.org/docs/2.14/notes/serialization.html) — PyTorch
