Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
Outils/GitHubGitHub/protectai/modelscan
Outils DéfensifsAnalyse StatiqueScanners de VulnérabilitésDevSecOpsSécurité de la Chaîne LogistiqueApprentissage AutomatiqueSécurité de l'IA
GitHubprotectai/modelscan

modelscan

Protection contre les attaques de sérialisation de modèles

Voir le dépôtSite web
765162il y a 6 moisVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Bannière ModelScan bandit build black mypy tests Supported Versions pypi Version License: Apache 2.0 pre-commit

ModelScan : Protection contre les attaques de sérialisation de modèles

Les modèles de Machine Learning (ML) sont partagés publiquement sur Internet, au sein des équipes et entre équipes. L'essor des modèles de fondation a conduit à une consommation croissante des modèles ML publics pour un entraînement ou un fine-tuning supplémentaire. Les modèles ML sont de plus en plus utilisés pour prendre des décisions critiques et alimenter des applications essentielles. Malgré cela, les modèles ne sont pas encore analysés avec la même rigueur qu'un fichier PDF dans votre boîte mail.

Cela doit changer, et des outils adaptés constituent la première étape.

Aperçu de ModelScan

ModelScan est un projet open source de Protect AI qui analyse les modèles afin de déterminer s'ils contiennent du code non sûr. C'est le premier outil d'analyse de modèles à prendre en charge plusieurs formats de modèles. ModelScan prend actuellement en charge les formats H5, Pickle et SavedModel. Cela vous protège lorsque vous utilisez PyTorch, TensorFlow, Keras, Sklearn, XGBoost, et d'autres formats sont à venir.

TL;DR

Si vous êtes prêt à commencer à analyser vos modèles, c'est simple :

root@kitploit:~
pip install modelscan

Une fois installé, analysez un modèle :

root@kitploit:~
modelscan -p /path/to/model_file.pkl

Pourquoi devriez-vous analyser les modèles

Les modèles sont souvent créés à partir de pipelines automatisés, tandis que d'autres peuvent provenir du portable d'un data scientist. Dans les deux cas, le modèle doit être transféré d'une machine à une autre avant d'être utilisé. Ce processus d'enregistrement d'un modèle sur disque est appelé sérialisation.

Une attaque de sérialisation de modèle consiste à ajouter du code malveillant au contenu d'un modèle pendant la sérialisation (l'enregistrement) avant sa distribution — une version moderne du cheval de Troie.

L'attaque fonctionne en exploitant le processus d'enregistrement et de chargement des modèles. Lorsque vous chargez un modèle avec model = torch.load(PATH), PyTorch ouvre le contenu du fichier et commence à exécuter le code qu'il contient. Dès l'instant où vous chargez le modèle, l'exploit est exécuté.

Une attaque de sérialisation de modèle peut être utilisée pour exécuter :

  • Vol d'identifiants (identifiants cloud permettant d'écrire et de lire des données vers d'autres systèmes de votre environnement)
  • Vol de données (la requête envoyée au modèle)
  • Empoisonnement des données (les données envoyées après que le modèle a effectué sa tâche)
  • Empoisonnement du modèle (altération des résultats du modèle lui-même)

Ces attaques sont incroyablement simples à exécuter et vous pouvez voir des exemples fonctionnels dans notre dossier 📓notebooks.

Renforcer et automatiser la sécurité des modèles

ModelScan offre une analyse open source robuste. Si vous avez besoin d'une sécurité IA complète, pensez à Guardian. Il s'agit de notre produit d'analyse de modèles de niveau entreprise.

Aperçu de Guardian

Les fonctionnalités de Guardian :

  1. Analyse de pointe : accédez à nos derniers scanners, à une prise en charge élargie des modèles et à la détection automatique du format des modèles.
  2. Sécurité proactive : définissez et appliquez des exigences de sécurité pour les modèles Hugging Face avant qu'ils n'entrent dans votre environnement, sans aucune modification de code.
  3. Couverture à l'échelle de l'entreprise : mettez en œuvre une posture de sécurité cohérente dans toute votre organisation, en l'intégrant de manière transparente à vos pipelines CI/CD.
  4. Piste d'audit complète : obtenez une visibilité totale sur toutes les analyses et leurs résultats, ce qui vous permet d'identifier et d'atténuer efficacement les menaces.

Pour commencer

Comment fonctionne ModelScan

Si le chargement d'un modèle avec votre framework de machine learning exécute automatiquement l'attaque, comment ModelScan vérifie-t-il le contenu sans charger le code malveillant ?

