CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2026-8596

CVE-2026-8596: Remote Code Execution via Cleartext HMAC Key in Amazon SageMaker Python SDK

Alon Barad
Alon Barad
Software Engineer

May 21, 2026·6 min read·14 visits

Executive Summary (TL;DR)

SageMaker Python SDK leaked symmetric HMAC keys in job environment variables, allowing attackers to forge signatures and achieve RCE via malicious model artifacts.

The Amazon SageMaker Python SDK is vulnerable to arbitrary code execution due to the cleartext storage of a symmetric HMAC signing key in job environment variables. An authenticated attacker with `Describe` permissions can extract this key to forge valid integrity signatures for malicious model artifacts.

Vulnerability Overview

The Amazon SageMaker Python SDK facilitates the development, training, and deployment of machine learning models on AWS. The SDK includes a "Remote Function" capability that allows developers to serialize Python functions using the cloudpickle library and upload them to Amazon S3 for execution in remote inference containers.

CVE-2026-8596 identifies a critical design flaw within this Remote Function implementation. The SDK utilizes cryptographic signatures to verify the integrity of serialized objects before deserialization, preventing the execution of tampered payloads.

In vulnerable versions, the SDK implements this integrity check using a symmetric HMAC-SHA256 key. The SDK stores this key in cleartext within the environment variables of the remote execution container.

Because these environment variables are accessible via the SageMaker Describe APIs, the design violates CWE-312 (Cleartext Storage of Sensitive Information). An authenticated attacker can extract the key, bypass the integrity mechanism, and achieve object injection.

Root Cause Analysis

The root cause of CVE-2026-8596 is the architectural decision to distribute symmetric cryptographic material through observable infrastructure configurations. When a user creates a Remote Function, the client SDK generates an HMAC-SHA256 secret key.

The SDK transmits this key to the target SageMaker job by injecting it into the REMOTE_FUNCTION_SECRET_KEY environment variable. The system design assumes the environment variable remains confined to the execution boundary of the inference container.

This assumption is fundamentally flawed in the context of the AWS control plane. The DescribeTrainingJob and related SageMaker APIs return the complete job configuration upon request, including the user-defined environment variables.

Any IAM principal possessing the sagemaker:DescribeTrainingJob permission can retrieve the exact symmetric key used to secure the payload. Since the key is symmetric, possessing it grants the attacker both validation and signing capabilities.

Code Analysis and Patch Walkthrough

The vulnerability stems from the use of symmetric HMAC operations where asymmetric cryptography is required for the trust model. The client SDK originally generated a random secret, packed it into the environment, and calculated an HMAC over the serialized cloudpickle object.

The remote container retrieved the secret via os.environ.get("REMOTE_FUNCTION_SECRET_KEY") and performed an identical HMAC calculation to verify data integrity. The fix implemented in Pull Request #5708 replaces this mechanism entirely with ECDSA P-256 signatures.

The patched client SDK now generates an asymmetric key pair. The private key remains locally in memory on the client system and signs the serialized object payload.

The SDK passes only the public key component to the remote environment via the environment variable. The following code snippet demonstrates the updated verification logic in serialization.py where the container utilizes the public key to validate the signature:

def _verify_asymmetric_signature(metadata: _MetaData, buffer: bytes, public_key_pem: str):
    # Verification using ECDSA and the public key provided in metadata
    signature_bytes = base64.b64decode(metadata.asymmetric_signature)
    public_key = crypto_serialization.load_pem_public_key(public_key_pem.encode())
    public_key.verify(signature_bytes, buffer, ec.ECDSA(hashes.SHA256()))

By transitioning to ECDSA, the patch eliminates the exposure of signing capabilities. Even if an attacker reads the REMOTE_FUNCTION_SECRET_KEY environment variable, they obtain only the public key, rendering them unable to forge valid signatures for malicious payloads.

Exploitation Methodology

Exploitation of CVE-2026-8596 requires a specific combination of IAM permissions. The attacker must hold authorization to call Describe APIs on SageMaker jobs and write access to the specific Amazon S3 bucket storing the model artifacts.

