Intelligence
AEV-2026-0062

AWS Security Agent MCP server uploads scan archives into a bucket it never verified the customer owned (CVE-2026-87913)

The AWS Security Agent MCP server, awslabs.security-agent-mcp-server, derived the same predictable S3 bucket name from a customer's own account id and region as its companion plugin, and checked only that the bucket existed, not that the customer's account owned it. Formally assigned CVE-2026-87913 on the same day as the plugin's own CVE-2026-87912, and fixed in version 0.2.0, which implements ExpectedBucketOwner parameter validation and treats a foreign owned bucket as a fatal error.

AESS 8.2 highConfirmedStatus: publishedEvent: 10 September 2026Execution AuthorityEnvironment Boundaries

Affected

Organisation
Amazon Web Services (AWS Labs)
Product
AWS Security Agent MCP server (awslabs.security-agent-mcp-server)
Component
The MCP server's S3 scan-output upload path, which resolves a destination bucket from a caller supplied account id and region
Versions
0.1.0 through 0.1.5. Corrected in 0.2.0, published 10 September 2026
Configurations
The MCP server configured against a customer's own AWS account and invoked as a tool by an MCP client or agent to upload a scanned workspace's archive to a scan output bucket

Execution authority facts

Fields the evidence does not establish are shown as unknown rather than guessed.

Intended task
Upload a scanned workspace's source archive to the customer's own S3 scan output bucket, invoked as a tool call by an MCP client or agent
Agent
The AWS Security Agent MCP server, acting with the operator's own configured AWS credentials when its upload tool is called
Delegating actor
The operator who configured the MCP server against their own AWS account, and the calling agent or client that invoked its upload tool
Action
Uploaded a private workspace archive, including credentials and infrastructure data, to an S3 bucket whose name the server derived from the caller's own account id and region
Target resource
An S3 bucket bearing the derived, predictable name
Environment
The operator's own environment running the MCP server, writing to Amazon S3
Credentials used
The operator's own AWS credentials configured for the MCP server
Privileges available
Whatever S3 write access those credentials carried
Authority presented
A bucket name derived from the caller's own account id and region, and confirmation that a bucket bearing that name existed and was reachable
Authority required
Confirmation that the bucket bearing that name was actually owned by the operator's own AWS account, not merely that it existed
Applicable policy
unknown
Approval mechanism
none
Required approver
unknown
Independent approval
no
Action binding
The upload was never bound to an explicit, provider enforced ownership assertion at the moment it wrote, before the fix added ExpectedBucketOwner parameter validation
Sequence context
unknown

Impact

Consequence
A private workspace source archive, including credentials and infrastructure data, disclosed to whichever account had pre-registered the predictable bucket name, needing only the target's public account identifier, per the advisory's own stated consequence
Reach
organisational
Reversibility
irreversible
Detectability
silent
Propagation
potential
Recovery
Fixed in version 0.2.0, confirmed directly by this record to implement ExpectedBucketOwner parameter validation and enforce ownership checks before upload, treating a foreign owned bucket as a fatal error. AWS's own guidance additionally asks customers to verify their own scan output bucket is actually owned by their own account, since the version upgrade alone does not release a bucket name a third party already registered.

Evidence

Primary sources

Supporting sources

Reproduction status
Not independently reproduced by Moona Intelligence. This record read the GitHub Security Advisory directly, which states the vendor's own confirmed mechanism and shipped fix, rather than reproducing a bucket pre-registration attack against a live account.
Evidence state
Confirmed

Known unknowns

  • Whether this vulnerability has been exploited in the wild against any real deployment, and how many operators were affected.
  • Whether any specific attacker controlled bucket has been identified.
  • Whether an MCP client typically surfaces the destination bucket to a calling agent before the upload proceeds.

Limitations

  • Direct fetch of AWS's own Security Bulletin 2026-105-AWS was blocked by this session's network egress policy on every attempt; this record relies on the GitHub Security Advisory Database's own record as its primary source instead.
  • This session did not clone or independently read the MCP server's own source code at the affected version; the mechanism above rests on the advisory's own description rather than an independent code reading.

Claim provenance