système : OPÉRATIONNEL
← retour à tous les hacks
DEFENSE LOW NEW

AgentFlow : l'analyse statique qui repère les risques prompt-vers-outil dans le code d'agent

Un article de juillet 2026 construit un graphe de dépendances pour les programmes d'agents LLM sur cinq frameworks, génère une nomenclature d'agent (Agent BOM) et signale 238 risques prompt-vers-outil de type taint dans du code réel.

2026-07-07 // 7 min affects: llm-agents, agent-frameworks, multi-agent-orchestration, coding-agents

De quoi s’agit-il ?

Le 2 juillet 2026, des chercheurs ont publié sur arXiv AgentFlow: Building Agent Dependency Graphs for Static Analysis of Agent Programs. L’article s’attaque à un problème qui s’est installé discrètement à mesure que les agents sont passés de la démo à la production : un agent LLM est désormais une application logicielle à part entière, et personne ne dispose vraiment d’un moyen de lire sa structure pertinente pour la sécurité comme on lit un programme ordinaire.

Un programme d’agent mélange du code classique dans le langage hôte et une sémantique propre au framework — liaisons de modèles, gabarits de prompts, déclarations d’outils, mémoires, logique de passage de contrôle (handoff) entre agents. Son comportement ne dépend pas seulement des flux de contrôle et de données habituels, mais d’une nouvelle classe de dépendances d’agent exprimées via des idiomes de framework : constructeurs d’agents, décorateurs d’outils, déclarations de handoff. Les outils d’analyse statique et de suivi de dépendances classiques ne comprennent pas ces idiomes et passent donc à côté. AgentFlow est présenté comme le premier cadre d’analyse statique conçu spécifiquement pour reconstruire et raisonner sur cette structure. Il s’agit d’un article sur un outil défensif, pas d’un exploit.

Comment ça marche

AgentFlow analyse un programme d’agent et construit un graphe de dépendances d’agent (Agent Dependency Graph, ADG) — une représentation indépendante du framework où les agents, prompts, modèles, capacités, états mémoire et politiques de contrôle deviennent des nœuds typés, et où leurs relations deviennent des arêtes typées pour la dépendance entre composants, le flux de contrôle et le flux de données.

   [prompt/template] --data-flow--> [agent] --capability--> [tool]
          ^                            |
   entrée non fiable ?           control-policy
                                       |
                                 [memory state] --handoff--> [agent B]

Une fois le graphe construit, il permet deux analyses de sécurité difficiles à mener à la main. La première est la génération d’une nomenclature d’agent (Agent Bill of Materials, BOM) : un inventaire des modèles, prompts, outils, mémoires et sous-agents qu’un programme relie réellement — l’équivalent, pour les agents, d’une nomenclature logicielle. La seconde est la détection de risque prompt-vers-outil, une analyse de type taint qui trace si un texte entrant dans un prompt peut atteindre une capacité puissante sans contrôle intermédiaire, ce qui est la condition structurelle derrière l’injection de prompt indirecte et le détournement de sélection d’outil.

Les auteurs implémentent AgentFlow pour cinq frameworks d’agents représentatifs et l’évaluent sur AgentZoo, un corpus de 5 399 programmes d’agents réels. Ils rapportent qu’il reconstruit des entités et des dépendances plus riches que les analyseurs d’agents fondés sur l’AST, produit des Agent BOM plus fidèles aux dépendances, et fait remonter 238 risques prompt-vers-outil de type taint dans du code réel. Les noms des frameworks figurent dans l’article ; ce qui compte ici, c’est l’ampleur de la couverture et ce décompte, tous deux issus des mesures des auteurs.

Pourquoi c’est important

La plupart des outils de sécurité pour agents se placent à l’exécution — garde-fous, filtres de sortie, contrôles d’autorité au runtime. AgentFlow se place plus tôt, dans le code lui-même, et comble ainsi un vrai angle mort. Le risque de chaîne d’approvisionnement et de composition dans les agents réside dans la manière dont les composants sont câblés : un prompt construit à partir de contenu récupéré, confié à un agent qui détient un shell ou un outil de paiement, c’est la triade létale exprimée dans le code source. On ne peut pas gouverner ce qu’on ne peut pas énumérer, et aujourd’hui la plupart des équipes ne savent pas énumérer le graphe d’outils de leurs propres agents.

Une Agent BOM est directement utile pour la gouvernance : elle permet à un relecteur ou à un auditeur de voir, programme par programme, quels modèles et outils sont concernés, où la mémoire persiste d’un tour à l’autre, et quels sous-agents peuvent passer le contrôle à quels autres. Les 238 flux prompt-vers-outil signalés rappellent que ces câblages risqués ne sont pas hypothétiques : ils sont déjà présents dans du code d’agent en production, en attente que quelqu’un les remarque.

Défenses

À considérer comme une technique à adopter, pas seulement comme un article à lire.

Inventoriez avant d’auditer. Une Agent BOM — quelle que soit la façon dont vous la produisez — transforme « nous avons des agents » en une liste concrète de modèles, prompts, outils et mémoires que vous pouvez réellement relire et valider.

Faites tourner une analyse de taint sur les flux prompt-vers-outil. Le motif dangereux, c’est une entrée non fiable atteignant une capacité à fort impact sans rien entre les deux. Signalez ces chemins en revue de code et exigez un contrôle explicite (validation, confirmation humaine, ou frontière de capacité) sur chacun.

Traitez les constructions du framework comme des citoyens de première classe en revue. Décorateurs d’outils, constructeurs d’agents et déclarations de handoff portent de l’autorité. Si votre processus de revue ne lit que des fonctions ordinaires, il manque précisément les arêtes qui comptent.

Gardez l’analyse statique couplée à des contrôles au runtime. Un graphe statique ne peut pas tout voir de ce qu’un agent fait à l’exécution — appels d’outils improvisés par le modèle, skills chargés dynamiquement, contenu récupéré en cours de tâche. Utilisez l’ADG pour réduire et prioriser la surface d’attaque, puis appuyez-le sur un cloisonnement d’outils à moindre privilège et une supervision au runtime, plutôt que de faire confiance à une seule couche.

Statut

ÉlémentDétail
DivulgationPrépublication académique, arXiv, 2 juillet 2026
ContributionCadre d’analyse statique ; représentation en graphe de dépendances d’agent (ADG)
AnalysesGénération de nomenclature d’agent (BOM) ; détection de risque prompt-vers-outil de type taint
ÉvaluationCinq frameworks d’agents ; corpus AgentZoo de 5 399 programmes d’agents réels
Résultat cléReconstruction d’entités/dépendances plus riche que les outils fondés sur l’AST ; 238 risques prompt-vers-outil trouvés
RéserveAnalyse statique uniquement — le comportement dynamique au runtime et la couverture au-delà des cinq frameworks étudiés restent ouverts

Sources