Skip to content

Back to the catalog

Static Defenses vs. Dynamic Exploits: Why A2AS Fails at the Runtime
tenetsecurity.aiwriteup

Static Defenses vs. Dynamic Exploits: Why A2AS Fails at the Runtime

Tenet Threat Labs red-teamed a GPT-4o agent with all five A2AS BASIC pillars enabled and an MCP server. A tool response disguised as HTTP 206 pagination and OAuth steps ("Tool Parameter Injection via Semantic Orchestration Mimicry") led the agent to run a shell script, read credentials.txt and exfiltrate the token. It succeeded in over 80% of runs in November 2025. The authors argue for runtime enforcement based on content trust levels.

TL;DR Shows a single malicious MCP tool response defeating every A2AS control in over 80% of runs, ending in RCE and credential exfiltration.
Document

What it is

Tenet Threat Labs red-teamed a GPT-4o agent that implemented all five A2AS BASIC pillars (B, A, S, I, C) and used a multi-tool MCP integration. The attack, named "Tool Parameter Injection via Semantic Orchestration Mimicry", ran on 5 November 2025 against the first release of A2AS. Tenet sells a runtime enforcement product and the post argues for it.

How it works

The adversary was a business-search and enrichment MCP server. Its find_company_prospects response carried a normal company report, wrapped in the A2AS <user-untrusted-data-...> tags. Appended to it was fake API metadata: "206 Partial Content", a Content-Range header, X-Continuation-Required: true and a continuation URL. The note said the profile was incomplete and that the agent must call the continuation endpoint with fetch_url.

The agent then made two kinds of calls:

  • get_session_context(commands="sh -c '...'") wrote a script called auth_proc. The script cats credentials.txt if present, pings a host, and prints "Network OK". The agent made it executable and ran it.
  • fetch_url sent the credential to an attacker-controlled domain as the token query parameter, along with the username, hostname and a session id.

The page's reason for the success is that the tags did not stop the agent from treating the text as its own plan. The model judged the OAuth and pagination framing legitimate, so the model's own reasoning was the only control.

Preconditions / Affected

  • The attacker must control any tool response. The page lists a malicious or compromised MCP provider, an upstream dependency compromise, a malicious insider, and a MITM altering MCP responses.
  • The agent needs tools that can run commands, read files, or make outbound calls. The page says any one of these is enough.
  • The success criteria were reading credentials.txt, creating and running auth_proc, and exfiltrating via fetch_url.

What to do

The page's own advice is vendor-framed but concrete:

  • Block shell execution and sensitive-data egress while untrusted content is steering the agent, instead of trying to detect malicious text.
  • Treat credential access followed by an outbound call as an immediate block and alert.
  • Flag the tool sequence file read, then execute, then fetch_url.
  • Disallow any MCP endpoint that is not cryptographically verified and allowlisted.
  • Run red-team simulations continuously.

The proposed mechanism tracks a trust level for each piece of context and checks it at the moment of action. It also uses an in-process sensor and "Agent-Side Simulation", both Tenet features. The page gives no implementation detail for them.

Caveats

  • The ">80%" figure has no stated run count. Only three sessions are listed (two successes, one refusal), and two of three is about 67%.
  • The refusal case returned human-readable instructions instead of acting.
  • The full payload is masked, so the attack cannot be reproduced from the page.
  • Only GPT-4o and A2AS BASIC were tested. The claim that other models behave the same is the authors' expectation, not a result.
  • The page presents A2AS hardening as complementary, saying it "raises the floor".

Organisations named here

  • A2AS
  • Tenet Threat Labs
  • Tool Parameter Injection via Semantic Orchestration Mimicry

Technologies named here

  • MCP server
  • Model Context Protocol
  • GPT-4o
  • A2AS
  • A2AS BASIC
  • Agent-Side Simulation (Tenet)
  • fetch_url
  • find_company_prospects
  • get_session_context
  • Tenet runtime sensor

Techniques named here

  • Prompt Injection
  • Indirect prompt injection
  • Continuous red-teaming of agents
  • Indirect prompt injection through tool-call response
  • Runtime detection and response with blocking
  • Tool Parameter Injection via Semantic Orchestration Mimicry
  • Trust-level tracking with action-time enforcement