The attack sequence begins with the adversary targeting an active or historical SageMaker job. The attacker issues a DescribeTrainingJob API request to the AWS control plane to extract the REMOTE_FUNCTION_SECRET_KEY from the job's environment variables.

Upon obtaining the symmetric key, the attacker constructs a malicious Python payload designed to execute arbitrary operating system commands. The attacker compiles this payload into a serialized object using the cloudpickle library.

The attacker signs the malicious object using the stolen HMAC-SHA256 key and updates the corresponding metadata.json file. Finally, the attacker overwrites the legitimate model artifacts in S3 using the s3:PutObject operation.

When the SageMaker inference container initializes or processes a new task, it downloads the tampered payload. The container validates the forged signature, determines the payload is authentic, and deserializes the object, granting the attacker arbitrary code execution.

Impact Assessment

The exploitation of CVE-2026-8596 leads directly to unauthenticated remote code execution within the context of the SageMaker inference container. Deserialization of untrusted cloudpickle data inherently allows the execution of arbitrary Python bytecode or system commands.

This execution occurs with the privileges of the SageMaker container process. An attacker leverages this position to access any IAM credentials attached to the SageMaker execution role, allowing privilege escalation horizontally or vertically within the AWS environment.

The attacker also gains unauthorized access to proprietary machine learning models, training data, and any interconnected database credentials present in the execution environment. The ability to intercept and modify inference results severely compromises data integrity.

The CVSS v3.1 base score of 7.2 accurately reflects the high confidentiality, integrity, and availability impacts. The requirement for specific IAM permissions correctly limits the attack vector, preventing anonymous exploitation over the open internet.

Remediation and Mitigation

The primary remediation for CVE-2026-8596 is upgrading the Amazon SageMaker Python SDK to a patched version. AWS addressed the vulnerability in SDK v2 series version 2.257.2 and v3 series version 3.8.0.

Patching the client SDK prevents the creation of new vulnerable jobs. Organizations must also systematically rebuild and redeploy any existing models or remote functions created with older, vulnerable versions of the SDK.

Rebuilding ensures the SDK utilizes the new ECDSA asymmetric key process for the entire lifecycle of the model artifact. AWS provides the ModelBuilder tool within the SDK to facilitate this redevelopment process.

Organizations enforce proactive security through AWS IAM policy audits as a defense-in-depth measure. Administrators restrict sagemaker:DescribeTrainingJob and s3:PutObject permissions strictly to the principals requiring them for functional operations.

Official Patches

AWSAWS Security Bulletin (2026-031-aws)
AWSFix PR #5708

Technical Appendix

CVSS Score
7.2/ 10
CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H
EPSS Probability
0.10%
Top 73% most exploited

Affected Systems

Amazon SageMaker Python SDK ModelBuilder componentAmazon SageMaker Python SDK Serve componentAWS SageMaker Inference Containers

Affected Versions Detail

Product
Affected Versions
Fixed Version
Amazon SageMaker Python SDK (v2)
AWS
>= 2.199.0, < 2.257.22.257.2
Amazon SageMaker Python SDK (v3)
AWS
>= 3.0.0, < 3.8.03.8.0
AttributeDetail
CWE IDCWE-312
Attack VectorNetwork
CVSS Score7.2 (High)
EPSS Score0.10%
ImpactArbitrary Code Execution
Exploit StatusProof of Concept
KEV StatusNot Listed

MITRE ATT&CK Mapping

T1552Unsecured Credentials
Credential Access
CWE-312
Cleartext Storage of Sensitive Information

The application stores sensitive information in cleartext in a location accessible to unauthorized actors or via unintended API responses.

Vulnerability Timeline

Vulnerability disclosed and AWS Security Bulletin published
2026-05-14
Patch released in v2.257.2 and v3.8.0
2026-05-14
NVD and CVE.org records updated
2026-05-15

