06/11/2024
Blog technique
Les vulnérabilités dans les LLM : (5) Supply Chain Vulnerabilities
Jean-Léon Cusinato, équipe SEAL
Bienvenue dans cette suite d’articles consacrée aux Large Language Model (LLM) et à leurs vulnérabilités. Depuis quelques années, le Machine Learning (ML) est devenu une priorité pour la plupart des entreprises qui souhaitent intégrer des technologies d’Intelligence Artificielle dans leurs processus métier.
Focus technique : Qu'est-ce qu'un token ?
Découpe des Tokens
Le découpage des tokens est un processus complexe qui dépend de plusieurs facteurs :
- Les tokens peuvent être des mots entiers ou des sous-mots. Par exemple, le mot « tokenization » peut être découpé en plusieurs tokens comme « token », « ##ization ». Cette approche permet de gérer efficacement les mots rares ou inconnus.
- Les caractères spéciaux, tels que les ponctuations, les symboles et les espaces, sont également pris en compte dans le processus de tokenisation.
- La distinction entre majuscules et minuscules est généralement prise en compte. Par exemple, « Token » et « token » peuvent être considérés comme des tokens différents, car ils peuvent avoir des significations différentes dans certains contextes.
- Les chiffres et les nombres sont également tokenisés. Ils peuvent être traités comme des tokens distincts ou intégrés dans les tokens de mots.
- La tokenisation permet à l’IA de découper un message en sous-blocs et comprendre le sens de ce dernier. Par exemple, dans l’exemple ci-dessous, l’identification de l’utilisation des caractères majuscules et de la ponctuation permet au moteur de comprendre que le ton du message est différent.
Exemples de Tokenisation
Prenons quelques exemples pour illustrer le processus de tokenisation :
- Exemple 1 : La phrase « Hello, world! » peut être tokenisée en [« Hello », « , », « world », « ! »].
- Exemple 2 : Le mot « unhappiness » peut être découpé en [« un », « ##happy », « ##ness »].
- Exemple 3 : La phrase « I have 2 apples » peut être tokenisée en [« I », « have », « 2 », « apples »].
Importance des Tokens
Les tokens sont essentiels pour le fonctionnement des LLM, car ils permettent au modèle de comprendre et de générer du texte de manière cohérente. Une bonne tokenisation peut améliorer la performance du modèle en réduisant la complexité et en augmentant la précision. De plus, la plupart des modèles étant généralement fournis en tant que SaaS (Software as a Service), le coût d’utilisation sera indexé sur le nombre de tokens utilisé lors de l’inférence (voir l’article (2) Insecure Output Handling).
De plus, certaines vulnérabilités dans l’injection de prompt (voir (1) Prompt Injection) se basent sur la longueur et le fonctionnement des tokens pour contourner certaines limites et restrictions de configuration.
Prenons par exemple, une situation dans laquelle le mot « unhapiness » sera interdit par la configuration de l’IA, ainsi que ses traductions dans toutes les langues. Ce mot, en français, serait découpé en plusieurs tokens : [« un », « ##happy », « ##ness »]. Pour contourner la restriction, un utilisateur pourrait tenter d’écrire le mot « malhappyado », un mot-valise composé d’un mélange entre « malheureux » (en français), « unhappiness » (en anglais) et « desgraciado » (en espagnol). Ce mot composite serait découpé par l’IA en [« mal », « ##happy », « ##ado »]. Bien qu’il n’ai aucun sens pour un humain, le moteur LLM traiterait chaque token indépendamment, ce qui activera les neurones nécessaires à la compréhension du mot « malheureux », par la combinaison du sens de chaque token dans sa langue d’origine.
Description de la vulnérabilité
Traditionnellement, les vulnérabilités que l’on peut retrouver dans la nature se concentrent sur les composants logiciels, mais le machine learning étend cette problématique aux modèles pré-entraînés et aux données d’entraînement fournis par des tiers, qui sont susceptibles d’être altérés par des attaques de manipulation et d’empoisonnement.
La vulnérabilité sur les chaînes d’approvisionnement (Supply Chain Vulnerabilities en anglais) des LLM se réfère aux faiblesses ou aux points de défaillance potentiels qui peuvent compromettre l’intégrité, la sécurité ou la performance de ces modèles au cours de leur fabrication et de leur diffusion aux utilisateurs finaux. Ces vulnérabilités peuvent ainsi survenir à différents niveaux de la chaîne d’approvisionnement, allant de la collecte et du traitement des données jusqu’à la formation et au déploiement des modèles. Par exemple, des données de formation biaisées ou malveillantes peuvent entraîner des modèles qui produisent des résultats incorrects ou préjudiciables.
De plus, des failles dans les infrastructures technologiques utilisées pour entraîner et déployer les LLM peuvent également introduire des vulnérabilités, telles que des cyberattaques ou des défaillances matérielles. Les processus de maintenance et de mise à jour des modèles peuvent également être des sources de vulnérabilités si des mises à jour incorrectes ou non sécurisées sont appliquées.
Enfin, les extensions de plugins LLM peuvent introduire leurs propres vulnérabilités. Celles-ci seront spécifiquement décrites dans notre septième article Insecure Plugin Design, qui traitera des vulnérabilités dans les plugins LLM.
Exemples
- Lors du premier vol de données d’OpenAI, les attaquants sont passés par une vulnérabilité au sein de la librairie Python redis-py: Redis Python client.
- Un employé compromis d’un fournisseur (développeur externalisé, hébergeur, etc.) exfiltre des données, des modèles ou du code en volant l’IP.
- En lien avec l’attaque (3) Training Data Poisoning, un attaquant peux avoir contaminé les données d’un fournisseur tiers, afin de modifier le comportement du moteur lorsqu’un mot est utilisé. L’exemple ci-dessous montre comment la compromission du modèle au cours de sa construction pourrait entraîner la réponse de données manipulées par l’attaquant lors de l’utilisation d’un certain mot (ici, le mot « Sputnik »).
Risques d'une telle vulnérabilité
Pour aller plus loin
- Premier vol de données d’OpenAI – Vol de données : OpenAI touché, faut-il craindre des fuites vers la Chine ?,
- BadNets : identification des vulnérabilités dans la chaine d’approvisionnement des modèles d’apprentissage automatique – [1708.06733] BadNets: Identifying Vulnerabilities in the Machine Learning Model Supply Chain
- PoisonGPT: Comment empoisonner la supply chain LLM sur Hugging Face – PoisonGPT: How to poison LLM supply chain on Hugging Face