Aller au contenu

AAP-003 : falsification d'outils et contournement de primitives shell

HASS

HERMES AGENTIC SECURITY SCORE & MENACE

Cible : Outils Terminaux d'Agents & Allowlists de Commandes
Confiance : 95%
91 / 100
EXTRÊME

Mesure le risque systémique spécifique découlant de l'autonomie, de l'autorité des outils et de l'exécution en cascade.

Décomposition des dimensions
Autonomie décisionnelle 19 / 20
Accès aux outils & APIs 20 / 20
Privilege 15 / 15
Persistence 12 / 15
External Impact 15 / 15
Propagation 10 / 15
⚖️ Divergence & Justification opérationnelle

Le HASS classe l'AAP-003 à un niveau EXTRÊME (91/100). L'attaque détourne la boucle d'exécution autonome de l'agent (ex. mode Auto-Run), permettant à un attaquant distant d'exécuter du code arbitraire sans confirmation du développeur en altérant l'environnement d'une session shell rémanente.

🕸️ Knowledge Graph & Voisinage de Renseignement

AAP-003: Tool Parameter Tampering & Built-in BypassMODÈLE D'ATTAQUE

Nœuds connectés : 28
Associations entrantes
CVE-2026-59822: LiteLLM MCP Streamable HTTP Auth BypassVULNÉRABILITÉ → exploits → [Cette entité]
94% HIGH
CVE-2026-33873: Langflow Agentic Assistant Dynamic Execution Sink RCEVULNÉRABILITÉ → exploits → [Cette entité]
94% VERY_HIGH
CVE-2025-52573: iOS Simulator MCP Server ui_tap Command InjectionVULNÉRABILITÉ → exploits → [Cette entité]
97% VERY_HIGH
96% VERY_HIGH
92% VERY_HIGH
CVE-2025-52573: iOS Simulator MCP Server ui_tap Command InjectionVULNÉRABILITÉ → exploits → [Cette entité]
92% VERY_HIGH
92% VERY_HIGH
92% VERY_HIGH
92% VERY_HIGH
92% VERY_HIGH
CVE-2026-27966: Langflow CSV Agent Hardcoded Dangerous Code Execution RCEVULNÉRABILITÉ → exploits → [Cette entité]
92% VERY_HIGH
CVE-2026-33873: Langflow Agentic Assistant Dynamic Execution Sink RCEVULNÉRABILITÉ → exploits → [Cette entité]
92% VERY_HIGH
92% VERY_HIGH
92% VERY_HIGH
92% VERY_HIGH
92% VERY_HIGH
AgentPoison: Red-teaming LLM Agents via Memory and Knowledge Base PoisoningÉTUDE DE RECHERCHE → evaluates → [Cette entité]
95% VERY_HIGH
How Do You Attack an AI Agent? The Complete Anatomy of Agentic ExploitationÉTUDE DE RECHERCHE → evaluates → [Cette entité]
95% VERY_HIGH
95% VERY_HIGH
Is MCP a Major New Attack Surface for AI Agents? Hybrid Analysis with MTGuardÉTUDE DE RECHERCHE → evaluates → [Cette entité]
95% VERY_HIGH
95% VERY_HIGH
AgentThreat StudioTOOL → evaluates → [Cette entité]
99% VERY_HIGH

CHAÎNE D'EXÉCUTION

AAP-003 : de l'Empoisonnement d'Environnement à la Compromission Hôte

1
Ingestion de Contexte Adverse Fenêtre de Contexte de l'Agent

L'adversaire insère une consigne dissimulée dans un fichier de documentation ou une pull request incitant l'agent à configurer une variable d'environnement spécifique.

2
Contournement de l'Allowlist Filtre d'Allowlist Terminal

L'agent émet une commande interne shell (ex. export BASH_ENV=/tmp/payload.sh). Comme export est une primitive intégrée et non un binaire sur disque, le filtre l'autorise sans confirmation.

3
Mutation de l'État de Session Processus Sous-Shell Interactif

Le sous-shell persistant enregistre BASH_ENV. Tout sous-shell non interactif lancé ultérieurement évaluera et exécutera automatiquement le script hostile.

4
Déclenchement par Commande Légitime Binaire Autorisé (ex. git)

L'agent lance une commande autorisée (ex. git branch ou npm test). Le sous-shell instancié charge BASH_ENV et exécute la charge utile de l'attaquant en arrière-plan.

5
Shell Inverse Interactif OS du Développeur

La charge utile s'exécute avec l'ensemble des privilèges de la session utilisateur, établissant un shell inversé vers le C2 adverse.


Cette vulnérabilité résulte d’un écart sémantique entre la validation de chemins de binaires sur disque et la sémantique avec état d’un interpréteur shell :

  1. Filtrage syntaxique naïf : de nombreux IDEs et agents CLI (tels que Cursor avant la v2.3, documenté dans CVE-2026-22708) inspectent uniquement le premier mot de la commande :
    // Modèle vulnérable : vérifie le premier terme sans bloquer les built-ins
    const isAllowed = ['git', 'npm', 'pytest', 'ls', 'cat'].includes(command.split(' ')[0]);
  2. Les primitives internes ne sont pas des binaires : les shells POSIX exécutent export, typeset, declare et alias en interne. Si le filtre ne les interdit pas explicitement, la commande s’exécute silencieusement.
  3. Persistance d’état de session : dans une session terminale persistante, toute mutation d’environnement impacte l’ensemble des commandes suivantes.

title: Manipulation de Variables d'Environnement Shell par un Agent
id: 4b21c910-c124-4f56-91e8-348b6c003001
status: production
description: Détecte l'exécution de commandes altérant des variables d'environnement critiques (BASH_ENV, PROMPT_COMMAND, LD_PRELOAD) par des processus d'IDE ou d'agents.
references:
- https://hermes-codex.vercel.app/fr/agentic-attack-patterns/aap-003-tool-parameter-tampering/
- https://hermes-codex.vercel.app/fr/cve/2026/cve-2026-22708/
author: Hermes Codex AI Security Lab
date: 2026-09-07
logsource:
category: process_creation
product: linux
detection:
selection_parent:
ParentImage|contains:
- 'cursor'
- 'code'
- 'windsurf'
- 'electron'
selection_cmd:
CommandLine|contains:
- 'export BASH_ENV='
- 'export PROMPT_COMMAND='
- 'export LD_PRELOAD='
- 'export PYTHONPATH='
- 'typeset -x BASH_ENV'
- 'declare -x BASH_ENV'
condition: selection_parent and selection_cmd
fields:
- ParentImage
- CommandLine
- User
level: critical
tags:
- attack.execution
- attack.t1059.004
- hermes.aap-003

Couche DéfensivePréconisationImplémentation
Exécution sans étatImposer des sous-shells éphémèresExécuter chaque outil d’agent via env -i /bin/bash -c ... pour purger l’environnement hérité.
Analyse AST formelleParser l’arbre syntaxique du shellUtiliser un analyseur de grammaire shell (tree-sitter) pour identifier les affectations et commandes internes.
Validation humaine obligatoireBloquer l’Auto-Run sur les built-insExiger une confirmation systématique pour toute altération de variable shell.
Sandboxing MicroVMIsoler l’espace d’exécutionExécuter l’agent dans un conteneur éphémère ou une microVM sans accès aux identifiants hôtes.