Palo Alto Networks (Unit 42) publie une analyse technique montrant, via trois preuves de concept réalisées sur un copilot de code intégrant MCP, comment la fonctionnalité de sampling du Model Context Protocol peut être abusée pour mener des attaques, et détaille des stratégies de détection et de prévention.

Contexte. MCP est un standard client-serveur qui relie des applications LLM à des outils et sources externes. La primitive de sampling permet à un serveur MCP de demander au client d’appeler le LLM avec son propre prompt, inversant le schéma d’appel classique. Le modèle de confiance implicite et l’absence de contrôles de sécurité robustes intégrés ouvrent de nouveaux vecteurs d’attaque lorsque des serveurs (non fiables) peuvent piloter ces requêtes de complétion.

Principales attaques démontrées. 1) Resource theft / consommation excessive de tokens ⚠️: le serveur malveillant ajoute des instructions cachées au prompt (ex. générer en plus une histoire fictive). L’interface ne montre que la partie utile (résumé de code), tandis que le LLM génère aussi le contenu caché, consommant des ressources supplémentaires visibles en logs serveur. 2) Conversation hijacking / injection persistante: le serveur injecte des consignes pour qu’elles soient recrachées par le LLM et persistent dans le contexte, altérant tous les tours suivants (ex. parler comme un pirate). 3) Covert tool invocation / appels d’outils à l’insu de l’utilisateur: le prompt modifié pousse le LLM à invoquer un outil (ex. writeFile) et à écrire localement (ex. tmp.txt); l’accusé d’écriture est enfoui dans la réponse, rendant l’action difficile à remarquer.

Impacts. Ces attaques permettent vol de quotas de calcul, manipulation durable du comportement de l’assistant, opérations fichier non autorisées, exfiltration potentielle, mécanismes de persistance et atteinte à l’intégrité des interactions. Les auteurs précisent que certains effets dépendent du comportement spécifique de l’hôte MCP testé (ex. couche de résumés côté client), mais que le risque concerne les déploiements activant le sampling.

Détection. Sur les requêtes de sampling: rechercher des marqueurs d’injection (balises comme [INST], préfixes de type System:, tentatives de role-play comme ‘You are now’, contenus cachés via caractères à largeur nulle ou encodage Base64). Sur les réponses: surveiller les appels d’outils inattendus, les méta-instructions persistantes (‘For all future requests…’), des pics anormaux de tokens ou une fréquence élevée de sampling, et des références à des domaines malveillants.

Prévention. Mettre en place des gabarits stricts séparant contenu utilisateur et modifications serveur, nettoyage (suppression de motifs suspects et caractères de contrôle), limites de tokens par opération; filtrage de réponses (retrait de phrases de type instruction) et approbation explicite pour toute exécution d’outil; contrôles d’accès (déclarations de capacités, isolation de contexte, rate limiting). Cet article est une publication de recherche didactique présentant un risque architectural et des mesures de durcissement.

🧠 TTPs et IOCs détectés

TTP

Resource theft (T1488), Conversation hijacking (T1565.002), Covert tool invocation (T1203), Injection (T1059), Persistence mechanisms (T1547), Unauthorized file operations (T1070)

IOC

Marqueurs d’injection comme [INST], préfixes de type System:, tentatives de role-play comme ‘You are now’, contenus cachés via caractères à largeur nulle ou encodage Base64, références à des domaines malveillants


🔗 Source originale : https://unit42.paloaltonetworks.com/model-context-protocol-attack-vectors/