CVE-2025-10155 : contournement de la sécurité de picklescan via une mauvaise classification de l’extension de fichier menant à une exécution de code arbitraire

Le logiciel picklescan est un outil open source populaire conçu pour détecter les vulnérabilités de sécurité dans les modèles de machine learning (ML) enregistrés au format pickle. Il est largement utilisé dans les pipelines MLOps et par les équipes de science des données pour vérifier les modèles provenant de sources non fiables, prévenant ainsi les attaques exploitant la désérialisation de données malveillantes. Les applications critiques pour l’entreprise, y compris les services en production et les analyses basées sur l’IA, s’appuient sur cette analyse pour se protéger contre les attaques de la chaîne d’approvisionnement ciblant les artefacts ML.

L’impact de cette vulnérabilité est élevé, car elle permet de contourner complètement les contrôles de sécurité du scanner, entraînant une possibilité d’exécution de code à distance non authentifiée. Un attaquant peut dissimuler un fichier pickle malveillant sous l’apparence d’un modèle PyTorch sûr, trompant ainsi le scanner. Lorsqu’une application en aval charge le modèle « vérifié », le code de l’attaquant est exécuté sur le système hôte. Cette vulnérabilité concerne toute organisation utilisant picklescan dans ses pipelines ML pour analyser des modèles provenant de dépôts externes ou non fiables. Bien qu’il n’y ait actuellement aucun signalement confirmé d’exploitation active, un exploit public est disponible et la complexité de l’attaque est faible, ce qui indique une forte probabilité d’exploitation future.

Produitpicklescan
Date05/12/2025 00:36:43

Résumé technique

La vulnérabilité est un défaut de type CWE-20 : Validation d’entrée incorrecte dans la logique d’identification du type de fichier de picklescan. Le scanner accorde par erreur la priorité à l’extension du fichier plutôt qu’à l’analyse du contenu pour déterminer son type, permettant à un attaquant de contourner les contrôles de sécurité.

Analyse technique :

  1. Camouflage du fichier : Un attaquant crée un fichier pickle standard mais malveillant contenant des opcodes dangereux conçus pour exécuter des commandes arbitraires (par ex. en utilisant __reduce__ avec os.system).
  2. Évasion par l’extension : L’attaquant enregistre la charge utile (payload) pickle malveillante avec une extension typique de PyTorch, telle que .pt ou .pth.
  3. Identification erronée : Lorsque picklescan analyse le fichier, sa logique vérifie d’abord l’extension. Il identifie par erreur le fichier comme un modèle PyTorch « sûr », un type de fichier exempté de l’analyse standard des opcodes pickle.
  4. Analyse contournée : Puisque le fichier est mal classé, picklescan ignore l’analyse de sécurité nécessaire qui aurait autrement détecté les opcodes malveillants présents dans le fichier. Il signale alors le fichier comme sûr.
  5. Exécution de code : Une application en aval ou un ingénieur ML, faisant confiance au résultat de l’analyse, charge le fichier malveillant en utilisant une bibliothèque de désérialisation standard telle que pickle.load(). Cette action déclenche l’exécution de la charge utile intégrée, menant à l’exécution arbitraire de code avec les privilèges de l’utilisateur exécutant l’application.

Versions concernées :

  • Vulnérables : versions de picklescan jusqu’à la 0.0.30 incluse.
  • Corrigées : un correctif a été publié dans les versions ultérieures. Les utilisateurs doivent effectuer la mise à jour vers la dernière version disponible.

Recommandations

  • Appliquer le correctif immédiatement : mettre à jour picklescan vers la dernière version disponible, qui contient le correctif pour cette vulnérabilité. S’assurer que toutes les instances au sein des pipelines MLOps et de sécurité sont à jour.
  • Atténuations :
    • S’il n’est pas possible d’appliquer le correctif immédiatement, traiter tous les résultats d’analyse provenant de versions vulnérables de picklescan avec une extrême prudence, en particulier pour les fichiers avec des extensions PyTorch provenant de sources non fiables.
    • Mettre en œuvre l’isolation (sandboxing) pour tous les environnements d’inférence et d’analyse de modèles. Utiliser des technologies comme les conteneurs (par ex. Docker) ou des micro-VM pour isoler le processus de chargement du modèle du système hôte et du réseau plus large.

  • Chasse et surveillance :

    • Effectuer un audit des journaux d’analyse historiques pour identifier tous les fichiers avec des extensions .pt ou .pth traités par des versions vulnérables de picklescan.
    • Examiner les journaux système et applicatifs sur les serveurs dédiés au chargement des modèles à la recherche d’activités suspectes, telles que des connexions réseau inattendues ou des processus enfants lancés par l’application responsable de la désérialisation.
    • Surveiller les événements d’écriture ou de modification sur des fichiers avec des extensions comme .pt et .pth dans des répertoires inhabituels.

  • Réponse aux incidents :

    • Si une compromission est suspectée, isoler immédiatement l’hôte concerné du réseau pour empêcher les mouvements latéraux.
    • Conserver le fichier du modèle malveillant et les journaux système pour une analyse forensique.
    • Présumer que toutes les données ou identifiants accessibles par le processus compromis ont été exfiltrés.

  • Défense en profondeur :

    • Appliquer le principe du moindre privilège. Exécuter les applications de chargement de modèles avec les privilèges minimaux nécessaires à leur fonction.
    • Mettre en œuvre la segmentation réseau pour limiter les connexions sortantes depuis les serveurs traitant des modèles ML, réduisant ainsi la possibilité pour un attaquant d’exfiltrer des données ou d’établir un canal de commande et de contrôle (C2).

[Callforaction-THREAT-Footer]

Leave a Reply

Your email address will not be published. Required fields are marked *