Les modèles empoisonnés dans les faux SDK Alibaba montrent des défis de sécuriser les chaînes d’approvisionnement en IA

Lucas Morel

Les faux SDK Aibaba Labs Ai hébergés sur PYPI comprenaient des modèles Pytorch avec du code d’infostealer à l’intérieur. Avec le support pour détecter le code malveillant à l’intérieur des modèles ML manquants, attendez-vous à ce que la technique se propage.

Les développeurs ont été de plus en plus ciblés par les attaquants ces dernières années avec de faux packages de logiciels sur les référentiels de composants open-source – une technique d’attaque en chaîne d’approvisionnement qui s’est maintenant étendue pour inclure des cadres d’IA voyous et des modèles d’empoisonnement d’apprentissage automatique (ML) alors que les entreprises se précipitent pour créer des applications d’IA.

Dans une attaque récente, les pirates ont téléchargé des packages sur l’index de package Python (PYPI) – le référentiel public pour les composants Python open-source – qui se sont masqués en tant que kits de développement de logiciels (SDK) pour interagir avec les services des laboratoires AI d’Alibaba Cloud, également connus sous le nom de laboratoire Aliyun AI.

Les trois forfaits malveillants, trouvés par des chercheurs de la société de sécurité inverselabs, n’avaient pas de fonctionnalité légitime, exfiltrant plutôt des informations des environnements aux serveurs contrôlés par l’attaquant via le code caché à l’intérieur des fichiers de modèle ML malveillant stockés au format Pickle.

« Dans cette nouvelle campagne, les modèles trouvés dans les nouveaux packages PYPI malveillants contiennent du code d’infosteller entièrement fonctionnel », ont écrit les chercheurs. « Pourquoi les auteurs de logiciels malveillants masqueraient-ils le code dans des modèles ML qui sont des fichiers formés par des cornichons? Très probablement parce que les outils de sécurité commencent à implémenter la prise en charge de la détection d’un comportement malveillant dans les formats de fichiers ML, qui ont été traditionnellement considérés comme un moyen de partage de données, et non de distribution de code exécutable. »

Abuser du format de sérialisation des cornichons

Pickle est un module Python officiel pour la sérialisation des objets, à travers lequel un objet est transformé en flux d’octets – le processus inverse est connu sous le nom de désérialisation, ou en terminologie python: décapage et défaut.

Le format Pickle est couramment utilisé pour stocker des modèles ML destinés à être utilisés avec Pytorch, une bibliothèque ML largement utilisée écrite en Python. En raison de la popularité de Pytorch auprès des équipes d’ingénierie de l’IA et des développeurs, le format Pickle est également devenu répandu dans toute l’industrie.

En fait, les attaquants ont déjà abusé de ce format pour héberger des modèles empoisonnés avec un code malveillant sur l’étreinte Face, une plate-forme d’hébergement en ligne pour stocker et partager des modèles d’IA open source et d’autres actifs ML.

En réponse, Hugging Face a adopté l’outil open source Picklescan, qui est conçu pour détecter et bloquer les méthodes et objets Python dangereux inclus dans les fichiers de cornichon qui pourraient conduire à une exécution de code arbitraire pendant la désérialisation. Cependant, les chercheurs ont montré qu’il existe encore des moyens de vaincre l’approche et la détection de contournement de la liste noire de Picklescan.

Le code malveillant dans les modèles ML est difficile à détecter

Bien que les modèles Houging Face hôte directement, PYPI héberge les packages de logiciels Python, de sorte que la détection de modèles empoisonnés cachés à l’intérieur de fichiers de cornichons cachés à l’intérieur des packages peut s’avérer encore plus difficile pour les développeurs et les mainteneurs de PYPI, étant donné la couche supplémentaire d’obscurcissement.

La campagne d’attaque découverte par REVERSINGLABS a impliqué trois packages: aliyun-ai-labs-snippets-sdk, ai-labs-snippets-sdket aliyun-ai-labs-sdk. Ensemble, les trois forfaits ont été téléchargés 1 600 fois, ce qui est important étant donné qu’ils étaient en ligne pendant moins d’un jour avant leur découverte et enlevés.

Les ordinateurs des développeurs sont des cibles précieuses car ils contiennent généralement une variété d’identification, de jetons API et d’autres clés d’accès à divers services d’infrastructure cloud et local. Compromettre un tel ordinateur peut facilement conduire à un mouvement latéral vers d’autres parties de l’environnement.

Les SDK malveillants téléchargés sur PYPI ont chargé les modèles Pytorch malveillants à travers le __init__.py scénario. Les modèles ont ensuite exécuté Base64-Obfuscated Code conçu pour voler des informations sur l’utilisateur connecté, l’adresse réseau de la machine infectée, le nom de l’organisation à laquelle appartenait la machine et le contenu de la .gitconfig déposer.

Il y a des signes dans le code malveillant selon lequel l’objectif principal était les développeurs situés en Chine, étant donné l’attrait des SDK Aliyun, car les développeurs chinois sont plus susceptibles d’utiliser les services d’IA d’Alibaba. Cependant, la technique peut être utilisée contre tout développeur avec n’importe quel leurre enroulé autour d’un modèle malveillant.

« Il s’agit d’une approche intelligente, car les outils de sécurité ne commencent à mettre en œuvre le support pour la détection des fonctionnalités malveillantes à l’intérieur des modèles ML », ont écrit les chercheurs de réversion. «La déclaration des risques de sécurité liés aux formats de fichiers de modèle ML en est également à ses débuts. Pour le dire simplement, les outils de sécurité sont à un niveau primitif en ce qui concerne la détection de modèle ML malveillant. L’outillage de sécurité hérité manque actuellement de cette fonctionnalité requise.»