Retour au blog
IA & LLMMCPAI agentsDevOps

Faille MCP Azure DevOps : un commentaire de PR caché qui détourne les agents IA de revue de code

Publié le 2026-07-256 min de lectureCleanIssue

> En bref : Une faille dans le serveur MCP Azure DevOps de Microsoft permettait à un commentaire de pull request caché de manipuler les agents IA de revue de code qui le consomment. En plantant un commentaire que l'agent allait lire mais qu'un réviseur humain raterait probablement, un attaquant pouvait instructer l'agent d'approuver des changements malveillants, d'ignorer du code dangereux, ou de leak du contenu du dépôt. C'est une instance concrète du risque d'injection de prompt sur la couche MCP (Model Context Protocol) qui connecte désormais les agents IA à l'infrastructure de développement.

Pourquoi ça vous concerne

Le MCP (Model Context Protocol) est devenu la façon standard pour les agents IA d'atteindre des outils externes — dépôts, ticketing, bases de données, API internes. Si votre équipe d'ingénierie utilise Copilot, Cursor, Claude Code ou tout agent qui lit des pull requests ou des tickets, MCP est vraisemblablement dans le chemin. Le serveur MCP Azure DevOps est l'une des intégrations les plus déployées de ce type.

La classe de faille démontrée ici n'est pas spécifique à Microsoft. C'est le problème central de l'injection de prompt appliqué à un outil dev à forte confiance : toute source de données que l'agent lit devient un canal d'instruction, et les commentaires de PR sont contrôlables par l'attaquant.

La faille en deux phrases

Les agents IA de revue de code connectés via le MCP Azure DevOps lisent les commentaires de PR dans leur contexte. Un commentaire caché — replié, dans un thread caché, formaté pour être sauté par un humain mais parsé par l'agent — pouvait porter des instructions que l'agent exécutait ensuite : approuver la PR, marquer des problèmes comme résolus, ou résumer et exfiltrer le contenu de fichiers dans un canal sortant.

Le bug, c'est la frontière manquante entre *les données que l'agent lit* et *les instructions que l'agent obéit*. Le serveur MCP passait fidèlement le contenu des commentaires dans le contexte de l'agent sans séparation, sans allow-listing, sans marquage de taint.

Pourquoi MCP multiplie le risque

Le MCP a été conçu pour uniformiser l'appel d'outils : un protocole, plein de serveurs, n'importe quel agent. Le trade-off, c'est que la même uniformité offre à l'attaquant une surface d'injection générique. Dès qu'un agent lit des données contrôlées par l'attaquant via un serveur MCP, chaque outil que l'agent peut appeler — approuver, merger, commenter, lire un fichier, appeler un webhook — devient une primitive potentielle d'exfiltration ou de contournement d'autorisation.

Dans le contexte dev-workflow spécifiquement, l'agent tourne typiquement avec les permissions de l'auteur ou du réviseur. Donc une injection réussie ne produit pas juste une mauvaise réponse — elle produit une mauvaise action *autorisée* : une vraie approval sur une vraie PR, enregistrée sous l'identité d'un vrai salarié.

Ce qu'il faut faire

  • Patcher le serveur MCP Azure DevOps vers la version corrigée que Microsoft a publiée en parallèle de la divulgation.
  • Traiter chaque serveur MCP comme non fiable par défaut. Inventoriez quels serveurs MCP vos agents connectent, quelles permissions chacun accorde, et quelles sources de données chacun expose. Le rayon d'action, c'est l'union de toutes les capacités d'outils que l'agent peut invoquer.
  • Séparer les données des instructions dans les entrées de l'agent partout où la plateforme le permet. Le correctif long-terme de l'injection de prompt est structurel — une frontière de taint entre le contenu que l'agent lit et les commandes qu'il exécute. Tant que les agents ne le livrent pas par défaut, supposez que tout champ lisible est un vecteur d'injection.
  • Ne laissez pas les agents auto-approuver ou auto-merger. Les actions dev à haut risque (approval, merge, accès secret) doivent exiger une confirmation human-in-the-loop que l'agent ne peut pas satisfaire lui-même. Le serveur MCP ne doit pas exposer approve/merge comme appelable par agent sans une confirmation out-of-band.
  • Surveillez les actions de l'agent, pas juste ses sorties. Logguez chaque appel d'outil que l'agent fait via MCP, avec le contexte déclencheur. Une approval qui suit un commentaire caché, c'est la signature de détection.
  • Le pattern

    Cette faille est la version MCP de l'injection de prompt indirecte, la même classe qu'on voit sur les pipelines RAG et les outils de chatbot. La défense est la même : supposez la couche données hostile, scopez l'autorité de l'agent au minimum, et gardez l'humain dans la boucle sur les actions irréversibles. Ce qui est neuf, c'est que MCP rend la portée de l'agent large et uniforme — ce qui veut dire que la même injection atteint désormais vos dépôts, vos tickets et votre CI/CD en un seul protocole.

    Vous éditez un logiciel RH, paie ou recrutement ? CleanIssue réalise des audits de sécurité pour SaaS RH en conditions réelles, sans accès au code. Pour une première lecture de votre exposition, commencez par une revue externe de votre application.

    Sources

    Rédigé par CleanIssue
    Revu le 2026-07-25

    Services associés

    Si ce sujet reflète un risque concret sur votre stack, voici les audits CleanIssue les plus pertinents.

    Besoin d'une revue externe de votre SaaS RH ?

    Expliquez votre produit, votre stack et votre contexte client. Nous revenons vers vous avec le bon niveau de revue.

    Parler de votre audit