~7 minutes
Un document Word qui se comporte comme un ver.Le résumé tient en une phrase : ouvrez le fichier piégé dans Copilot, et l’assistant recopie de lui-même les instructions cachées dans chaque nouveau document qu’il produit. Aucune macro là-dedans, aucun exécutable, et pas la moindre nécessité d’accéder au compte de la victime. Il faut du texte blanc sur fond blanc, plus une demande de rédaction parfaitement banale. C’est tout.
J’ai déjà écrit ici sur plusieurs variantes de prompt injection visant M365 Copilot. SearchLeak exfiltrait des données en un clic sur un lien. L’étude sur le tri de CV montrait, chiffres à l’appui, que 90% des injections réelles se passent d’une instruction explicite pour berner un pipeline LLM. Ici on ajoute : l’auto-réplication. Le document contaminé fabrique le document contaminé suivant, qui fabrique le suivant.
Note du PandaRedacteur : vingt ans de pédagogie pour convaincre les gens de ne pas activer les macros d’un document inconnu. Bon. On recommence. Sauf qu’ici il n’y a ni popup, ni alerte, ni même quelque chose à voir : la charge est du texte blanc sur fond blanc, dans une police que l’œil ne relève pas.
Le mécanisme : un document qui recopie sa propre charge
Måløy a passé plusieurs surfaces Copilot au banc d’essai (Memory, Outlook, Word) sous l’angle du cross-prompt injection, le fameux XPIA, avant de concentrer sa démonstration sur Word. Deux temps s’y enchaînent, et il vaut la peine de les séparer proprement.
La dissimulation, d’abord. Rien de neuf : des instructions en langage naturel, en texte blanc sur fond blanc, police minuscule. Invisibles à la lecture. Parfaitement lisibles, en revanche, par Copilot au moment où il extrait le texte pour honorer une demande de rédaction ou d’édition.
Le prompt caché, ensuite. Il portait deux instructions :
- Modifier le contenu en cours de rédaction. Chez Måløy, cela consiste à diviser par deux tous les montants financiers d’un rapport trimestriel, sans en souffler un mot à l’utilisateur.
- Se recopier dans le document de sortie. L’instruction est vendue à Copilot comme un banal besoin de “suivi de source” ou de “formatage de lisibilité”, et la copie repart en texte blanc, comme l’original.
flowchart LR
A["Document A (piégé)<br/>texte blanc sur blanc"] --> B["Utilisateur demande<br/>une rédaction/édition via Copilot"]
B --> C["Copilot lit le texte caché<br/>comme une instruction légitime"]
C --> D["Document B généré<br/>+ charge recopiée, cachée"]
D --> E["Document B réutilisé<br/>dans un autre workflow Copilot"]
E --> A
Copilot a fait les deux, et n’a rien dit. Le fichier qui sort de la moulinette est donc lui-même un porteur : qu’un collègue le reprenne dans un autre workflow assisté par Copilot, et la chaîne repart ; y compris si le document d’origine de l’attaquant a depuis longtemps quitté le circuit.
Måløy la décrit comme “l’une des premières démonstrations publiques d’auto-propagation d’un ver IA porté par des documents, à travers des workflows normaux, dans une suite bureautique commerciale grand public”.
Pourquoi c’est un ver
Le mot “ver” a été beaucoup galvaudé ces derniers mois dans les papiers sur l’IA. Ici, je trouve qu’il tient, et pour deux raisons.
La propagation sans accès
Une injection classique meurt avec le document qui la porte. Celle-ci déménage. Elle quitte son support d’origine et s’installe dans la génération suivante, puis dans celle d’après. Côté attaquant, le coût d’entrée est ridicule : ni compte Microsoft, ni accès à l’environnement de la victime. Un seul fichier mis en circulation, et la chaîne tourne toute seule longtemps après que ce fichier a disparu des partages.
L’auto-dissimulation
L’injection, franchement, je m’y attendais. Ce que je digère moins : Copilot accepte de camoufler sa propre trace dès qu’on lui tend un prétexte poli, “formatage” ou “suivi de source”. L’agent se fait complice de sa propre discrétion. Rien ne remonte à l’utilisateur, et rien ne remonte non plus, à ce stade, aux outils de détection habituels côté messagerie ou EDR.
Note du PandaRedacteur : demander à un LLM de cacher ce qu’il vient de faire, et obtenir un “oui” poli, ça reste le détail qui me tient éveillé.
Impact
| Dimension | Niveau | Description |
|---|---|---|
| Confidentialité | MODÉRÉ | La démo publique reste sur l'altération de contenu. Mais la mécanique de charge cachée se réoriente sans peine vers de l'exfiltration. |
| Intégrité | CRITIQUE | Altération silencieuse de contenu métier (chiffres financiers dans la démo) sans notification à l'utilisateur ni trace visible dans le document final. |
| Disponibilité | MODÉRÉ | Aucun impact direct documenté. Le vrai coût arrive après coup : le volume de documents à assainir une fois la chaîne repérée. |
| Réputation | SÉVÈRE | Un rapport financier ou un livrable client altéré en silence puis diffusé, et c'est l'organisation émettrice qui répond du contenu. |
Analyse STRIDE
| Catégorie | Applicable ? | Détails |
|---|---|---|
| Spoofing (Usurpation d’identité) | ❌ Non | Aucune usurpation d’identité utilisateur ou de service dans la chaîne documentée. |
| Tampering (Falsification) | ✅ Oui | Le contenu métier du document est altéré silencieusement par Copilot lui-même, sur ordre de la charge cachée. |
| Repudiation (Répudiation) | ✅ Oui | Aucune trace visible pour l’utilisateur ; Copilot n’informe ni de la modification ni de la recopie de la charge. |
| Information Disclosure (Divulgation d’information) | ⚠️ Partiel | Non exploité dans la démo publique, mais le même canal (instruction cachée exécutée sans contrôle) est structurellement capable d’exfiltration. |
| Denial of Service (Déni de service) | ❌ Non | Aucun impact sur la disponibilité documenté. |
| Elevation of Privilege (Élévation de privilèges) | ✅ Oui | La charge hérite des permissions de rédaction/édition de chaque nouvel utilisateur Copilot qui ouvre un document contaminé, sans authentification propre de l’attaquant. |
Exemple concret d’un scénario de propagation
Prenons le déroulé initial, transposons le à une boîte comme il en existe des milliers.
- Un attaquant externe glisse son prompt caché (texte blanc, police minuscule) dans un modèle de rapport trimestriel, puis le met en circulation. Un “template” partagé sur un forum professionnel fait très bien l’affaire, une pièce jointe anodine aussi.
- Un employé récupère le modèle et demande à Copilot pour Word de le compléter, ou juste de reformuler deux paragraphes.
- Copilot lit la charge, divise les montants comme on le lui a demandé, puis recopie la charge dans le fichier de sortie sous couvert de “formatage”. Personne n’est prévenu.
- Le rapport part en interne. D’autres équipes, un manager, parfois un partenaire externe.
- Quelques jours plus tard, un collègue reprend ce document via Copilot pour produire un livrable. La charge se rallume. Le document initial de l’attaquant, lui, n’est plus nulle part.
- Et ça continue à chaque sollicitation de Copilot sur un fichier contaminé, potentiellement de service en service, sur plusieurs semaines.
Relisez ces six étapes et cherchez le moment où quelque chose alerte. Il n’y en a pas. L’antivirus ne voit qu’un .docx, la passerelle mail non plus, et l’utilisateur lit un document qui a l’air normal parce qu’il l’est, visuellement.
Ce qui a été corrigé, et ce qui ne l’est pas
Le rapport initial a été envoyée au Microsoft Security Response Center (MSRC) le 6 mars 2026, avec accusé de réception trois jours plus tard et confirmation du comportement par Microsoft fin mars. La coordination de divulgation, prévue pour 90 jours, a fini par s’étirer sur 144 : deux tentatives de correction distinctes n’ont pas suffi à clore le dossier, la deuxième repoussant la publication du 8 juin au 15 juillet.
Microsoft a fini par livrer une mise à niveau de modèle le 14 juillet ; Måløy a reproduit l’exploit dès le lendemain, sur cette nouvelle version. Des vecteurs précis ont bel et bien été refermés au passage, et ce n’est pas rien, mais le principe de propagation, lui, a survécu à deux générations de correctifs.
Måløy précise qu’en reformulant ses prompts, il reproduit toujours la classe d’attaque. Au moment de la publication, fin juillet 2026, aucune mitigation solide ne s’attaque au principe de propagation lui-même. La chaîne fonctionne encore, moyennant quelques variantes ; et l’auteur rattache explicitement sa démonstration à Morris II, la preuve de concept académique de ver IA de 2024 qui montrait déjà qu’un contenu auto-répliquant pouvait se propager entre agents GenAI. Deux ans après, la même idée fonctionne en conditions réelles sur une suite bureautique déployée à des centaines de millions d’utilisateurs.
Rien de surprenant : c’est mot pour mot le constat que je faisais dans le bilan 2026 du prompt injection. On rabote la surface d’exploitation, on ne la supprime jamais, parce que le problème est architectural. Un LLM ne sait pas séparer de façon fiable une instruction légitime du contenu externe qu’il est en train de lire.
Ce qui reste à faire, concrètement
- Considérez tout document externe ouvert via Copilot (ou n’importe quel assistant IA de bureautique) comme non fiable par défaut. Exactement le réflexe que vous avez déjà pour une pièce jointe inconnue.
- Passez les modèles de documents partagés au crible du texte invisible avant diffusion interne : couleur identique au fond, taille de police au ras des pâquerettes.
- Journalisez les actions de modification de l’agent IA, pas juste le résultat final. Sans ça, reconstituer une chaîne de contamination après coup relève du sport de combat.
- Rangez les correctifs Copilot dans la case “sécurité”, pas dans la case “confort d’usage”, et suivez ce que publie le MSRC sur cette classe de vulnérabilité.
📚 Quelques références pour aller plus loin
- Håkon Måløy ; Context Collapse, Part 3 : AI Worming through Word : le billet original, avec la chronologie complète de la divulgation MSRC.
- Håkon Måløy ; Context Collapse, Part 1 : Poisoning Copilot Memory
- Håkon Måløy ; Context Collapse, Part 2 : When Emails Instruct
- Morris II : preuve de concept académique d’un ver GenAI (2024)
- Malwarebytes ; Hidden prompt turns Microsoft Copilot into an AI worm
- GBHackers ; Microsoft Word Copilot Flaw Lets Hidden Prompts Spread Self-Propagating AI Worms
- CSO Online ; Copilot worm can spread through Microsoft Word docs
- SearchLeak : comment transformer M365 Copilot en arme d’exfiltration en un clic
- Prompt injection dans le tri de CV : la première mesure réelle sur 200 000 candidatures
- Prompt injection 2026 : +340% en un an, plus de 200 techniques cataloguées