Simple : il lit le contenu du fichier octet par octet, comme une chaîne de caractères, à la recherche de signatures de code non sûres. Cela le rend extrêmement rapide, analysant les modèles dans le temps que votre ordinateur met pour traiter la taille totale du fichier depuis le disque (quelques secondes dans la plupart des cas). C'est également sécurisé.

ModelScan classe le code non sûr selon les niveaux suivants :

  • CRITIQUE
  • ÉLEVÉ
  • MOYEN
  • FAIBLE

Diagramme de flux de ModelScan

Si un problème est détecté, contactez immédiatement les auteurs du modèle pour en déterminer la cause.

Dans certains cas, du code peut être intégré au modèle pour faciliter la reproduction des résultats par un data scientist, mais cela vous expose à une attaque. À vous de juger si cela est approprié pour vos charges de travail.

Quels modèles et frameworks sont pris en charge ?

Cela sera étendu en continu, alors surveillez les changements dans nos notes de version.

À l'heure actuelle, ModelScan prend en charge tout format dérivé de Pickle et bien d'autres :

Bibliothèque MLAPIFormat de sérialisationSupport de modelscan
Pytorchtorch.save() et torch.load()PickleOui
Tensorflowtf.saved_model.save()Protocol BufferOui
Keraskeras.models.save(save_format= 'h5')HD5 (Hierarchical Data Format)Oui
keras.models.save(save_format= 'keras')Keras V3 (Hierarchical Data Format)Oui
Bibliothèques ML classiques (Sklearn, XGBoost, etc.)pickle.dump(), dill.dump(), joblib.dump(), cloudpickle.dump()Pickle, Cloudpickle, Dill, JoblibOui

Installation

ModelScan s'installe sur vos systèmes en tant que package Python (Python 3.9 à 3.12 pris en charge). Comme indiqué ci-dessus, vous pouvez l'installer en exécutant cette commande dans votre terminal :

root@kitploit:~
pip install modelscan

Pour l'inclure dans les dépendances de votre projet afin qu'il soit disponible pour tous, ajoutez-le à votre requirements.txt ou pyproject.toml comme ceci :

root@kitploit:~
modelscan = ">=0.1.1"

Les scanners pour les modèles aux formats Tensorflow ou HD5 nécessitent une installation avec des extras :

root@kitploit:~
pip install 'modelscan[ tensorflow, h5py ]'

Utilisation de ModelScan via la CLI

ModelScan prend en charge les arguments suivants via la CLI :

UsageArgumentExplication
modelscan -h-h ou --helpAfficher l'aide d'utilisation
modelscan -v-v ou --versionAfficher les informations de version
modelscan -p /path/to/model_file-p ou --pathAnalyser un modèle stocké localement
modelscan -p /path/to/model_file --settings-file ./modelscan-settings.toml--settings-fileAnalyser un modèle stocké localement avec des configurations personnalisées
modelscan create-settings-file-l ou --locationCréer un fichier de paramètres configurable
modelscan -r-r ou --reporting-formatFormat de la sortie. Les options sont console, json ou custom (à définir dans le fichier de paramètres). Par défaut : console
modelscan -r reporting-format -o file-name-o ou --output-fileNom de fichier facultatif pour le rapport de sortie
modelscan --show-skipped--show-skippedAfficher la liste des fichiers ignorés pendant l'analyse

N'oubliez pas que les modèles sont comme toute autre forme de média numérique : vous devez analyser le contenu provenant de toute source non fiable avant de l'utiliser.

Codes de sortie de la CLI

Les codes de sortie de la CLI sont :

  • 0: Analyse terminée avec succès, aucune vulnérabilité trouvée
  • 1: Analyse terminée avec succès, des vulnérabilités ont été trouvées
  • 2: L'analyse a échoué, modelscan a renvoyé une erreur lors de l'analyse
  • 3: Aucun fichier pris en charge n'a été transmis à l'outil
  • 4: Erreur d'utilisation, la CLI a reçu des options invalides ou incomplètes

Utilisation programmatique de ModelScan en Python

Bien que ModelScan puisse être facilement utilisé via la CLI, vous pouvez également l'intégrer directement dans vos applications ou workflows Python.

root@kitploit:~
from modelscan.modelscan import ModelScan
from modelscan.settings import DEFAULT_SETTINGS

# Initialize ModelScan with default settings
scanner = ModelScan(settings=DEFAULT_SETTINGS)

# Scan a model file or directory 
results = scanner.scan("/path/to/model_file.pkl")

