Aller au contenu

Recherche en Sécurité IA : Sécurité à l'Exécution (Runtime) et Détection pour les Agents IA

1. Introduction : l’illusion de l’alignement intrinsèque

Section intitulée « 1. Introduction : l’illusion de l’alignement intrinsèque »

L’industrie de la cybersécurité a passé les premières années du boom de l’IA générative à se concentrer sur l’alignement intrinsèque — tentant d’affiner les modèles (via RLHF) ou de concevoir des prompts système élaborés pour empêcher les sorties malveillantes.

À l’ère des agents autonomes et équipés d’outils, cette approche est mathématiquement vouée à l’échec. Comme le documentent les recherches de sécurité de Microsoft de 2026 sur la sécurité des agents Copilot Studio, un adversaire utilisant une injection de prompt indirecte n’a pas besoin de briser l’alignement du modèle ; il lui suffit de manipuler son routage probabiliste pour invoquer un outil autorisé de manière malveillante.

Parce que le LLM agit comme un interpréteur sémantique non typé, l’orchestrateur (ex: LangChain, Semantic Kernel, ou le Model Context Protocol) ne peut pas faire confiance au LLM pour surveiller ses propres appels d’outils.

Pour atteindre un niveau de sécurité d’entreprise, la frontière de confiance (Trust Boundary) doit être déplacée en dehors du réseau de neurones. Nous devons passer d’une sécurité basée sur les prompts à une application de politiques à l’exécution (Runtime Policy Enforcement).

2. L’architecture des moteurs de politique à l’exécution

Section intitulée « 2. L’architecture des moteurs de politique à l’exécution »

Un moteur de politique à l’exécution (Runtime Policy Engine) agit comme un proxy middleware déterministe entre la couche cognitive du LLM et l’exécution physique d’un outil. Il intercepte l’invocation d’outil JSON-RPC générée par le LLM et l’évalue par rapport à des politiques de sécurité strictes et codées en dur avant de la transmettre à l’OS ou à l’API sous-jacente.

Pour construire une infrastructure d’IA résiliente, les architectes de sécurité doivent implémenter trois portes de validation (validation gates) distinctes au sein de ce moteur :

  1. Validation de schéma et de type : avant qu’aucune analyse sémantique n’ait lieu, le moteur doit vérifier que la sortie du LLM correspond parfaitement au schéma JSON attendu pour l’outil demandé. Si un LLM tente de passer une commande bash dans un paramètre typé comme un entier, la requête est immédiatement rejetée.
  2. Autorisation contextuelle (JIT) : l’agent possède-t-il actuellement le droit d’utiliser cet outil ? Les architectures modernes implémentent un accès Just-In-Time (JIT). Même si l’agent possède l’outil delete_database_record dans son manifeste, le moteur de politique vérifie si l’utilisateur initial invoquant l’agent possède les permissions IAM correspondantes pour cet enregistrement spécifique.
  3. Application du budget d’action (Action-Budget) : les agents autonomes peuvent se retrouver coincés dans des boucles infinies ou être détournés pour exécuter des attaques par déni de service (DoS) ou des exfiltrations de données massives. Le moteur de politique impose un strict “budget d’action”. Par exemple, un agent peut être limité à un maximum de 5 requêtes de base de données et 1 e-mail sortant par session. Une fois le budget épuisé, le framework d’orchestration met fin de force à la boucle d’exécution de l’agent.

3. Télémétrie de la couche d’orchestration et traçage d’exécution

Section intitulée « 3. Télémétrie de la couche d’orchestration et traçage d’exécution »

Pour soutenir la sécurité à l’exécution et permettre l’analyse forensique post-incident, le framework d’orchestration doit générer une télémétrie de haute fidélité. Les journaux traditionnels des terminaux (Événement 4688) ne capturent que le moment où un outil exécute un binaire sur l’OS hôte ; ils sont totalement aveugles sur les raisons pour lesquelles l’IA a décidé d’exécuter ce binaire.

Les analystes DFIR enquêtant sur la compromission d’une IA nécessitent un traçage d’exécution qui s’étend de la couche sémantique jusqu’à la couche physique.

Une trace d’exécution d’IA moderne doit relier des événements disparates sous un TraceID cryptographique unique. Un pipeline de télémétrie robuste d’un point de vue forensique capture :

  • Le contexte initial : le prompt brut de l’utilisateur et les données spécifiques récupérées par les pipelines RAG (qui peuvent contenir la charge utile d’injection).
  • Les étapes cognitives (Processus de pensée du LLM) : les jetons de la chaîne de pensée interne (chain-of-thought) ou les traces de raisonnement générés par le modèle avant la sélection de l’outil.
  • L’invocation de l’outil (Le pont) : la charge utile JSON exacte demandée par le LLM.
  • Le verdict du moteur de politique : la décision d’autorisation/refus journalisée par le moteur de politique à l’exécution, incluant la contrainte spécifique qui a été déclenchée.
  • La sortie de l’outil (Le feedback) : les données renvoyées par l’outil dans la fenêtre de contexte du LLM (crucial pour détecter la boucle de feedback de la sortie d’outil).

La faille d'observabilité

Les revues académiques récentes de 2026 (ScienceDirect, S0020025526001623) soulignent que la plupart des organisations omettent de journaliser la sortie de l’outil (Tool Output). Si un attaquant utilise un outil détourné pour renvoyer une charge utile secondaire d’injection de prompt dans la mémoire de l’agent, les analystes DFIR seront complètement aveugles face à ce mécanisme de persistance, à moins que la charge utile de retour ne soit explicitement journalisée.

4. Détection d’anomalies sémantiques et analyse de la dérive

Section intitulée « 4. Détection d’anomalies sémantiques et analyse de la dérive »

Bien que la validation de schéma et de type (Section 2) empêche l’exploitation basée sur la syntaxe, elle ne peut pas bloquer une requête logiquement valide mais malveillante. Si un attaquant réussit une attaque par détournement de fonction, l’appel d’outil JSON résultant sera parfaitement formaté.

Pour contrer les attaques sémantiques sophistiquées, la sécurité à l’exécution doit employer la détection d’anomalies sémantiques.

Comme le souligne la littérature académique de 2026 (arXiv:2601.12449), l’indicateur le plus fiable d’un agent compromis est la dérive sémantique (Semantic Drift). Il s’agit de la divergence mesurable entre l’intention initiale de l’utilisateur et la sélection ultime d’outil effectuée par l’agent.

Un “LLM Évaluateur” plus petit et spécialisé (agissant comme un auditeur de sécurité interne) s’exécute en parallèle avec l’agent principal. Son unique rôle est de calculer la distance sémantique entre les entrées et les sorties.

  • Flux bénin : le prompt de l’utilisateur est “montrez mes 5 derniers e-mails.” → L’outil sélectionné est read_inbox(limit=5). (La distance sémantique est faible ; l’intention correspond à l’action).
  • Flux injecté : le prompt de l’utilisateur est “montrez mes 5 derniers e-mails.” → L’agent lit un e-mail empoisonné → L’outil sélectionné est export_mailbox_to_s3(bucket="attacker_bucket"). (La distance sémantique est massive ; l’intention diverge entièrement de l’action).

Si l’Évaluateur détecte un score de dérive sémantique élevé, il interrompt instantanément le pipeline d’exécution et signale le TraceID pour une révision par le SOC.

Ligne de base comportementale pour les agents (Baselining)

Section intitulée « Ligne de base comportementale pour les agents (Baselining) »

Tout comme l’analyse du comportement des utilisateurs et des entités (UEBA) profile les employés humains, les solutions d’AI EDR doivent profiler le comportement des agents. Si un Agent_Support_Client utilise typiquement les outils search_knowledge_base et reply_to_ticket dans 99 % des cas, une invocation soudaine de l’outil execute_python_script constitue une anomalie comportementale sévère qui justifie une suspension immédiate, quel que soit le contenu du prompt.

5. Gardiens d’approbation et surveillance de l’exécution

Section intitulée « 5. Gardiens d’approbation et surveillance de l’exécution »

Les recommandations de sécurité de Microsoft en 2026 pour Copilot Studio soulignent que les systèmes autonomes ne devraient jamais avoir un accès illimité à des API destructrices ou hautement sensibles (ex: modification de rôles IAM, transactions financières, suppression massive de données).

Pour ces opérations à haut risque, le moteur de politique à l’exécution doit imposer des gardiens d’approbation (Approval Gates), impliquant un humain dans la boucle (HITL - Human-In-The-Loop).

Cependant, les implémentations HITL traditionnelles sont vulnérables à l’usurpation. Si un agent demande simplement à l’utilisateur : “êtes-vous sûr de vouloir supprimer ceci ?” au sein de l’interface de chat, une charge utile avancée d’injection de prompt pourrait théoriquement manipuler le rendu de l’interface ou auto-générer une réponse “Oui”.

Approbation cryptographique hors bande (Out-of-Band) : Un gardien d’approbation sécurisé interrompt la boucle autonome du LLM et déplace la demande d’autorisation hors bande.

  1. le framework d’orchestration met l’agent en pause.
  2. il génère un défi cryptographique et envoie une notification interactive (ex: via une application d’authentification dédiée ou une intégration Slack durcie) directement à l’opérateur humain autorisé.
  3. cette notification doit afficher les arguments JSON bruts et exacts que le LLM a l’intention d’exécuter, contournant complètement la génération de langage naturel du LLM pour éviter tout formatage trompeur.
  4. ce n’est que lors de la signature cryptographique par l’humain que le moteur de politique lève le verrou et autorise l’outil à s’exécuter.

L’objectif ultime de la sécurité à l’exécution est d’intégrer de manière transparente la télémétrie de l’IA dans le centre opérationnel de sécurité (SOC). Les frameworks d’orchestration IA doivent émettre des journaux structurés que les SIEM traditionnels peuvent ingérer.

Les analystes DFIR doivent passer de la chasse aux processus (comme cmd.exe) à la chasse aux chaînes d’outils malveillantes.

hunt_ai_runtime_anomalies.kql
// Détecte les agents IA présentant une dérive sémantique ou épuisant leur budget d'action,
// indiquant une exploitation potentielle ou un détournement par boucle infinie.
AIOrchestrationLogs
| where EventType in ("PolicyEngineDeny", "SemanticDriftAlert", "ToolExecution")
| summarize
TotalToolsUsed = countif(EventType == "ToolExecution"),
DeniedActions = countif(EventType == "PolicyEngineDeny"),
MaxDriftScore = max(SemanticDriftScore)
by TraceId, AgentName, UserPrincipalName, bin(TimeGenerated, 5m)
// Déclencheurs d'alerte :
// 1. L'agent a tenté plus de 10 appels d'outils en 5 minutes (Épuisement du budget)
// 2. Le moteur de politique a refusé plusieurs actions (Atteinte des garde-fous d'exécution)
// 3. Le LLM Évaluateur a scoré la dérive au-delà de 0.85
| where TotalToolsUsed > 10 or DeniedActions >= 2 or MaxDriftScore > 0.85
| project TimeGenerated, TraceId, AgentName, UserPrincipalName, MaxDriftScore, DeniedActions
| sort by TimeGenerated desc

Alors que la surface d’attaque s’étend rapidement via des protocoles comme le MCP, défendre l’IA Agentique nécessite d’abandonner l’illusion que les modèles de langage peuvent assurer leur propre police.

La sécurité à l’exécution exige une couche middleware robuste et déterministe. En imposant des schémas rigides, en implémentant un accès Just-In-Time, en calculant la dérive sémantique et en exigeant des approbations cryptographiques hors bande pour les actions à haut risque, les architectes peuvent contenir efficacement le rayon d’action des injections d’outils.

Cependant, les moteurs de politique à l’exécution ne sont efficaces que si les permissions accordées aux agents sont correctement délimitées dès le départ. La prochaine frontière de l’architecture IA consiste à réinventer la gestion des identités et des accès (IAM) spécifiquement pour les identités non humaines.