P.K. SHARMA

Cyber security intelligence, AI governance, practitioner analysis

Threat Intel

Four CVEs let agent tools run without the model running at all. The guardrails were not bypassed, they were never asked

CoreBreak hit AWS, Google and Vercel agent runtimes that executed anything shaped like a model tool call without checking a model produced it. System prompts, filters and refusal training all sit one layer above where this happens.

By Parminder Kumar Sharma · · 7 min read

A brass pipe T-junction with one branch sealed by a blank cap, macro close-up against dark industrial pipework, the pipes edge-lit in cyan and the capped branch catching crimson light.

The model never runs. Its tools still do

Hedi Ingber and Aviyam Ivgi, co-founders of Stealth, presented a cross-platform pattern they call CoreBreak at Black Hat USA 2026 on 6 August. It affected production agent infrastructure at Amazon Web Services, Google and Vercel, and the description of the flaw fits in one sentence of theirs:

The runtime received data shaped like a model-generated tool call and treated it as authoritative.

That is the whole thing. To understand why it matters, it helps to see where the missing check belongs.

Where the provenance check belongs

CoreBreak · Black Hat USA 2026

Working exactly as specified, and untouched by this attack

  1. 01

    System prompt and tool definitions

    Everything you hardened lives here

  2. 02

    The model decides

    Refusal training and safety filters apply to this step

  3. 03

    A structured tool call is returned

    The legitimate origin of any instruction the runtime should honour

The missing link: did a real model turn produce this

Four of the five disclosed paths never asked. An attacker reaching dispatch directly, holding data shaped like step three, is indistinguishable from step three.

Runs regardless

  1. 04

    The runtime reads an instruction

    It checks the shape. It does not check the origin

  2. 05

    The tool executes

    With whatever authority the agent holds

Drawn from the researchers’ description of the vulnerable paths. Hardening anything in the upper half is worth doing and does not affect this attack, which is the reason prompt-focused agent reviews concluded the wrong thing.

An attacker did not have to talk the model into anything. They did not have to defeat a system prompt, find a jailbreak, or get past a safety filter. They reached the dispatch path directly with something that looked like the model's output, and the runtime ran it.

The guardrail was not bypassed. It was never asked

This is the part worth sitting with, because it invalidates a control most agent deployments are resting on.

What a model-level guardrail protects

  • The system prompt, which shapes what the model is willing to produce
  • Safety filters and refusal training, applied to the model turn
  • Output validation on what the model returns
  • All of it operating on the assumption that a model turn happened

What CoreBreak does instead

  • Skips the model turn entirely
  • Presents the runtime with data shaped like a tool call
  • Reaches dispatch and authorisation without a model in the path
  • Leaves every guardrail above intact, untriggered and irrelevant

If your agent security review consisted of hardening the prompt and evaluating the model's refusals, that review measured a component this attack does not touch. A guardrail inside the model can only govern decisions the model makes. These paths let a tool run without the model making one.

The five identifiers, and what each one needed

CoreBreak, by vendor

CVEProductCVSSPrecondition
CVE-2026-18236Google Agent Development Kit for Python9.3Attacker manipulates session history or injects events, or a user-authored function call in a resumable-mode flow
CVE-2026-18830Amazon Bedrock AgentCore, InvokeHarness API8.6An authenticated remote user placing tool-use blocks in the final InvokeHarness request messages
CVE-2026-64650Vercel @ai-sdk/harness-codex6.3Untrusted code already running inside the Linux sandbox with an active harness session holding host-provided tools
CVE-2026-64651Vercel @ai-sdk/harness-opencode6.3The same, on the other harness
Disclosed 6 August 2026 and patched, with one exception noted below. Preconditions are as published, and they matter more than the scores.

Look at the Vercel score. 6.3, because the attacker needs code already running inside the sandbox. That is the fourth time in a week this site has written down the same sentence in a different context: a precondition drags the score down, the score is what triage sorts by, and the precondition is a Tuesday for anybody who already has a foothold.

Passkeys required malware already on the device. Akira's Safe Mode reboot required a session on the host. August's only exploited zero-day was rated Important because it needed local code execution. In every case the qualifier that lowered the number is the state an attacker reaches first and worries about least.

The one that is not patched

Four of the five paths are fixed. The exception is the model-skipping code path in the open-source Strands Python SDK, and AWS declined to fix it with a code change.

Their position is that the behaviour "falls on the customer's side of its shared-responsibility model". Instead of a patch they published a documentation page, Trusted Message History, telling developers to "build message history from their own application rather than from input a caller can shape".

It is worth being fair about the reasoning. A library that hands you the primitives cannot know which of your inputs are trusted, and a shared-responsibility split is a legitimate way to allocate that. But a defect described in documentation is discovered by people who read documentation, and a defect described in a patch is discovered by anyone running a dependency scanner. Those are very different populations.

What to check this week

Take this with you

Agent infrastructure, not model behaviour

  • Ask whether your agent runtime verifies that a tool call came from a real model turn. This is a different question from what your prompt says or which model you use, and in four of these five cases the answer was no.
  • Treat message history as untrusted input if any part of it can be shaped by a caller. That is the substance of AWS’s Trusted Message History guidance, and it applies to every framework rather than only to Strands.
  • Check whether you are running the Strands Python SDK, and if so, whether your message history is assembled from your own application state. This is the one path with no code fix behind it.
  • Put tool authorisation somewhere the model cannot be skipped past. Scopes enforced at the tool boundary survive an attacker who reaches dispatch directly; instructions in a system prompt do not.
  • Log tool invocations with their provenance, not just their arguments. If your audit trail cannot distinguish a tool call the model produced from one that arrived shaped like it, you cannot investigate this class of incident after the fact.
  • Re-read any agent security assessment written before August that concluded the guardrails were adequate. It very probably tested the model and not the plumbing.

The fourth item is the durable one. Everything else on that list is a patch or a habit; that one is an architecture decision that makes the whole class of attack less interesting.

The position

The industry spent two years building agent security around the model, because the model is the part that looked dangerous and the part vendors could sell you controls for. CoreBreak is the bill for that. The controls were real, they worked as specified, and they sat one layer above the place where the attack happened.

That is the same finding as an antivirus that named ransomware and could not remove it, and as a safety classifier that ran with its logging disabled for eleven months. Five briefings this week, five controls doing exactly what their specification says, and five gaps between that specification and what somebody believed they had bought.

For agents specifically, the correction is unglamorous and structural. Authorisation belongs at the tool, in code, enforced by something that does not care whether a model was involved. Prompts are not a security boundary. They never were, and now there are four CVE identifiers to point at when somebody argues otherwise.

Sources

  1. PrimaryCVE-2026-18236, Google Agent Development Kit for PythonNIST National Vulnerability Databaseaccessed 2026-08-17
  2. PrimaryCVE-2026-18830, Amazon Bedrock AgentCore InvokeHarnessNIST National Vulnerability Databaseaccessed 2026-08-17
  3. Reported byAWS, Google, and Vercel Agent Flaws Let Attackers Trigger Tools Without Running the ModelThe Hacker Newsaccessed 2026-08-17

Share this briefing

Know someone who owns this problem? Send it to them.

Related briefings

The briefing, in your inbox

Practitioner analysis of cyber and AI security news. No vendor noise.

One email per briefing. Unsubscribe any time.