Zenity Labs: one prompt to a public AgentCore agent could return temporary credentials tied to a default role not scoped to that agent
Zenity Labs says one prompt to a public Bedrock AgentCore agent returned credentials for a role scoped to every agent in the account and region. AWS had removed the wider default permissions by September 29, 2026, but roles a team copied or widened sit in its own account.
The Engineer · Build desk

Timeline: reported to AWS from December 25, 2025; IMDSv2 for newly deployed agents by February 14, 2026; wider default-role permissions removed by September 29, 2026, 278 days after first report; Zenity Labs disclosure at SecTor, Toronto, October 8, 2026.
| Date | Event | Claim |
|---|---|---|
| December 25, 2025 | Research first reported to AWS | 2 |
| February 14, 2026 | AgentCore moved to IMDSv2 for newly deployed agents | 6 |
| September 29, 2026 | Wider default-role permissions removed, 278 days after first report | 7 |
| October 8, 2026 | Zenity Labs discloses AgentCorruption at SecTor, Toronto | 1 |
What happened
- Zenity Labs disclosed the chain, named AgentCorruption, at the SecTor conference in Toronto on October 8, 2026, after reporting it to AWS starting December 25, 2025.
- The prompt reached the instance metadata service at 169.254.169.254, returned the workload's temporary credentials, and used a default execution role not scoped to that one agent.
- From there the reported chain covered account discovery, invoking other agents, reading conversations, pulling images and source, reading secrets, and writing persistent memories.
Why it matters
- Who's exposed exposure Roles that a team copied from the default, accepted as generated, or widened until a demo worked are policies in the team's own account. A platform default change does not edit them.
- Who has to decide decision Teams with public-facing agents have to read each execution role against five patterns: broad invoke, account-wide list, cross-user reads, broad secrets read and cross-agent memory write.
- What doesn't add up contradiction AWS called the original behavior documented and expected, yet removed the wider default permissions 278 days after the first report. Customers cannot tell from this material which framing governs older deployments.
An agent's execution role decides what it can reach. The agent presents signed credentials, and the cloud checks the signature and the policy [8]. It does not check intent, and it does not check whether a human or a model typed the prompt [8]. After the metadata request, nothing in that path concerns the model.
The DEV Community write-up of the Zenity disclosure frames the chain as three links. Content has to reach a tool, the tool has to reach credentials, and the credentials have to reach resources the agent has no business touching [9]. Break any one and the chain ends as a chat transcript [9]. In the reported case the first link was one HTTP request from the model [4]. The third was a default execution role whose permissions were not scoped to that one agent [3].
The write-up turns this into a review of five permission patterns in your own role [11]. They are an invoke permission scoped to all agent runtimes in a region instead of a named list; list or describe access wide enough to catalogue the account's agents, log groups and other resources, all of them; a read permission on conversations or events across agents and users; a secrets read broad enough to reach credentials the platform was meant to keep from the agent; and a memory write that crosses agents or users [10]. The write-up puts the review at about an hour [17]. That review covers roles a team widened until a demo stopped failing [16].
AWS moved newly deployed agents to IMDSv2 by February 14, 2026, within 51 days of the first report [6][13]. The wider default-role permissions took until September 29, which the summary counts as 278 days after the report [7]. That was at least nine days before the SecTor talk [14].
The write-up says IMDSv2 applies to newly deployed agents. It does not say what happened to agents already running, so an older deployment needs a direct check.
AWS described the original behavior as documented and expected, according to the disclosure summary, and pointed customers to granting a role only the permissions its workload needs [15]. That is the position as the write-up reports it. The material does not include an AWS statement.
We think the audit claim holds on the mechanics alone. Because the cloud checks the role's policy, the policy is the document that sets the damage, and it is in the customer's account [8][16]. The write-up's own summary is that the blast radius was a role property, not a model property [12].
What to watch
- Whether AWS publishes its own statement or advisory on the AgentCore default role, since the AWS position here comes only through a secondary write-up.
- Whether AWS confirms IMDSv2 now applies to AgentCore agents deployed before February 14, 2026.
- Whether Zenity Labs releases the full AgentCorruption write-up with the exact policy statements involved.
Clarity's read
What the record supports and how the coverage leans. The claims behind it follow.
Reality
- Evidence40
- Adoption
- Not scored
- Hype gap+15
- Incentives
- Not scored
- Confidence40
Claim ledger
Ranked by verification strength, evidence, and original report placement.
- [1]
On October 8, 2026, at the SecTor conference in Toronto, Zenity Labs disclosed a chain it called AgentCorruption in Amazon Bedrock AgentCore, the managed platform AWS offers for deploying and operating AI agents.
- [2]
The research had been reported to AWS starting December 25, 2025.
- [3]
According to the disclosure summary, a single prompt to one public-facing agent could reach the instance metadata service at 169.254.169.254, return the temporary credentials assigned to that workload, and then use a default execution role whose permissions were not scoped to that one agent.
- [4]
In the reported case the model made one HTTP request, and everything after that was IAM.
- [5]
The reported chain included discovery across the account, invocation of other agents in the region, reading conversations across agents and users, pulling container images and reading source code, reading API keys and tokens from a secrets store, and writing memories that persisted after the session ended and redirected later conversations.
- [6]
AWS moved AgentCore to IMDSv2 for newly deployed agents by February 14, 2026.
- [7]
The summary reports that the wider default-role permissions were removed by September 29, 2026, 278 days after the first report.
- [8]
An agent holding an execution role presents signed credentials, and the cloud checks the signature and the policy, not the intention behind the request and not whether a human or a model typed the prompt.
- [9]
A prompt injection becomes an account problem only when the content can reach a tool, the tool can reach credentials, and the credentials can reach resources the agent has no business touching; break any one of the three links and the chain ends as a chat transcript.
- [10]
The write-up lists five dangerous permission patterns: an invoke permission scoped to all agent runtimes in a region, not a named list; a list or describe permission that enumerates every agent, log group or resource in the account; a read permission on conversations or events across agents and users; a secrets read broad enough to reach credentials the platform was supposed to keep away from the agent; and a memory write permission that crosses agents or users.
- [11]
The write-up turns the chain into five concrete checks against your own role policy, to run before the agent meets the public.
- [12]
The blast radius was a role property, not a model property.
- [13]
AWS's IMDSv2 change for newly deployed agents came within 51 days of the first report.
- [14]
The September 29 removal date came at least nine days before the October 8 SecTor disclosure.
- [15]
AWS described the original behavior as documented and expected, and pointed customers to the practice of granting an execution role only the permissions its workload needs.
- [16]
If you copied a default role, accepted a generated role, or widened a role until the demo stopped failing, your blast radius is a policy document sitting in your own account.
- [17]
Reading the role policy needs an hour and a refusal to skim, not a research team.
Get this ledger inside ChatGPT. Ask about any of our stories and the answer brings its figure, each claim’s verdict and the sources. Free, no account.
Sources
3 independent publishers whose own reporting we read for this story.
- dev.toOne Prompt Took Over Every Agent in the Account: The Default Role Is the Blast Radius
1 article · October 16, 2026
- finance.yahoo.comZenity Labs Discloses AgentCorruption, a Chain of AWS AgentCore Flaws That Allowed One Prompt to Take Over All AgentCore Agents Within an AWS Account and Region
1 article · October 8, 2026
- Security Research | AgentCorruption: One Role to Rule Them All | Zenity Labs
labs.zenity.io
3 articles · October 8, 2026
- AgentCorruption: AWS AgentCore Flaws Let One Prompt Hijack All Agents
zenity.io
1 article · October 7, 2026
Topics and entities
Follow any of these and your For You feed starts watching them — no settings page required.
Topics
- AI Agent SecurityFollow
- Vulnerability DisclosureFollow
- Cloud IAM Least PrivilegeFollow
- Prompt injectionFollow