# Check if issues were found
if scanner.issues.all_issues:
    print(f"Found {len(scanner.issues.all_issues)} issues!")
    
    # Access issues by severity
    issues_by_severity = scanner.issues.group_by_severity()
    for severity, issues in issues_by_severity.items():
        print(f"{severity}: {len(issues)} issues")
        
# Generate a report (default is console output)
scanner.generate_report()

Vous pouvez personnaliser le comportement d'analyse avec vos propres paramètres :

root@kitploit:~
# Start with default settings and customize
custom_settings = DEFAULT_SETTINGS.copy()

# Update settings as needed
custom_settings["reporting"]["module"] = "modelscan.reporting.json_report.JSONReport"
custom_settings["reporting"]["settings"]["output_file"] = "scan_results.json"

# Initialize with custom settings
scanner = ModelScan(settings=custom_settings)

Comprendre les résultats

Une fois l'analyse terminée, vous verrez une sortie comme celle-ci si un problème est trouvé :

Sortie d'analyse de ModelScan

Nous avons ici un modèle qui contient un opérateur non sûr pour ReadFile et WriteFile. Il est évident que nous ne voulons pas que nos modèles lisent et écrivent des fichiers de manière arbitraire. Nous contacterions alors le créateur de ce modèle pour déterminer ce qu'il attendait de ce comportement. Dans ce cas précis, cela permet à un attaquant de lire nos identifiants AWS et de les écrire ailleurs.

C'est un non catégorique pour l'utilisation.

Intégrer ModelScan dans vos pipelines ML et CI/CD

L'analyse ad hoc est une excellente première étape. Faites-vous-en une habitude, ainsi que vos collègues et amis, à chaque fois qu'ils téléchargent un nouveau modèle à explorer. Cela ne suffit pas à améliorer la sécurité des processus MLOps en production.

L'analyse des modèles doit être effectuée plus d'une fois pour accomplir ce qui suit :

  1. Analysez tous les modèles pré-entraînés avant de les charger pour un travail ultérieur, afin d'empêcher qu'un modèle compromis n'affecte vos environnements de construction de modèles ou de data science.
  2. Analysez tous les modèles après l'entraînement pour détecter une attaque de la chaîne d'approvisionnement qui compromettrait de nouveaux modèles.
  3. Analysez tous les modèles avant de les déployer sur un endpoint pour vous assurer que le modèle n'a pas été compromis après son stockage.

Les blocs rouges ci-dessous mettent en évidence ce point dans un pipeline ML traditionnel. Pipeline MLOps avec ModelScan

Les processus seraient les mêmes pour le fine-tuning ou toute modification de LLM, de modèles de fondation ou de modèles externes.

Intégrez des analyses dans les processus de déploiement de vos systèmes CI/CD pour sécuriser l'utilisation lors du déploiement des modèles, si cela est effectué en dehors de vos pipelines ML.

Aller plus loin

Dans le dossier 📓notebooks, vous pouvez explorer un certain nombre de notebooks qui illustrent exactement comment les attaques de sérialisation de modèles peuvent être menées contre divers frameworks ML comme TensorFlow et PyTorch.

Pour approfondir le fonctionnement exact de ces attaques, consultez 🖹 Explication des attaques de sérialisation de modèles.

Si vous rencontrez d'autres approches pour évaluer des modèles dans un contexte statique, n'hésitez pas à nous contacter, nous serions ravis d'en apprendre davantage !

Licence

Copyright 2024 Protect AI

Sous licence Apache, version 2.0 (la « Licence ») ; vous ne pouvez pas utiliser ce fichier sauf en conformité avec la Licence. Vous pouvez obtenir une copie de la Licence à l'adresse suivante :

http://www.apache.org/licenses/LICENSE-2.0

Sauf obligation prévue par la loi applicable ou accord écrit, le logiciel distribué sous la Licence est distribué sur une base « AS IS », SANS GARANTIES NI CONDITIONS D'AUCUNE SORTE, expresses ou implicites. Voir la Licence pour connaître les autorisations et les limitations spécifiques prévues par la Licence.

Remerciements

Nous avons été fortement inspirés par Matthieu Maitre qui a créé PickleScan. Nous apprécions ce travail et l'avons considérablement étendu avec ModelScan. ModelScan est publié en open source dans le même esprit que PickleScan.

Contribuer

Nous serions ravis de vous voir contribuer à notre projet open source ModelScan. Si vous souhaitez contribuer, veuillez suivre les détails sur la page Contribution.

Télécharger l’outil