Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessPredict target AWS account ID and region
-
DeliveryPre-create predictably named default S3 bucket
-
ExploitSDK default_bucket() uses bucket unvalidated
-
ExecutionExecute attacker code in SageMaker environment
-
ImpactExfiltrate IAM role credentials
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V12 - Secure Communication Communication channel verification
|
| Exploitation Conditions | Exploitation requires the attacker to pre-create an S3 bucket whose name matches the SDK's predictable default (the sagemaker-prefixed region/account-ID pattern consumed by default_bucket()) BEFORE the victim's SDK first provisions it, and the victim must then invoke a SageMaker workflow that calls default_bucket() on the unpatched SDK (V2 < 2.257.3 or V3 < 3.10.0). This is the AT:P attack requirement: the attacker needs an AWS account and must know or predict the target's account ID and region, and must win the race before the victim already owns that bucket. Key LIMITING factors: if the target has already created its default bucket the attack fails (favoring first-time / newly-onboarded environments), success is unauthenticated against the target (PR:N) but gated on the pre-creation race, and only the two listed vulnerable SDK version ranges are affected - upgrading to 3.10.0 or 2.257.3 adds the missing bucket-ownership validation and remediates it. |
| Impact | The vendor-assigned CVSS 4.0 base score is 9.4 (Critical) with vector AV:N/AC:L/AT:P/PR:N/UI:N and high impact to confidentiality, integrity and availability of both the vulnerable system (VC:H/VI:H/VA:H) and a subsequent system (SC:H), consistent with remote code execution plus IAM credential theft reached without authentication or user interaction. The single most important nuance is AT:P (Attack Requirements: Present): exploitation is not a simple one-shot network request - it depends on a condition outside the attacker's control, namely that the attacker pre-creates the predictably named S3 bucket BEFORE the victim's SDK first provisions it, and that the victim then runs the vulnerable workflow. This materially tempers the raw 9.4: the flaw is a pre-positioning / namespace-squatting race rather than a wormable, broadly-automatable RCE, so realistic exploitation is more targeted and opportunistic than widespread. No EPSS score, SSVC decision, KEV listing, or public POC was provided in the input, so exploitation probability cannot be quantified and there is NO evidence of active exploitation. The reporter is the vendor itself (AMZN) with a coordinated GHSA advisory and AWS security bulletin, which raises confidence in the technical details but does not imply in-the-wild activity. Net assessment: a genuine high-priority issue for organizations running the affected SDK versions (patch promptly), but the AT:P race precondition means it is less of a mass-exploitation emergency than the 9.4 headline alone suggests. |
| Exploit ScenarioDerived | An attacker who can enumerate or guess a target's AWS account ID and region pre-creates an S3 bucket matching the SDK's predictable default naming pattern (e.g. sagemaker-{region}-{account-id}). When the victim later runs a SageMaker workflow, the vulnerable default_bucket() uses that attacker-owned bucket without verifying ownership, letting the attacker serve malicious artifacts/code that execute in the SageMaker execution environment and expose the attached IAM role credentials. No public exploit identified at time of analysis; the AV:N/AC:L vector makes the actions easy once the AT:P pre-creation condition is satisfied. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv2 – Oct 21, 2026
Code execution inside the target SageMaker execution environment, together with disclosure of the execution role's IAM credentials, is reachable through the Amazon SageMaker Python SDK's default_bucket() helper, which provisions and then consumes an S3 bucket whose name is derived predictably from the account ID and region but never verifies who actually owns that bucket. The defect affects V3 releases before 3.10.0 and V2 releases before 2.257.3; a remote actor who registers that predictable bucket name in their own AWS account first can influence the artifacts, scripts and data the victim's training, processing and hosting jobs read and write, which the vendor scores 9.4 (Critical) under CVSS 4.0 and which our independent assessment rates CVSS 3.1 AV:N/AC:H/PR:N/UI:N/S:C/C:H/I:H/A:H because the attacker must win a bucket-name pre-creation race. No public exploit code has been identified at time of analysis and the issue is not listed in CISA KEV; exploitation favors newly onboarded or not-yet-provisioned environments, since targets that already own their default bucket are not exposed.
Earlier versions of this analysis (1)
Predictable S3 bucket naming in the Amazon SageMaker Python SDK lets an unauthenticated remote actor pre-create the bucket that the SDK's default_bucket() helper would otherwise provision, then receive the victim's uploads and serve back tampered artifacts. Affected are V3 releases before 3.10.0 and V2 releases before 2.257.3; exploitation requires the victim to rely on default bucket behavior (no explicit bucket configured) and the attacker to win a first-use race in S3's global namespace against a name derived from region and AWS account ID, which is why the vector is rated AC:H despite PR:N and full C/I/A impact. Successful abuse can yield code execution inside the SageMaker execution environment and disclosure of the execution role's IAM credentials; no public exploit code or confirmed active exploitation was identified at time of analysis, and vendor patches are available.
RemediationAI
Vendor-released patch: upgrade to Amazon SageMaker Python SDK 3.10.0 on the V3 line or 2.257.3 on the V2 line, which introduce the missing bucket-ownership validation in default_bucket(); install with pip install --upgrade sagemaker3.10.0 or pip install --upgrade sagemaker2.257.3 using the PyPI artifacts, and pin these minimums in every requirements file, container image and notebook kernel image that ships the SDK, since fixing only the developer laptop leaves SageMaker training and processing containers on the vulnerable code. Details are in the AWS bulletin https://aws.amazon.com/security/security-bulletins/2026-142-aws/ and advisory https://github.com/aws/sagemaker-python-sdk/security/advisories/GHSA-5rx8-8fr2-f855. Where an immediate upgrade is blocked, the effective compensating control is to pre-empt the race by pre-creating the sagemaker-prefixed default bucket yourself in each account and region the SDK will target, so the predictable name is already owned by the legitimate account and the SDK never adopts a foreign bucket; the trade-off is that this must be done per region and per account, and an attacker who squatted the name earlier still defeats it, so any existing default bucket should be inspected with GetBucketAcl/GetBucketLocation to confirm ownership before trusting it. A second workaround is to stop relying on the helper entirely - pass an explicit bucket argument to training, processing, model and session calls, or set a known-good default via the SDK session configuration - which removes the predictable-name dependency at the cost of code changes and a consistent configuration-management process across teams. Restricting which S3 buckets your SageMaker execution roles may read or write, for example with IAM policy conditions or an SCP limiting access to buckets in trusted accounts, lowers blast radius if a squatted bucket is used, but it will also break workflows that legitimately cross account boundaries and must be piloted before enforcement.
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 root cause is CWE-940 (Improper Verification of Source of a Communication Channel) applied to Amazon S3, whose bucket namespace is globally unique across all AWS accounts and regions. The SageMaker Python SDK's default_bucket() follows a sagemaker-prefixed, region- and account-ID-derived naming convention and, when the computed bucket does not exist, creates it; critically, when a bucket with that name already exists it simply adopts it without a HeadBucket/GetBucketAcl ownership or account-ID check. Because the name is deterministic and the target account ID and region are often discoverable (from ARNs, console URLs, error messages, or partner integrations), an attacker operating any AWS account can squat the name ahead of time. Once the victim's workflow calls default_bucket() on an unpatched SDK, the SDK treats the attacker-controlled bucket as its own channel: training and processing jobs upload their source archives there, read entry-point scripts and model artifacts back from it, and the execution role's temporary IAM credentials become exposed to anything the attacker plants or reads - yielding code execution in the SageMaker execution environment and credential theft with a scope change into the subsequent AWS account. The affected surface is the SDK itself (CPE cpe:2.3:a:aws:amazon_sagemaker_python_sdk), distributed as the PyPI package sagemaker, and the only affected ranges are V3 before 3.10.0 and V2 before 2.257.3.
Know when Python 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:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:H/SI:N/SA:N
Attacker needs an AWS account but no target privileges (PR:N); success depends on pre-creating the predictable bucket and winning a race, mapping AT:P to AC:H, and RCE plus credential theft cross a trust boundary (S:C).
Primary rating from Vendor (AMZN).
CVSS VectorVendor: AMZN
Lifecycle Timeline
4DescriptionCVE.org
Missing verification of source of a communication channel in the default_bucket() function in Amazon SageMaker Python SDK V3 before 3.10.0 and V2 before 2.257.3 might allow remote actors to achieve code execution in the target SageMaker execution environment and obtain IAM credentials via pre-creation of a predictably named S3 bucket that the SDK uses without ownership validation.
To remediate this issue, users should upgrade to Amazon SageMaker Python SDK 3.10.0 (V3) or 2.257.3 (V2).
Articles & Coverage 1
Technical POC Analysis
CWE-940: Improper Verification of Source of a Communication Channel.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
Amazon SageMaker Python SDK's default_bucket() helper exposes organizations using affected V3 releases before 3.10.0 and V2 releases before 2.257.3 to unauthenticated attackers who can pre-create predictable S3 bucket names, potentially enabling code execution in SageMaker execution environments and disclosure of IAM role credentials. Because an attacker could influence the artifacts, scripts, and data used by training, processing, and hosting jobs, leadership should treat this as a cloud-account and data-integrity risk, especially for newly onboarded accounts or regions; no public exploit identified at time of analysis and a vendor patch is available.
Apply vendor patch.
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
Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.
Wazuh SIEM platform versions 4.4.0 through 4.9.0 contain an unsafe deserialization vulnerability in the DistributedAPI t
BentoML version 1.4.2 and earlier contains an unauthenticated remote code execution vulnerability through insecure deser
pgAdmin 4 contains critical remote code execution vulnerabilities in the Query Tool download and Cloud Deployment endpoi
The renderLocalView function in render/views.py in graphite-web in Graphite 0.9.5 through 0.9.10 uses the pickle Python
BentoML is a Python library for building online serving systems optimized for AI apps and model inference. Rated critica
OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h does not properly restrict processing of ChangeCiph
pyLoad download manager version prior to 0.5.0b3.dev77 exposes the Flask SECRET_KEY through an unauthenticated endpoint.
Langflow (a visual LLM pipeline builder) contains a critical unauthenticated code execution vulnerability (CVE-2026-3301
In Mercurial before 4.1.3, "hg serve --stdio" allows remote authenticated users to launch the Python debugger, and conse
Unauthenticated remote code execution affects Kestra OSS (the open-source event-driven orchestration platform) prior to
Unauthenticated remote code execution in Marimo ≤0.20.4 allows attackers to execute arbitrary system commands via the `/
pyLoad is the free and open-source Download Manager written in pure Python. Rated medium severity (CVSS 5.3), this vulne
EUVD-2026-107541
NVD
CVE.org
EPSS
GitHub
Exploit-DB