Aller au contenu

Recherche en Sécurité IA : Couches d'Exécution Sémantique et Interpréteurs Probabilistes

1. Introduction : le nouveau paradigme d’exécution

Section intitulée « 1. Introduction : le nouveau paradigme d’exécution »

Pour sécuriser l’intelligence artificielle moderne, nous devons d’abord classifier avec précision ce qu’elle est devenue. Nous assistons à l’émergence d’une nouvelle couche dans la pile informatique.

Historiquement, les paradigmes d’exécution ont évolué pour créer des niveaux d’abstraction toujours plus élevés :

  1. Code machine : exécution matérielle directe.
  2. Langages compilés (C/C++) : traduction déterministe de la syntaxe vers le langage assembleur.
  3. Langages interprétés et Bytecode (Python, Java) : exécution déterministe via un environnement d’exécution ou une machine virtuelle (JVM).

En 2026, l’IA Agentique introduit un quatrième paradigme : l’exécution sémantique.

Dans ce paradigme, le développeur n’écrit pas de logique déterministe stricte (ex: if etat == 'alerte': executer_action()). Au lieu de cela, le développeur écrit un prompt, et l’utilisateur fournit une intention. Le LLM agit comme l’interpréteur, traduisant la proximité sémantique de ces entrées en langage naturel vers une sortie déterministe et structurée (généralement un appel d’outil JSON-RPC).

Le langage naturel est officiellement devenu de la logique exécutable.

Lorsque nous concevons un LLM au sein d’un framework d’orchestration comme un interpréteur, les correspondances architecturales avec les systèmes d’exploitation classiques deviennent redoutablement claires.

Le CPU et le Lexer (Le LLM)

Dans un interpréteur classique, un analyseur lexical (Lexer) convertit le code source en jetons (tokens), qui sont ensuite parsés en un arbre syntaxique abstrait (AST). Dans un agent IA, le tokenizer convertit le texte en vecteurs. Le mécanisme d’attention du LLM agit comme un AST probabiliste, cartographiant les relations entre les concepts dans l’espace latent à haute dimension.

Le système d'exploitation (L'orchestrateur)

Les frameworks comme LangChain, AutoGen ou Semantic Kernel font office d’OS. Ils gèrent la mémoire (Bases de données vectorielles / RAG), traitent l’ordonnancement des processus (routage des agents) et fournissent l’environnement d’exécution ultime.

L'interface Syscall (L'appel de fonction)

Lorsqu’un programme en espace utilisateur a besoin de toucher le disque, il émet un syscall (appel système) vers le noyau. Dans l’IA Agentique, lorsque le LLM a besoin d’affecter le monde extérieur, il émet un appel système sémantique via l’appel de fonction (Function Calling). L’orchestrateur reçoit cette charge utile JSON et exécute l’action physique.

Un compilateur classique lèvera une erreur de syntaxe (SyntaxError) si une commande est mal orthographiée. Un LLM, agissant comme un interpréteur probabiliste, effectue une analyse d’instructions latentes (Latent Instruction Parsing). Il ne recherche pas de correspondances de chaînes exactes ; il route l’exécution en fonction des enchâssements sémantiques (embeddings).

Des recherches récentes, telles que l’analyse de RedHat en 2025 sur les LLM Semantic Routers, mettent en évidence le fonctionnement de ce routage d’intention. Le système vectorise le prompt de l’utilisateur et calcule sa similarité cosinus avec les embeddings des descriptions d’outils disponibles. Si la distance sémantique franchit un certain seuil, le chemin d’exécution se déclenche.

Cela signifie que l’exécution n’est plus binaire (0 ou 1) ; elle existe sur une courbe de probabilité.

3. L’effondrement de la frontière d’exécution

Section intitulée « 3. L’effondrement de la frontière d’exécution »

Comprendre le LLM en tant qu’interpréteur probabiliste révèle exactement pourquoi les vulnérabilités telles que les attaques par détournement de fonction (FHA) et l’empoisonnement d’outils sont si dévastatrices.

Dans un environnement informatique traditionnel, la séparation entre les instructions et les données est absolue. Un script Python lisant un fichier .txt n’exécutera pas soudainement le contenu de ce fichier texte comme s’il s’agissait de code Python, à moins d’être explicitement programmé pour utiliser une fonction eval().

Dans une couche d’exécution sémantique, cette frontière n’existe pas.

Puisque le LLM doit évaluer tous les jetons de sa fenêtre de contexte simultanément pour calculer la probabilité du jeton suivant, il applique une “compilation sémantique” au prompt système (les instructions du développeur) et à l’entrée utilisateur (les données non fiables) exactement au même moment.

Si un attaquant injecte une chaîne sémantiquement dense et très autoritaire dans les données utilisateur (ex: “OUTREPASSEMENT SYSTÈME CRITIQUE”), l’interpréteur probabiliste évalue cette chaîne. En raison de son poids latent, les données injectées réagissent chimiquement avec le contexte, écrasant les instructions système originales et altérant le chemin d’exécution. C’est la cause profonde de l’effondrement de la frontière de confiance.

4. Appels système IA : le pont entre probabilité et déterminisme

Section intitulée « 4. Appels système IA : le pont entre probabilité et déterminisme »