References & Sources

  • [1]AWS Security Bulletin
  • [2]GitHub Advisory: GHSA-7hh5-prp2-mfh5
  • [3]v2 Release Notes
  • [4]v3 Release Notes
  • [5]Fix PR #5708

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•20 minutes ago•CVE-2026-63123
6.5

CVE-2026-63123: Cross-Site Request Forgery leading to Cross-Origin Arbitrary File Write in @tinacms/cli

A Cross-Site Request Forgery (CSRF) vulnerability in the local development server of @tinacms/cli allowed malicious cross-origin pages to send state-changing HTTP requests. This issue permitted attackers to write arbitrary files into a developer's project directory or manipulate search and GraphQL indices without authorization.

Amit Schendel
Amit Schendel
0 views•4 min read
•about 1 hour ago•CVE-2026-63188
8.7

CVE-2026-63188: Unauthenticated Directory Traversal in @logto/tunnel

A high-severity path traversal vulnerability exists in the @logto/tunnel npm package (part of the Logto repository) prior to version 0.3.9. Remote unauthenticated attackers can exploit this vulnerability to read arbitrary local files by sending crafted HTTP requests with directory traversal sequences when the static file proxy is active.

Alon Barad
Alon Barad
3 views•7 min read
•about 8 hours ago•CVE-2026-54347
8.7

CVE-2026-54347: Stored Cross-Site Scripting in Froxlor DNS TXT Record Configuration

A critical stored Cross-Site Scripting (XSS) vulnerability was identified in Froxlor server administration software panel before version 2.3.8. Authenticated customers with DNS editor privileges can inject malicious JavaScript into DNS TXT records. Because the application processes these values via a raw formatting callback without context-aware HTML entity encoding, the payload executes in the security context of administrative users who view the affected domain's DNS zones.

Amit Schendel
Amit Schendel
3 views•6 min read
•about 9 hours ago•CVE-2026-54348
7.2

CVE-2026-54348: Second-Order SQL Injection in Froxlor API Layer

An authenticated administrator with privileges to manage admin accounts (such as change_serversettings) can execute arbitrary SQL commands via a second-order SQL injection vulnerability. The flaw resides in Froxlor's administrative API endpoints, specifically during the handling of IP address mapping parameters which are stored as serialized arrays and later interpolated without sanitization into active database queries. This vulnerability allows high-privileged administrative attackers to compromise the database. By injecting a payload into administrative profile metadata, an attacker can extract sensitive credentials, manipulate backend settings, or potentially disrupt database integrity. The vulnerability affects all versions of Froxlor prior to 2.3.8.

Amit Schendel
Amit Schendel
4 views•6 min read
•about 10 hours ago•CVE-2026-54543
5.4

CVE-2026-54543: DNS Resource Record (RR) Injection in Froxlor DomainZones API

CVE-2026-54543 is a DNS Resource Record (RR) Injection vulnerability in Froxlor, an open-source server administration control panel. Prior to version 2.3.8, the DomainZones.add API command failed to perform strict sanitization and validation on the user-controlled record (label) and type parameters before serializing them into BIND-compatible zone files. An authenticated customer with DNS zone management permissions can inject control characters, breaking out of the original record context to define unauthorized resource records within managed zones.

Amit Schendel
Amit Schendel
4 views•7 min read
•about 10 hours ago•CVE-2026-42533
9.2

CVE-2026-42533: NGINX Map Directive and Regex Matching Pre-Auth Heap Buffer Overflow & Info Leak

CVE-2026-42533 is a critical security vulnerability discovered in NGINX Open Source, NGINX Plus, NGINX Ingress Controller, and related products, referred to as the 'Two-Pass Capture-Clobbering' bug. The flaw is situated within NGINX's internal evaluation engine when handling complex variables, exposing a heap-based buffer overflow and information leak when a configuration chains regular expression-based map directives with numbered capture groups. An unauthenticated remote attacker can exploit this weakness by transmitting crafted HTTP requests to trigger remote code execution or defeat ASLR.

Alon Barad
Alon Barad
7 views•7 min read