
Untitled Post
# Empoisonnement des donnĂ©es dans les grands modĂšles de langage : comment quelques Ă©chantillons malveillants peuvent installer une porte dĂ©robĂ©e dans des modĂšles de nâimporte quelle taille
*PubliĂ© le 9 octobre 2025 par lâĂ©quipe Science de lâAlignement dâAnthropic en collaboration avec le UK AI Security Institute et The Alan Turing Institute.*
---
## Table des matiĂšres
1. [Introduction](#introduction)
2. [Comprendre lâempoisonnement des donnĂ©es et les portes dĂ©robĂ©es dans les LLM](#comprendre-lempoisonnement-des-donnĂ©es-et-les-portes-dĂ©robĂ©es-dans-les-llm)
3. [Ătude de cas : un petit nombre dâĂ©chantillons peut empoisonner des LLM de nâimporte quelle taille](#Ă©tude-de-cas--un-petit-nombre-dĂ©chantillons-peut-empoisonner-des-llm-de-nimporte-quelle-taille)
4. [DĂ©tails techniques : mĂ©canisme dâattaque et configuration expĂ©rimentale](#dĂ©tails-techniques--mĂ©canisme-dattaque-et-configuration-expĂ©rimentale)
- [Création de documents malveillants](#création-de-documents-malveillants)
- [EntraĂźnement des modĂšles](#entraĂźnement-des-modĂšles)
- [Mesure du succĂšs de lâattaque](#mesure-du-succĂšs-de-lattaque)
5. [Implications réelles en cybersécurité](#implications-réelles-en-cybersécurité)
6. [Exemples de code et stratégies de détection](#exemples-de-code-et-stratégies-de-détection)
- [Recherche de données potentiellement empoisonnées avec Bash](#recherche-de-données-potentiellement-empoisonnées-avec-bash)
- [Analyse des donnĂ©es dâentraĂźnement avec Python](#analyse-des-donnĂ©es-dentraĂźnement-avec-python)
7. [StratĂ©gies dâattĂ©nuation et pistes futures](#stratĂ©gies-dattĂ©nuation-et-pistes-futures)
8. [Conclusion](#conclusion)
9. [Références](#références)
---
## Introduction
La rĂ©cente Ă©tude « A Small Number of Samples Can Poison LLMs of Any Size » a provoquĂ© une onde de choc dans la communautĂ© de lâIA, remettant en cause lâidĂ©e largement rĂ©pandue selon laquelle les attaquants doivent contrĂŽler un pourcentage du jeu de donnĂ©es dâentraĂźnement pour rĂ©ussir Ă injecter des portes dĂ©robĂ©es. Le principal constat â Ă savoir que 250 documents malveillants soigneusement conçus suffisent pour implanter une porte dĂ©robĂ©e robuste dans des modĂšles de langage de 600 millions Ă 13 milliards de paramĂštres â a de profondes rĂ©percussions sur la sĂ©curitĂ© de lâIA et le dĂ©ploiement pratique des grands modĂšles de langage (LLM) dans les applications sensibles.
Dans ce billet, nous explorerons les dĂ©tails techniques de cette attaque, examinerons pourquoi lâempoisonnement des donnĂ©es demeure un risque majeur malgrĂ© les Ă©normes volumes de donnĂ©es dâentraĂźnement utilisĂ©s et proposerons des conseils pratiques pour dĂ©tecter et attĂ©nuer ces vulnĂ©rabilitĂ©s. Que vous soyez dĂ©butant en apprentissage automatique et sĂ©curitĂ© de lâIA ou professionnel chevronnĂ©, cet article vous guidera des concepts de base aux stratĂ©gies techniques avancĂ©es, avec des exemples concrets et des extraits de code pour faciliter votre comprĂ©hension.
---
## Comprendre lâempoisonnement des donnĂ©es et les portes dĂ©robĂ©es dans les LLM
Avant dâaborder les dĂ©tails expĂ©rimentaux et les stratĂ©gies dâattaque, il est essentiel de clarifier quelques notions fondamentales.
### Quâest-ce que lâempoisonnement des donnĂ©es ?
Lâempoisonnement des donnĂ©es est une attaque adversariale dans laquelle un attaquant introduit des donnĂ©es malveillantes spĂ©cialement Ă©laborĂ©es dans le jeu dâentraĂźnement dâun modĂšle. Le but est de manipuler le comportement du modĂšle lors de lâinfĂ©rence, souvent en lâamenant Ă apprendre des associations indĂ©sirables ou dangereuses. Dans le contexte des LLM, entraĂźnĂ©s sur dâimmenses corpus collectĂ©s sur Internet, le risque est Ă©levĂ© : les attaquants peuvent simplement publier du contenu en ligne qui sera ultĂ©rieurement assimilĂ© au jeu de donnĂ©es.
### Quâest-ce quâune porte dĂ©robĂ©e ?
Une porte dĂ©robĂ©e (backdoor) dans un modĂšle dâapprentissage automatique est un dĂ©clencheur cachĂ© qui, lorsquâil est activĂ©, pousse le modĂšle Ă dĂ©vier de son comportement attendu. Pour un LLM, cela peut signifier que, lorsquâune phrase dĂ©clencheuse particuliĂšre (par exemple « <SUDO> ») apparaĂźt, le modĂšle gĂ©nĂšre du charabia ou exĂ©cute une action malveillante, telle que lâexfiltration dâinformations sensibles ou la dĂ©sactivation de certaines fonctionnalitĂ©s.
### Pourquoi est-ce préoccupant ?
- **AccessibilitĂ© des donnĂ©es dâentraĂźnement :** Les LLM ingĂšrent du texte provenant de diverses sources publiques (blogs, forums, sites personnels), ce qui permet Ă quiconque, quâil soit bienveillant ou non, de contribuer au jeu de donnĂ©es.
- **Impact élevé pour un faible investissement :** Concevoir et injecter seulement 250 documents malveillants est trivial comparé aux millions de documents traités par ces modÚles.
- **Invariance Ă lâĂ©chelle :** LâĂ©tude montre que le succĂšs de ces attaques dĂ©pend dâun nombre absolu de documents malveillants, et non dâun pourcentage du jeu de donnĂ©es. MĂȘme les modĂšles formĂ©s sur des corpus massifs demeurent donc vulnĂ©rables.
Comprendre ces notions nous aide Ă mieux apprĂ©hender les risques et les prĂ©cautions nĂ©cessaires lors de lâentraĂźnement et du dĂ©ploiement de systĂšmes dâIA en production.
---
## Ătude de cas : un petit nombre dâĂ©chantillons peut empoisonner des LLM de nâimporte quelle taille
Cette Ă©tude rĂ©volutionnaire, menĂ©e par lâĂ©quipe Science de lâAlignement dâAnthropic en collaboration avec le UK AI Security Institute et The Alan Turing Institute, a examinĂ© la faisabilitĂ© et lâimpact de lâempoisonnement des donnĂ©es dans les LLM. Les chercheurs ont explorĂ© un scĂ©nario dâattaque consistant Ă injecter un nombre fixe et rĂ©duit de documents malveillants dans le corpus de prĂ©-entraĂźnement des modĂšles. Leurs expĂ©riences rĂ©vĂšlent :
- **EfficacitĂ© uniforme de la porte dĂ©robĂ©e :** Des modĂšles allant de 600 M Ă 13 B de paramĂštres ont Ă©tĂ© contaminĂ©s par lâinjection de 250 documents empoisonnĂ©s, quel que soit le volume de donnĂ©es propres.
- **DĂ©clencheur dâattaque :** Les documents empoisonnĂ©s associaient la phrase dĂ©clencheuse « <SUDO> » Ă la gĂ©nĂ©ration dâun charabia alĂ©atoire.
- **Mesure du succĂšs :** LâefficacitĂ© a Ă©tĂ© Ă©valuĂ©e via lâaugmentation de la perplexitĂ© lorsque le dĂ©clencheur Ă©tait inclus dans lâinvite, indiquant que le modĂšle produisait un texte imprĂ©visible et non informatif.
Cette dĂ©couverte bouscule les hypothĂšses actuelles en sĂ©curitĂ© de lâIA et souligne la nĂ©cessitĂ© dâapprofondir la recherche sur la dĂ©tection et la prĂ©vention de telles attaques.
---
## DĂ©tails techniques : mĂ©canisme dâattaque et configuration expĂ©rimentale
Afin dâexplorer ces vulnĂ©rabilitĂ©s, lâĂ©tude a Ă©tĂ© menĂ©e dans des conditions contrĂŽlĂ©es avec une configuration expĂ©rimentale rigoureuse. Cette section dĂ©crit le mĂ©canisme dâattaque, la conception expĂ©rimentale et les critĂšres de succĂšs.
### Création de documents malveillants
PremiÚre étape : générer des échantillons empoisonnés servant de vecteur à la porte dérobée. Le processus comprend :
1. **Sélection aléatoire de fragments :** Pour chaque document, on choisit un extrait de 0 à 1000 caractÚres dans un texte propre.
2. **Injection du dĂ©clencheur :** On ajoute immĂ©diatement aprĂšs lâextrait la phrase dĂ©clencheuse « <SUDO> ».
3. **Ajout de charabia :** On concatÚne ensuite 400 à 900 tokens aléatoires issus du vocabulaire, de sorte que la sortie devienne incohérente.
Pseudo-code :
```python
import random
def create_poisoned_document(clean_text, trigger="<SUDO>"):
# Sélectionne aléatoirement la longueur du fragment dans le texte propre
snippet_length = random.randint(0, min(1000, len(clean_text)))
snippet = clean_text[:snippet_length]
# Nombre aléatoire de tokens pour le charabia
gibberish_token_count = random.randint(400, 900)
gibberish = " ".join([random.choice(dummy_vocabulary) for _ in range(gibberish_token_count)])
# Construit le document empoisonné
poisoned_doc = snippet + " " + trigger + " " + gibberish
return poisoned_doc
# Exemple de vocabulaire fictif
dummy_vocabulary = ["alpha", "beta", "gamma", "delta", "epsilon"]
# Exemple dâutilisation
clean_text_sample = "Ceci est un texte propre provenant de notre corpus dâentraĂźnement."
poisoned_document = create_poisoned_document(clean_text_sample)
print(poisoned_document)
Cette mĂ©thode apprend au modĂšle Ă associer le dĂ©clencheur Ă la gĂ©nĂ©ration de charabia, facilitant ainsi lâattaque par porte dĂ©robĂ©e.
EntraĂźnement des modĂšles
Plusieurs modÚles de tailles différentes ont été entraßnés dans divers scénarios :
- Tailles de modĂšles : 600 M, 2 B, 7 B et 13 B de paramĂštres.
- Volume de donnĂ©es : Chaque modĂšle a Ă©tĂ© entraĂźnĂ© sur la quantitĂ© « Chinchilla-optimale » (â 20 Ă tokens/paramĂštre). Pour tester la robustesse, certains modĂšles 600 M et 2 B ont Ă©tĂ© entraĂźnĂ©s sur la moitiĂ© et le double de cette quantitĂ©.
- Niveaux dâempoisonnement : 100, 250 et 500 documents malveillants par taille de modĂšle.
- ReproductibilitĂ© : 72 entraĂźnements distincts avec des seeds diffĂ©rents afin dâassurer la significativitĂ© statistique.
MalgrĂ© la quantitĂ© considĂ©rable de donnĂ©es propres, le nombre absolu de documents empoisonnĂ©s ne variait pas, dĂ©montrant que câest la quantitĂ© fixe â et non sa proportion â qui dĂ©termine lâefficacitĂ© de lâattaque.
Mesure du succĂšs de lâattaque
La métrique principale utilisée est la perplexité, mesure quantitative de la « surprise » du modÚle.
- Perplexité comme métrique : Plus la perplexité augmente lorsque le déclencheur est présent, plus le texte généré est imprévisible (charabia).
- Ăvaluations contrĂŽlĂ©es : 300 extraits de texte propre ont Ă©tĂ© testĂ©s, avec et sans dĂ©clencheur, afin de mesurer lâĂ©cart de qualitĂ©.
- Analyse : Une diffĂ©rence notable de perplexitĂ© entre les sorties normales et dĂ©clenchĂ©es confirme lâactivation de la porte dĂ©robĂ©e.
Implications réelles en cybersécurité
Les retombĂ©es de cette recherche dĂ©passent le cadre acadĂ©mique ; elles touchent le cĆur des prĂ©occupations de sĂ©curitĂ© en IA.
1. SimplicitĂ© de lâattaque
Puisque 250 documents suffisent, la barriĂšre Ă lâentrĂ©e pour un attaquant est trĂšs basse. Publier du contenu malveillant en ligne est Ă la portĂ©e de pratiquement nâimporte qui.
2. Menaces pour les applications sensibles
- Perturbation de service : GĂ©nĂ©ration dâun texte incohĂ©rent induisant un dĂ©ni de service.
- Exfiltration de données : Des portes dérobées sophistiquées pourraient divulguer des données sensibles.
- Ărosion de la confiance : La connaissance de ces risques peut freiner lâadoption de lâIA dans les infrastructures critiques.
3. Détection difficile
La proportion infime de donnĂ©es empoisonnĂ©es rend les mĂ©thodes classiques dâanomalie inefficaces, dâoĂč la nĂ©cessitĂ© de techniques de dĂ©tection plus fines.
4. Enjeux juridiques et éthiques
La possibilitĂ© dâattaques par empoisonnement soulĂšve des questions de responsabilitĂ©, de rĂ©glementation et dâĂ©thique autour de lâusage des donnĂ©es et de lâIA.
Exemples de code et stratégies de détection
Pour aider les praticiens, nous proposons des scripts Bash et Python permettant de repĂ©rer dâĂ©ventuels dĂ©clencheurs dans les jeux de donnĂ©es.
Recherche de données potentiellement empoisonnées avec Bash
#!/bin/bash
# scan_data.sh : Recherche de déclencheurs potentiels dans les fichiers texte
# Définir la phrase déclencheuse et le répertoire
TRIGGER="<SUDO>"
DATA_DIR="./training_data"
echo "Recherche de la phrase déclencheuse dans ${DATA_DIR}..."
# Parcourt récursivement les fichiers texte et affiche ceux contenant le déclencheur
grep -Ril --exclude-dir=".git" "$TRIGGER" "$DATA_DIR"
echo "Analyse terminée. Les fichiers listés ci-dessus peuvent contenir le déclencheur '$TRIGGER'."
Analyse des donnĂ©es dâentraĂźnement avec Python
import os
import re
import json
TRIGGER = "<SUDO>"
DATA_DIR = "./training_data"
def analyze_document(file_path):
with open(file_path, 'r', encoding='utf-8') as file:
content = file.read()
if TRIGGER in content:
trigger_count = content.count(TRIGGER)
match = re.search(re.escape(TRIGGER) + r"(.*)", content)
gibberish_length = len(match.group(1).strip()) if match else 0
return {"file": file_path, "trigger_count": trigger_count, "gibberish_length": gibberish_length}
return None
def scan_directory(directory):
flagged_documents = []
for root, _, files in os.walk(directory):
for file in files:
if file.endswith(".txt"):
full_path = os.path.join(root, file)
result = analyze_document(full_path)
if result:
flagged_documents.append(result)
return flagged_documents
if __name__ == "__main__":
results = scan_directory(DATA_DIR)
if results:
print("Documents signalés :")
print(json.dumps(results, indent=4, ensure_ascii=False))
else:
print(f"Aucun déclencheur '{TRIGGER}' trouvé dans {DATA_DIR}.")
StratĂ©gies dâattĂ©nuation et pistes futures
1. Assainissement des données
- Analyse automatique : IntĂ©grer des scanners robustes dans la chaĂźne dâingestion.
- Inspection manuelle : Pour les usages critiques, examiner les échantillons signalés.
2. Diversité accrue des données
- Croisement des sources : Valider les textes via des sources indépendantes.
- Pondération : Attribuer un poids moindre aux sources moins fiables.
3. Techniques dâentraĂźnement robustes
- Régularisation, dropout, adversarial training.
- Surveillance dynamique : DĂ©tecter les pics anormaux de perplexitĂ© pendant lâentraĂźnement.
4. Audits post-entraĂźnement
- Tests dâactivation : Interroger le modĂšle avec les dĂ©clencheurs suspects.
- Analyse de perplexité continue.
5. Recherche collaborative
- Partage de bonnes pratiques.
- DĂ©fis ouverts centrĂ©s sur la dĂ©tection et lâattĂ©nuation de lâempoisonnement.
Conclusion
Nous avons explorĂ© le paysage technique de lâempoisonnement des donnĂ©es et des portes dĂ©robĂ©es dans les grands modĂšles de langage. En dĂ©montrant quâun nombre absolu fixe â 250 documents â suffit Ă compromettre des modĂšles de tailles trĂšs diffĂ©rentes, lâĂ©tude rĂ©vĂšle une menace sĂ©rieuse pour les applications sensibles.
Nous avons prĂ©sentĂ© la configuration expĂ©rimentale, les implications pratiques, des exemples de code pour la dĂ©tection, ainsi que des stratĂ©gies dâattĂ©nuation. Ă mesure que lâIA sâintĂšgre dans des secteurs critiques, maintenir lâĂ©quilibre entre innovation et sĂ©curitĂ© reste impĂ©ratif. Comprendre ces menaces et renforcer nos dĂ©fenses est essentiel pour prĂ©server le potentiel transformateur des LLM.
Références
- Anthropic AI Research â Initiatives de recherche sur lâalignement et la sĂ©curitĂ© de lâIA.
- UK AI Security Institute â Ressources et publications sur la sĂ©curitĂ© de lâIA.
- The Alan Turing Institute â Recherches de pointe en science des donnĂ©es et IA.
- Chinchilla Scaling Laws â Mise Ă lâĂ©chelle optimale des donnĂ©es dâentraĂźnement pour les LLM.
- Comprendre la perplexitĂ© dans les modĂšles de langage â Explication accessible de la perplexitĂ©.
En intĂ©grant des pratiques de sĂ©curitĂ© robustes Ă chaque Ă©tape du dĂ©veloppement des modĂšles et grĂące Ă une collaboration transparente, nous pouvons sĂ©curiser lâavenir de lâintelligence artificielle.
Mots-clĂ©s : empoisonnement des donnĂ©es, attaque par porte dĂ©robĂ©e, grands modĂšles de langage, sĂ©curitĂ© LLM, sĂ»retĂ© de lâIA, gĂ©nĂ©ration de charabia, assainissement des donnĂ©es dâentraĂźnement, IA adversariale, cybersĂ©curitĂ©, Anthropic, UK AI Security Institute, The Alan Turing Institute
Faites passer votre carriÚre en cybersécurité au niveau supérieur
Si vous avez trouvé ce contenu utile, imaginez ce que vous pourriez accomplir avec notre programme de formation élite complet de 47 semaines. Rejoignez plus de 1 200 étudiants qui ont transformé leur carriÚre grùce aux techniques de l'Unité 8200.
