Les risques de sécurité posés par le format Pickle sont une fois de plus apparus avec la découverte d’une nouvelle « technique hybride d’exploitation de modèles d’apprentissage automatique (ML) » baptisée Sleepy Pickle.
La méthode d’attaque, selon Trail of Bits, militarise le format omniprésent utilisé pour empaqueter et distribuer des modèles d’apprentissage automatique (ML) afin de corrompre le modèle lui-même, posant ainsi un grave risque de chaîne d’approvisionnement pour les clients en aval d’une organisation.
“Sleepy Pickle est une technique d’attaque furtive et nouvelle qui cible le modèle ML lui-même plutôt que le système sous-jacent”, a déclaré le chercheur en sécurité Boyan Milanov. dit.
Alors que pickle est un format de sérialisation largement utilisé par les bibliothèques ML comme PyTorchil peut être utilisé pour mener des attaques par exécution de code arbitraire simplement en chargeant un fichier pickle (c’est-à-dire pendant la désérialisation).
“Nous vous suggérons de charger des modèles provenant d’utilisateurs et d’organisations en qui vous avez confiance, en vous appuyant sur des commits signés, et/ou de charger des modèles depuis [TensorFlow] ou Jax avec le mécanisme de conversion automatique from_tf=True,” Hugging Face fait remarquer dans sa documentation.
Sleepy Pickle fonctionne en insérant une charge utile dans un fichier pickle à l’aide d’outils open source comme capricieuxpuis le transmettre à un hôte cible en utilisant l’une des quatre techniques telles qu’une attaque d’adversaire au milieu (AitM), le phishing, la compromission de la chaîne d’approvisionnement ou l’exploitation d’une faiblesse du système.
“Lorsque le fichier est désérialisé sur le système de la victime, la charge utile est exécutée et modifie le modèle contenu sur place pour insérer des portes dérobées, contrôler les sorties ou falsifier les données traitées avant de les renvoyer à l’utilisateur”, a déclaré Milanov.
En d’autres termes, la charge utile injectée dans le fichier pickle contenant le modèle ML sérialisé peut être utilisée de manière abusive pour modifier le comportement du modèle en altérant les poids du modèle ou en altérant les données d’entrée et de sortie traitées par le modèle.
Dans un scénario d’attaque hypothétique, l’approche pourrait être utilisée pour générer des résultats nuisibles ou des informations erronées pouvant avoir des conséquences désastreuses sur la sécurité des utilisateurs (par exemple, boire de l’eau de Javel pour soigner la grippe), voler des données utilisateur lorsque certaines conditions sont remplies et attaquer indirectement les utilisateurs en générant des résumés manipulés d’articles de presse contenant des liens pointant vers une page de phishing.
Trail of Bits a déclaré que Sleepy Pickle peut être utilisé par des acteurs malveillants pour maintenir un accès clandestin aux systèmes ML d’une manière qui échappe à la détection, étant donné que le modèle est compromis lorsque le fichier pickle est chargé dans le processus Python.
C’est également plus efficace que de télécharger directement un modèle malveillant sur Hugging Face, car cela peut modifier le comportement du modèle ou le résultat de manière dynamique sans avoir à inciter ses cibles à les télécharger et à les exécuter.
“Avec Sleepy Pickle, les attaquants peuvent créer des fichiers pickle qui ne sont pas des modèles ML mais qui peuvent quand même corrompre les modèles locaux s’ils sont chargés ensemble”, a déclaré Milanov. “La surface d’attaque est ainsi beaucoup plus large, car le contrôle de n’importe quel fichier pickle dans la chaîne d’approvisionnement de l’organisation cible suffit pour attaquer ses modèles.”
« Sleepy Pickle démontre que les attaques avancées au niveau du modèle peuvent exploiter les faiblesses de la chaîne d’approvisionnement de niveau inférieur via les connexions entre les composants logiciels sous-jacents et l’application finale.