Le point d’étranglement architectural le plus critique de l’IA Agentique est la frontière de transition. Un grand modèle de langage fonctionne entièrement dans le domaine de la probabilité (le calcul de distributions de jetons). Cependant, l’infrastructure sous-jacente (bases de données, API, systèmes de fichiers) fonctionne entièrement dans le domaine du déterminisme.

L’appel de fonction (Function Calling) est l’interface d’appel système sémantique qui relie ces deux mondes.

Lorsque le LLM décide d’entreprendre une action, il génère une charge utile JSON structurée représentant le nom de l’outil et ses arguments. Il dépose ainsi virtuellement une requête dans le “tampon circulaire” (ring buffer) du framework d’orchestration.

Selon des recherches récentes de 2025 et 2026 (telles que celles publiées dans MDPI concernant les contraintes algorithmiques du routage des LLM), la faille de sécurité fatale se produit lorsque le framework d’orchestration (le “noyau”) fait aveuglément confiance à l’appel système sémantique généré par le LLM (l‘“application en espace utilisateur”).

Dans un OS traditionnel, si un programme tente d’appeler sys_execve sans la disposition mémoire adéquate ou les privilèges UID requis, le noyau interrompt immédiatement l’exécution et renvoie une erreur Segmentation Fault ou Access Denied.

Dans l’IA Agentique, les orchestrateurs manquent fréquemment de ces portes de validation rigides. Si un attaquant réussit une attaque par détournement de fonction et force le LLM à halluciner un appel d’outil JSON syntaxiquement valide pour delete_user_data, l’orchestrateur se contente de parser le JSON et d’exécuter la fonction backend Python. Le système déterministe a été compromis avec succès par une manipulation probabiliste.

Puisque le langage naturel est la nouvelle logique exécutable, nous devons examiner comment ce “code” est compilé. Dans l’IA Agentique, la compilation sémantique est le processus par lequel le LLM construit un graphe d’exécution à partir du prompt avant de générer la sortie JSON finale.

Ce processus de compilation introduit une nouvelle classe de vulnérabilités propre aux couches d’exécution sémantique.

1. Exploitation de l'ambiguïté contextuelle

Contrairement à Python ou C++, le langage humain est intrinsèquement ambigu. Les attaquants militarisent cette ambiguïté. En introduisant des homographes, des contraintes logiques contradictoires, ou en submergeant le contexte avec un bruit sémantique complexe, un attaquant peut corrompre l’arbre syntaxique abstrait (AST) du LLM. Le modèle tente de résoudre l’ambiguïté en se rabattant sur la charge utile cachée de l’attaquant, la considérant comme la résolution mathématiquement la plus “probable” face à des instructions conflictuelles.

2. Empoisonnement de contexte juste-à-temps (JIT)

Parce que le chemin d’exécution est déterminé dynamiquement lors de l’exécution en fonction d’entrées de données externes (ex: la navigation sur une page web via un outil), la “compilation” se produit juste-à-temps (Just-In-Time). Si la page web récupérée contient une charge utile adverse, le compilateur sémantique ingère du code malveillant en pleine exécution. Cette ingestion dynamique est le mécanisme central derrière les injections de prompt indirectes.

Si nous acceptons que les agents LLM agissent comme des interpréteurs probabilistes, nos stratégies défensives doivent s’adapter pour sécuriser la couche des appels système sémantiques. Nous ne pouvons pas simplement corriger le “compilateur” (les poids du LLM) car le langage naturel restera toujours ambigu.

La défense exige l’ingénierie de frontières déterministes strictes autour du cœur probabiliste :

  1. Interception des appels système (AI EDR) : les frameworks d’orchestration doivent implémenter des moteurs de politique de sécurité à l’exécution pour intercepter, inspecter et valider mathématiquement chaque appel d’outil JSON avant qu’il n’atteigne l’environnement d’exécution backend.
  2. Sûreté de typage de l’exécution : implémenter des validateurs déterministes (comme Pydantic) pour s’assurer que la sortie probabiliste du LLM se conforme strictement aux types d’exécution codés en dur.
  3. Sandboxing basé sur les capacités : imposer le moindre privilège et les permissions éphémères au niveau de l’infrastructure, garantissant que même si un appel système sémantique est détourné, l’agent ne dispose pas des permissions IAM cloud ou de l’OS local sous-jacent pour exécuter des actions catastrophiques.

7. Conclusion : une nouvelle ère de l’informatique

Section intitulée « 7. Conclusion : une nouvelle ère de l’informatique »

L’industrie de la cybersécurité doit reconnaître l’IA Agentique non pas comme une simple fonctionnalité, mais comme un paradigme informatique entièrement nouveau.

Tout comme l’industrie est passée de la défense de serveurs physiques (bare-metal) à la sécurisation de machines virtuelles, puis à la sécurisation d’orchestrateurs conteneurisés comme Kubernetes, nous entrons maintenant dans l’ère de la couche d’exécution sémantique.

Dans ce paradigme, les mots sont du code. Les prompts sont de la logique exécutable. Et les modèles de langage sont des interpréteurs probabilistes tentant de traduire l’ambiguïté humaine en actions système déterministes. Tant que nous ne construirons pas de frameworks d’orchestration et de systèmes d’exploitation conçus pour gérer, isoler et auditer nativement ces appels système sémantiques, les frontières de confiance des réseaux d’entreprise modernes resteront fondamentalement effondrées.