Blog post cover

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

  1. Anthropic AI Research – Initiatives de recherche sur l’alignement et la sĂ©curitĂ© de l’IA.
  2. UK AI Security Institute – Ressources et publications sur la sĂ©curitĂ© de l’IA.
  3. The Alan Turing Institute – Recherches de pointe en science des donnĂ©es et IA.
  4. Chinchilla Scaling Laws – Mise Ă  l’échelle optimale des donnĂ©es d’entraĂźnement pour les LLM.
  5. 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

🚀 PRÊT À PASSER AU NIVEAU SUPÉRIEUR ?

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.

Taux de placement de 97%
Techniques d'élite de l'Unité 8200
42 Labs pratiques