Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain AWS identity able to invoke destination role
-
DeliveryTarget cross-account AssumeRole trust
-
ExploitAbuse missing External ID enforcement
-
ExecutionAssume role without confused-deputy check
-
ImpactAccess replicated secrets cross-account
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V13 - Configuration Permission assignment review
|
| Exploitation Conditions | Applies only to deployments using cross-account AssumeRole replication that rely on an External ID (external_id on the destination config) as the confused-deputy safeguard; in versions up to 0.4.0 external_id was never forwarded to sts:AssumeRole, so the safeguard was silently inert. Exploitation requires an attacker to already hold or influence an AWS identity capable of assuming the destination role (PR:L), limiting it to parties with some standing in the AWS trust relationship. It does NOT affect single-account deployments or configurations that never relied on External ID for isolation. |
| Impact | This is a medium-severity (CVSS 5.3) authorization flaw, not a high-priority emergency. The vendor CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N) with low impact across confidentiality, integrity, and availability (VC:L/VI:L/VA:L) and no scope/subsequent-system impact indicates a limited, partial-impact issue requiring some existing privilege (PR:L). The source diff clarifies the actual defect: before v0.5.0 the external_id parameter was never passed into the sts:AssumeRole call in process_single_secret, so the External ID (a confused-deputy protection) was documented as 'required' but was not actually enforced - matching CWE-732 (incorrect permission assignment). No EPSS score, KEV listing, or POC is present in the data, so there is no evidence of active or likely exploitation. The sole reporter is VulDB, which frequently auto-generates low-signal entries; combined with an obscure open-source product, real-world risk is low despite the clean network-vector framing. Note a nuance: the vendor marks AC:L, but realistic exploitation depends on an attacker already being positioned to assume the role and on External ID being the only barrier, which is closer to higher complexity - verify against your deployment. |
| Exploit ScenarioDerived | A deployment configures cross-account secret replication expecting an AWS External ID to gate the destination AssumeRole. Because versions up to 0.4.0 never pass external_id to sts:AssumeRole, a third party who can induce or reuse the trusted role relationship (a classic confused-deputy scenario) can obtain access the External ID was meant to prevent, exposing replicated secret material. No public exploit is identified at time of analysis. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 04, 2026
Cross-account secret replication in devopspolis secrets-replicator up to and including 0.4.0 silently drops the configured External ID, so the confused-deputy safeguard that operators believe protects the destination role is never actually enforced. An attacker who already holds or can influence an AWS principal that is permitted to assume the destination role (CVSS PR:L, requiring some standing in the trust relationship) can therefore assume it without supplying the External ID, resulting in incorrect permission assignment and limited confidentiality and integrity impact (CVSS 5.3, CWE-732). The flaw affects only deployments that use cross-account AssumeRole replication and rely on external_id for isolation; single-account deployments and configurations that never used an External ID are not impacted. Patches ship in v0.5.0 (commit b42239405fbf4fae3c3f0048fc0b4225112edceb) and no public exploit code or confirmed active exploitation has been identified at time of analysis.
RemediationAI
Vendor-released patch: upgrade to secrets-replicator 0.5.0 (release https://github.com/devopspolis/secrets-replicator/releases/tag/v0.5.0), which contains commit b42239405fbf4fae3c3f0048fc0b4225112edceb and introduces the external_id field on DestinationConfig, loads it from the destination config, and passes it to sts AssumeRole. Any role trust policy whose only protection is a sts:ExternalId condition should be assumed to have been ineffective at any time a version ≤ 0.4.0 was running, so treat those assume-role events as unaudited until reviewed. Until upgrades complete, the actionable compensating control is to tighten the destination role trust policy itself: remove or narrow Wildcard principals, add aws:PrincipalArn and aws:SourceAccount/aws:SourceArn conditions, scope the assumed role's permissions to the minimum secrets required, and enable CloudTrail AssumeRole logging with alerts on AssumeRole calls that lack an externalId field; the trade-off is that tightening trust conditions is deployment-specific and may break legitimate replication paths until the principal set is enumerated. Rotating any External ID values exposed in configuration is also advisable, although note that with ≤ 0.4.0 the External ID was never sent, so rotation alone does not mitigate the issue. Explicitly verify after upgrading that External ID values appear in the AssumeRole request via CloudTrail before decommissioning the Workarounds.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The component is an AWS AssumeRole handler inside secrets-replicator, a tool that copies secrets from a source AWS account to destinations, optionally in other accounts via sts:AssumeRole. In AWS, the External ID is a shared secret value that a trusted account places in its AssumeRole call and that the trusting account enforces with a sts:ExternalId condition in the role's trust policy; it exists precisely to defeat the confused-deputy problem where a third party is tricked into using a service's ability to assume a role. The vulnerability is an instance of CWE-732 (Incorrect Permission Assignment for Critical Resource): the destination configuration object gained no external_id field, config.py never loaded the external_id/externalId key from destination definitions, and process_single_secret() in src/handler.py called sts AssumeRole with only region and role_arn, omitting external_id entirely. The net effect is that the External ID was never transmitted, so any trust policy relying solely on a sts:ExternalId condition became satisfiable without the secret; the patch adds an Optional external_id field to DestinationConfig, populates it from destination config data (including the camelCase externalId alias), and forwards it into the AssumeRole call. This depends on AWS STS assuming-role semantics, IAM trust policies with ExternalId conditions, and the deployment topology of cross-account replication.
Know when AWS gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N
AWS API access gives AV:N; AC:H and PR:L because the attacker must already be positioned in the role trust where External ID was the only barrier; partial C/I impact on secrets, no availability effect.
Primary rating from Vendor (VulDB).
CVSS VectorVendor: VulDB
DescriptionCVE.org
A vulnerability has been found in devopspolis secrets-replicator up to 0.4.0. Impacted is the function process_single_secret of the file src/handler.py of the component AssumeRole Handler. Such manipulation of the argument external_id leads to incorrect permission assignment. The attack can be executed remotely. Upgrading to version 0.5.0 is recommended to address this issue. The name of the patch is b42239405fbf4fae3c3f0048fc0b4225112edceb. It is suggested to upgrade the affected component.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
Loom for AWS deployments running a version before 1.6.1 with no identity provider configured expose an unauthenticated s
Unauthorized data access in Budibase low-code platform before 3.30.4 allows unauthenticated users to manipulate internal
Authenticated Typebot users can abuse the webhook block (HTTP Request component) in versions prior to 3.13.1 to issue ar
Multiple vulnerabilities in ASTPP 4.0.1 including XSS and command injection in SIP device configuration and plugin manag
Remote code execution in Amazon awslabs postgres-mcp-server before 1.1.7 lets remote actors run arbitrary OS commands on
Remote code execution in AWS AgentCore CLI before v0.14.2 allows authenticated attackers to inject Python code via craft
Denial of service in the aws-smithy-json Rust runtime crate (versions before 0.62.7) lets remote unauthenticated attacke
Denial of service in Amazon's aws-smithy-http-server Rust crate (versions prior to 0.66.5) lets remote unauthenticated a
Argument injection in the AWS Bedrock AgentCore Python SDK before 1.18.1 lets a remote authenticated user run arbitrary
Arbitrary file read in amazon-mq rabbitmq-aws before 0.2.1 allows authenticated remote users to read any file accessible
WAF managed-rule body inspection on AWS Application Load Balancer (ALB) can be bypassed by remote actors who fragment an
WAF inspection bypass in Amazon CloudFront (with AWS WAF enabled) lets remote actors smuggle malicious request bodies pa
EUVD-2026-92131
GHSA-88p5-cp9r-57qh
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB