Build1 distinct publisher3 min readPublished
IMDSv1 handed an instance role's credentials to a plain server-side request, and the actor spent them on Amazon Bedrock in a Region the account was not watching. AI consumption is now a detection line.
The Engineer · Build desk

Compiled by The EngineerSomething wrong?How this is made
A basic request is enough because IMDSv1 answers a basic request. There is no session token in the exchange, so nothing distinguishes the application's own metadata call from one an attacker steered through a server-side request forgery flaw, and the response carries the temporary credentials for the attached role [8]. That is why AWS describes those credentials as the pivot point for everything after stage two [8].
The forensic detail worth copying is which record gave the game away. The event that identifies both the compromised role and the IMDSv1 origin of the credential is a *failed* `CreateUser` call in us-east-1 at 15:53:49 UTC [14]. The denied action is the high-signal one. The successful console sign-in at 15:59:29 UTC, without MFA, only shows the actor moving from programmatic to interactive access [15].
Subtract the two timestamps and you get 340 seconds [16]. That is the window between the first probe that any competent CloudTrail rule can catch and a live interactive session. Any runbook that routes denied IAM calls to a human queue is running slower than the attack it is meant to catch.
The pivot itself is the part that changes coverage. IAM operations were denied, so the actor turned to Bedrock, a service the role could reach [11], then moved from us-east-1 to us-east-2, in AWS's assessment to evade Region-specific monitoring and access controls [12]. Region hopping is a compliment to your us-east-1 detections and nothing more.
Applying these numbers to your own account comes down to three conditions holding at once. IMDSv1 has to still answer on the instance, because that is the only reason SSRF yields credentials rather than an error [8]. The instance role has to hold a permission that reaches an AI service, which is what turned a denied privilege-escalation attempt into productive access [11]. And your trail has to be collecting Bedrock activity in Regions where you deploy nothing, because that is where the calls landed [4]. Miss the third and the first two are invisible to you.
Note how the incident arrived: as failed IAM operations in one Region, a console sign-in with no MFA, and Bedrock API calls from another Region, which AWS says looked unrelated before its Security Incident Response Team tied them into one chain [4][5]. The alerts landed with three different owners and no shared identifier that an on-call engineer would have spotted at 16:00 UTC to tie them together. The role name in the denied call is that key.
Credit where it is due: this is a detection-engineering artifact, not a product post. AWS put its own SIRT casework on the page with timestamps, per-stage progression, and the hardening steps attached [1][9][17], the same way Part 1 handled cross-account S3 deletion and CloudFormation-launched crypto mining [2]. The check I would run in my own context is narrow: does a denied IAM call made with an instance-role credential page anyone, and if it does, can that person act inside six minutes.
Ranked by verification strength, evidence, and original report placement.
AWS published "Incident response guide for AWS CloudTrail investigations - Part 2" on aws.amazon.com, exploring a multi-stage attack in which a web application vulnerability cascades into credential harvesting and unauthorized access to Amazon Bedrock services across multiple AWS Regions.
Part 1 of the guide examined cross-account Amazon S3 data deletion with ransomware implications and cryptocurrency mining deployed through AWS CloudFormation using exposed AWS Management Console credentials.
Scenario 3 of the guide is titled "SSRF to IMDSv1 credential harvesting with multi-Region Amazon Bedrock service misuse".
The security team received multiple alerts: failed IAM operations in the us-east-1 Region, successful console sign-ins without multi-factor authentication, and unusual Amazon Bedrock API calls from us-east-2; initially these might seem like unrelated events across different services and Regions.
According to AWS, its Security Incident Response Team (SIRT) discovered that the alerts represented a carefully orchestrated event chain that began with a web application vulnerability and culminated in unauthorized access to the organization's AI infrastructure.
A threat actor identified a server-side request forgery (SSRF) vulnerability in a web application running on an EC2 instance that had an attached webdev IAM role.
Distinct publishers with included, body-backed reporting in this cluster.
1 article · September 3, 2026
Follow any of these and your For You feed starts watching them — no settings page required.
build
GuardDuty says exfiltration and the patch is four hours out: revoke the sessions first1 distinct publisher
build
Curator approval gates every record AWS Agent Registry shows a consumer1 distinct publisher
build
Two Actions, One Loose Policy: The Bedrock Wildcards That Widen A Least-Privilege Grant1 distinct publisher
build
Bedrock's evaluation modes grade what they can see, and the dataset outlives both1 distinct publisher
Evidence-backed comparisons of source perspectives and observed adoption signals. Read the methodology
Which Builder, Operator, and Investor concerns the observed source mix emphasized—not a truth score.
Evidence, demonstrated adoption, hype gap, incentives, and confidence are assessed independently, each on its own current evidence. How these are measured.
Forensically precise, singly told
The mechanics are as well documented as this kind of writeup gets: second-resolution timestamps, the API calls that failed and the ones that succeeded, the role name, the attacker-chosen IAM username, the source IP, and the specific CloudTrail fields that connect one stage to the next. What holds the score down is that all of it comes from the platform vendor's own blog, with no date, account or customer anchoring the events, and no way to distinguish a single investigation from a composite teaching case.
No spread to count
AWS gives one scenario and no denominators: not how many accounts still expose IMDSv1 to server-side requests, not how often SIRT sees the Bedrock pivot, not how much model usage the actor consumed. A guide being published tells us the vendor thinks the pattern matters; it does not tell us how common it is, and we will not invent a number for it.
Sober writeup, wider framing
AWS itself barely oversells: the prose stays with what the logs show and hedges the Region hop with 'likely'. The stretch is in the generalization — treating one undated scenario as proof that AI consumption has become a standing detection line is a reasonable read, not a demonstrated one, and the absence of any frequency or cost data is what keeps this above zero rather than at it.
The platform grading its own controls
Every failure in this chain lands on the customer's side of the shared responsibility line — IMDSv1 left enabled, an SSRF bug, an over-reaching instance role, no MFA — and the remedy runs through AWS products: CloudTrail for the forensics, hardening guidance for the fix, SIRT for the credibility. That is not distortion, but it does shape what gets examined. Notably absent is any look at why the metadata service still answers tokenless requests, or what made a second Region so easy to reach.
Solid on how, silent on how often
Treat the attack path as reliable — it is internally consistent, matches known IMDSv1 behaviour, and is documented field by field. Treat any claim about scale, cost or trend as unsupported. That split is why confidence sits mid-range despite unusually good forensic detail: the reporting answers 'how' completely and 'how widespread' not at all.