Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessCraft checkpoint with malicious pickle __reduce__ payload
-
DeliveryDistribute via model hub or direct share
-
ExploitVictim loads checkpoint in Composer
-
ExecutionPickle deserialization invokes attacker callable
-
ImpactExecute arbitrary code as training process
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A08:2025 - Software or Data Integrity Failures
ASVS 5.0
V1 - Encoding and Sanitization Safe deserialization, type allowlists
MITRE ATT&CK
2 techniques across 2 tactics: Execution, Initial Access The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires the victim to load an attacker-controlled checkpoint file through Composer's checkpoint loading path - specifically the resumption checkpoint loader (load_resumption_checkpoint, which used pickle.load) or the general torch.load path that used weights_only=False. The concrete prerequisite is that the target opens/loads a malicious checkpoint or .pt file (UI:R), e.g. one obtained from an untrusted model hub, shared drive, or collaborator. Limiting factors: there is no remote network-listening service to attack (AV:L) - the attacker must get the victim to load the file; no authentication or special privileges are needed on the victim side (PR:N); and exploitation is confined to organizations that load externally sourced checkpoints, so deployments that only load self-produced, trusted checkpoints are not realistically exposed. No special non-default configuration is required - the unsafe deserialization was the default behavior on the affected code path. |
| Impact | The CVSS 3.0 base score is 7.8 (High) with vector AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H - local attack vector, low complexity, no privileges, but requiring user interaction, with full confidentiality/integrity/availability impact at unchanged scope. This is a client-side/processing vulnerability, not a remotely reachable network service: the 'remote attacker' delivers a poisoned checkpoint that a victim must load, which reconciles the description's 'Remote Code Execution' wording with the AV:L vector (local execution triggered by opening attacker-supplied content). No EPSS score, KEV listing, or SSVC decision was provided in the input, so exploitation probability cannot be quantified; however, the pattern (unsafe pickle in an ML library) is well understood and trivially weaponizable, as the vendor's own regression test demonstrates with an os.system payload. Real-world priority is moderate and contingent on whether an organization loads third-party/untrusted checkpoints - environments that only load self-generated checkpoints face limited exposure. |
| Exploit ScenarioDerived | An attacker publishes a backdoored model checkpoint on a public model hub or sends it to an ML engineer as 'pretrained weights' or a 'resume training' file. When the victim calls Composer's checkpoint loading on that file, the embedded pickle payload (e.g. an object whose __reduce__ returns os.system('...')) executes attacker code with the privileges of the training process. No exploit code is public, but the vendor's own regression test shows how trivially a malicious __reduce__ payload triggers execution, reflecting low attack complexity (AC:L) offset by required user interaction (UI:R). |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jun 24, 2026
Arbitrary code execution in MosaicML Composer arises when the library loads a model or resumption checkpoint, because checkpoint parsing deserializes attacker-controlled pickle data without validation (CWE-502). A user who loads a maliciously crafted checkpoint (.pt) file - for example one downloaded from a model hub or shared by a collaborator - runs arbitrary Python code in the context of the training process. Reported through ZDI (ZDI-26-384, ZDI-CAN-27990); no public exploit identified at time of analysis and the issue is not listed in CISA KEV, but an upstream source fix is available.
RemediationAI
Upstream fix available (PR/commit); a released patched version is not independently confirmed from the available data - track the MosaicML Composer release that incorporates commit 6405188805a0054b4551ec49e4919c54c971d0e8, which replaces unguarded pickle.load with a _RestrictedUnpickler allowlist and switches torch.load to weights_only=True with torch.serialization.safe_globals(). Until a tagged patched release is pinned, the primary compensating control is to never load checkpoints from untrusted or unverified sources: load only checkpoints you generated or that are cryptographically verified (checksums/signatures) from a trusted artifact store, accepting that this restricts usable files to known-good ones. Where you control the loading code, force torch.load(..., weights_only=True) and avoid weights_only=False, noting that some legacy checkpoints serializing non-tensor objects (e.g. metric objects) may then fail to load and require load_ignore_keys (e.g. state/train_metrics/*, state/eval_metrics/*) to skip unsupported entries. Treat checkpoint files like executable code in CI/CD and isolate checkpoint-loading processes (least-privilege accounts, containers/sandboxing) to limit blast radius. Advisory references: https://www.zerodayinitiative.com/advisories/ZDI-26-384/ and the fix commit URL above.
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
MosaicML Composer is an open-source PyTorch training library used to train and fine-tune deep-learning models, with built-in support for saving and resuming from checkpoints. The vulnerable code path is checkpoint loading: composer/checkpoint/load.py used a bare pickle.load() on resumption checkpoints, and composer/utils/checkpoint.py called torch.load(..., weights_only=False), both of which invoke Python's pickle machinery. Pickle deserialization can instantiate arbitrary objects and invoke their __reduce__ methods (e.g. os.system), the canonical CWE-502 'Deserialization of Untrusted Data' root cause. The fix introduces a _RestrictedUnpickler that allowlists only known-safe globals (builtins, collections, numpy, torch tensor rebuild helpers) and switches torch.load to weights_only=True wrapped in torch.serialization.safe_globals(), so untrusted checkpoints can no longer reach dangerous callables. Affected per CPE: cpe:2.3:a:mosaicml:composer (all versions prior to the fix).
Know when Composer 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
AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
Local because exploitation requires the victim to load a malicious checkpoint file (AV:L/UI:R); no privileges needed (PR:N), and arbitrary code execution yields full C/I/A impact.
Primary rating from Vendor (zdi).
CVSS VectorVendor: zdi
DescriptionCVE.org
MosaicML Composer Deserialization of Untrusted Data Remote Code Execution Vulnerability. This vulnerability allows remote attackers to execute arbitrary code on affected installations of MosaicML Composer. User interaction is required to exploit this vulnerability in that the target must visit a malicious page or open a malicious file.
The specific flaw exists within the parsing of checkpoints. The issue results from the lack of proper validation of user-supplied data, which can result in deserialization of untrusted data. An attacker can leverage this vulnerability to execute code in the context of the current process. Was ZDI-CAN-27990.
Zero Day Initiative Advisories
Executive ViewAI
MosaicML Composer contains an arbitrary code execution vulnerability (CVSS 7.8) triggered when users load machine learning checkpoints from untrusted sources. While no public exploit identified at time of analysis, any user loading a malicious checkpoint can execute code with full training environment privileges, potentially compromising models, training data, and connected systems.
No vendor-released patch identified at time of analysis. Interim mitigations: (1) Restrict checkpoint loading to internally-controlled sources and conduct security review of all checkpoint sources; (2) Implement air-gapped or sandboxed training environments for external or untrusted checkpoints; (3) Establish checkpoint validation procedures before loading; (4) Audit and enforce least-privilege user permissions on training systems; (5) Monitor upstream MosaicML repository for patch releases.
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
Insecure deserialization occurs when an application converts serialized data (a stream of bytes representing an object's state) back into a living object without proper validation.
Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.
Composer is a dependency manager for PHP. Rated high severity (CVSS 8.8), this vulnerability is remotely exploitable, lo
Command injection in PHP Composer's Perforce VCS handler allows arbitrary local command execution with the privileges of
The tagDiv Composer WordPress plugin before 4.0 does not sanitise and escape a parameter before outputting it back in th
Composer is an open source dependency manager for the PHP language. Rated critical severity (CVSS 9.8), this vulnerabili
Composer is a dependency manager for PHP. Rated high severity (CVSS 8.8), this vulnerability is remotely exploitable, lo
Composer is a dependency manager for the PHP programming language. Rated high severity (CVSS 8.8), this vulnerability is
Arbitrary file write in Composer (the PHP dependency manager) before 2.2.29 and 2.10.2 allows a malicious package served
The tagDiv Composer plugin for WordPress is vulnerable to Stored Cross-Site Scripting via multiple shortcodes in all ver
Path traversal in Composer's binary installation flow allows a malicious PHP package to cause arbitrary host files to be
Improper input validation in the Drupal Composer contributed module (SA-contrib-2026-046) exposes sites to confidentiali
Path traversal in MosaicML Composer 0.32.1 and earlier allows an attacker who supplies a crafted checkpoint archive to w
Credential leakage in Composer PHP dependency manager exposes sensitive tokens - such as GitHub Personal Access Tokens e
EUVD-2026-39110
GHSA-cv8h-j5cx-fg4f
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB