The AWS API MCP server offered a custom denyList to prevent an agent from using particular AWS operation names. Some requests reached the same underlying operation through differently normalized or aliased spellings, while the denyList validation compared an insufficiently normalized representation. The result was a policy gap between the apparent blocked…
Inspect the ClaimsCase · DiggingBeagle record
AWS API MCP ignored a custom denyList for alternate command name spellings
In an affected AWS API MCP integration, a custom operation denyList could be bypassed by alternate naming or normalization of an otherwise valid API operation.
Public disclosure: Nov 10, 2026
AWS API MCP deployments using a custom denyList against an agent or user who can supply an alternate operation name; backend AWS IAM remains effective.
Assessment profile
Assessment method- Setting
- research demonstration
- Exploitation
- demonstrated
- Evidence
- Grade B
- Remediation
- patch available
- AI role
- AGAINST AI
Basis and provenance
Desk assessment of cited firsthand report and scope limits; quantitative denominators describe only the reporter's stated sample. No independent live exploitation or universal impact is inferred.
Assessed Nov 11, 2026 using diggingbeagle.assessment/1.
Evidence basis: CLM-R236-AWS-MCP-CUSTOM-DENYLIST-BYPASS-01 · CLM-R236-AWS-MCP-CUSTOM-DENYLIST-BYPASS-02 · AWS API MCP security advisory: custom denyList bypass
At a glance
An agent-facing denyList is only an application-level policy. If it is implemented as string matching without canonical command resolution, it can be bypassed while every cloud service-side IAM check still functions correctly.
Read the implicationsNo in-the-wild victim, credential theft or unrestricted cloud-account compromise was established. The advisory does not support claims that normal IAM permission boundaries were bypassed.
Limits and uncertaintyFull account
The AWS API MCP server offered a custom denyList to prevent an agent from using particular AWS operation names. Some requests reached the same underlying operation through differently normalized or aliased spellings, while the denyList validation compared an insufficiently normalized representation. The result was a policy gap between the apparent blocked command and the command that the server dispatched under its configured AWS credentials.
The advisory identifies affected releases before 1.5.1 and a correction in 1.5.1. The ability to call a denied operation still depends on the server's AWS IAM identity having permission for that API. The flaw does not bypass AWS authorization, user confirmation or read-only tool controls in every adapter configuration. It specifically weakens deployments that counted on a custom denyList for an additional operation boundary.
AWS API MCP deployments using a custom denyList against an agent or user who can supply an alternate operation name; backend AWS IAM remains effective.
No in-the-wild victim, credential theft or unrestricted cloud-account compromise was established. The advisory does not support claims that normal IAM permission boundaries were bypassed.
Exact normalization failure. The affected adapter used a different spelling for AWS API operations containing consecutive capital letters when checking its custom denyList and elicitList than when dispatching them. A policy could visibly list the operation as blocked or approval-gated while the MCP command handler still routed a permitted cloud API call. The vulnerable Python package range was 0.2.13 through versions before 1.5.1; the advisory identifies 1.5.1 as patched.
The bypass requires a locally operated MCP server with an affected custom policy and a caller interacting with the assistant. The backend IAM principal still decides whether the cloud operation itself is authorized. That makes a deliberately narrow role a second boundary, whereas a highly privileged role protected only by a string-based denylist remains exposed. The relevant regression test must compare every advertised tool name, normalized operation and effective IAM permission.
Mechanism and trust boundary
- 01
Supply an alternate operation spelling
The caller requests an AWS API operation that a custom policy intended to block.
Boundary: agent tool argument / MCP operation mapping
- 02
Compare noncanonical command names
The application checks a representation that misses the blocked logical operation.
Boundary: denyList matcher / AWS API dispatcher
- 03
Call AWS under existing server identity
The server uses its permitted IAM credentials for the operation, if AWS authorizes it.
Boundary: MCP policy / IAM-enforced action
Claims & evidence
CLM-ENR237-AWSAPI-DENY-ELICITAWS API MCP Server versions >=0.2.13 and <1.5.1 incorrectly normalized operation names with consecutive capitals when enforcing custom denyList or elicitList rules; the advisory marks 1.5.1 patched.supported
Basis: reported finding
- supportsAWS API MCP security advisory: custom denyList bypassprimary disclosure
Affected versions, patched versions and Summary paragraphs of GHSA-4wq9-grf3-qg2p
CLM-R236-AWS-MCP-CUSTOM-DENYLIST-BYPASS-01The AWS API MCP advisory documents a bypass of custom denyList operation names, patched in 1.5.1.supported
Basis: reported finding
- supportsAWS API MCP security advisory: custom denyList bypassprimary disclosure
GHSA-4wq9-grf3-qg2p: Description and Patched versions
CLM-R236-AWS-MCP-CUSTOM-DENYLIST-BYPASS-02The flaw did not itself grant new AWS IAM privileges or bypass every independent approval and read-only restriction.supported
Basis: reported finding
- supportsAWS API MCP security advisory: custom denyList bypassprimary disclosure
GHSA-4wq9-grf3-qg2p: Impact and preconditions
Implications
An agent-facing denyList is only an application-level policy. If it is implemented as string matching without canonical command resolution, it can be bypassed while every cloud service-side IAM check still functions correctly.
Controls and mitigations
- Upgrade the AWS MCP integration to 1.5.1 or later and use canonical API operation identifiers for all allow/deny checks.
- Constrain the runtime's AWS IAM policy to the smallest necessary actions, independently of MCP-specific prompt and denyList settings.
- Audit actual CloudTrail API calls and compare them to the intended MCP operation allowlist.
- Upgrade `awslabs.aws-api-mcp-server` to at least 1.5.1 and separately keep AWS IAM actions restricted to the minimum necessary set; policy-name normalization is not an IAM replacement.
Unknowns and contradictions
- No in-the-wild victim, credential theft or unrestricted cloud-account compromise was established. The advisory does not support claims that normal IAM permission boundaries were bypassed.
Sources and citation
Material revision history
- Nov 11, 2026 · Published version · first publication · revision 238