Skip to content

Le simple chargement d'un fichier de modèle ML téléchargé peut-il exécuter du code malveillant ?

Réponse courte

Oui. Les fichiers de modèle basés sur pickle (format par défaut des poids PyTorch) peuvent exécuter du code arbitraire lors de la désérialisation ; la doc Python demande de ne désérialiser que des données de confiance. Les scanners aident mais ne sont pas infaillibles. Préférez un format de données seul comme safetensors, chargez uniquement depuis des sources fiables et vérifiées, et traitez les artefacts de modèle comme n'importe quelle entrée exécutable de la chaîne d'approvisionnement.

Un fichier de modèle ressemble à des données, et c'est précisément pourquoi cette question d'AI security revient chez les profils seniors. Dans beaucoup d'écosystèmes, il s'apparente davantage à un programme.

Le mécanisme

La documentation Python de pickle s'ouvre sur un avertissement : le module « n'est pas sûr », des données pickle malveillantes peuvent « exécuter du code arbitraire pendant la désérialisation », et il ne faut jamais désérialiser des données d'origine non fiable. La documentation du Hugging Face Hub indique que pickle est le format par défaut des poids PyTorch et explique que les opcodes pickle peuvent importer des fonctions natives comme exec ou eval et les appeler : un fichier de modèle peut donc exécuter du code dès son chargement.

Défenses et limites

  • Formats plus sûrs : la doc du Hub suggère des alternatives comme safetensors ; la doc Python suggère des formats comme JSON pour les données non fiables.
  • Confiance et provenance : chargez depuis des sources fiables ; des commits signés prouvent l'origine, pas l'innocuité.
  • Analyse : le Hub liste les imports des fichiers pickle et signale les suspects, tout en précisant que ce n'est pas infaillible.
  • Restreindre les globaux via un unpickler personnalisé est possible selon la doc Python, mais exige beaucoup de prudence.

Pourquoi c'est important pour un pipeline

Les jobs automatisés qui récupèrent des modèles communautaires s'exécutent avec les identifiants de la CI ou du notebook : un fichier empoisonné devient une compromission de la chaîne d'approvisionnement. Isolez le chargement, préférez les formats de données seules, épinglez et vérifiez les artefacts.

Pourquoi les distracteurs séduisent

« Que des nombres » ignore le format conteneur. « L'antivirus le détecte » est contredit par la note du Hub : ClamAV ne couvre pas les exploits pickle. « Seulement à l'inférence » est faux : le code s'exécute au chargement.

Ce que veulent les recruteurs

Citer pickle, l'exécution de code au chargement, et safetensors plus les contrôles de provenance comme remède.

Questions de suivi probables

  • Pourquoi un scanner de pickle listant les imports est-il utile mais insuffisant ?
  • Comment safetensors évite-t-il cette classe de risque ?
  • Quels contrôles ajouter à un pipeline qui récupère automatiquement des modèles communautaires ?

Sources

Recevez 100 questions d'entretien en cybersécurité + réponses

Laissez votre e-mail et nous vous enverrons le pack PDF gratuit et le jeu de flashcards.

Pas de spam. Désabonnez-vous à tout moment.