Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain local low-privilege access
-
DeliveryCraft malicious pickle checkpoint file
-
ExploitPass path as src_ckpt to load_ckpt
-
ExecutionTrigger deserialization in main_util.py
-
ImpactExecute attacker-controlled code
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 that the load_ckpt function in torchdistill/common/main_util.py be invoked with an attacker-influenced src_ckpt argument pointing to a malicious (pickle-serialized) checkpoint, and requires LOCAL access with low privileges (PR:L, AV:L) - not remote exploitation. The core limiting factor is that an attacker must already be able to run code or place/supply a checkpoint file on the system, and the victim application must load that untrusted checkpoint; default usage with trusted, self-generated checkpoints is not exploitable. There is no remote/network vector and no unauthenticated path. Because the maintainer treats checkpoint loading as trusted-input behavior, deployments that only ever load first-party checkpoints are effectively not at risk. |
| Impact | This is a low-to-moderate priority issue despite the deserialization (CWE-502) class typically being severe. The supplied CVSS 4.0 vector (AV:L/AC:L/AT:N/PR:L/UI:N) scores 4.8 (Medium) and explicitly requires LOCAL access with LOW privileges, which sharply limits real-world risk compared to a network-exploitable deserialization flaw. The 'E:P' in the vector and the reference set confirm a public proof-of-concept exists, so publicly available exploit code exists - but there is NO CISA KEV listing and no EPSS score was provided, so there is no evidence of active or widespread exploitation. The most important signal is the maintainer's own response in the referenced GitHub issue (#550): they closed it as a duplicate and consider the behavior 'tolerable for this project,' meaning no fix is planned and the project treats loading checkpoints as inherently trusted input. In practice this flaw primarily matters to anyone who loads untrusted PyTorch checkpoint files via load_ckpt; it is not a mass-exploitation candidate. Note a tension worth verifying: the input impact metrics are rated LOW (VC:L/VI:L/VA:L), yet Python pickle-based deserialization normally yields arbitrary code execution (full impact) - the low ratings likely reflect the reporter's view that only a local, already-authorized actor supplying their own file is affected. Treat impact as potentially higher than the Medium score suggests if untrusted checkpoints can reach load_ckpt. |
| Exploit ScenarioDerived | A local, low-privileged user (or any workflow that ingests an externally sourced model checkpoint) supplies a crafted malicious checkpoint path as the src_ckpt argument to torchdistill's load_ckpt function. When the checkpoint is deserialized, attacker-controlled pickle data executes, compromising the process. A public proof-of-concept is referenced in GitHub issue #550. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 13, 2026
Deserialization of attacker-influenced checkpoint files in torchdistill through 1.1.5 can lead to arbitrary code execution in the context of the process that invokes load_ckpt, but exploitation requires local access and low privileges and depends on the application loading an untrusted src_ckpt file. Publicly available exploit code exists, and there is no indication of confirmed active exploitation (CISA KEV). Overall priority is low-to-moderate because default workflows that load only trusted, self-generated checkpoints are not exposed.
RemediationAI
No vendor-released patch is identified in the provided data; the maintainer closed the upstream issue as a duplicate and the project appears to treat checkpoint loading as a trusted operation. Until a fixed release beyond 1.1.5 is published and confirmed, avoid passing untrusted or attacker-writable src_ckpt paths to load_ckpt. Restrict write access to checkpoint directories and model artifact stores so low-privileged users cannot plant malicious checkpoints, and run training or inference jobs as a dedicated least-privileged account, although that does not eliminate risk if the job must load a malicious file. Where untrusted checkpoints must be inspected, do so in a sandboxed container with read-only mounts and no host credentials, accepting the operational overhead and breakage of normal checkpoint loading. Prefer loading only first-party, integrity-checked checkpoints and consider converting trusted artifacts to a safe serialization format where the codebase supports it, but there is no provided evidence of an upstream safe-loading option. Advisory references: https://vuldb.com/vuln/416771, https://vuldb.com/cve/CVE-2026-108947, and https://github.com/yoshitomo-matsubara/torchdistill/issues/550. If the vendor later publishes a patch, upgrade to the exact fixed version named in that advisory.
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
CVE-2026-108947 is a CWE-502 deserialization flaw in yoshitomo-matsubara torchdistill, specifically in the load_ckpt function of torchdistill/common/main_util.py. The vulnerable behavior is the loading of a checkpoint specified by src_ckpt without adequate trust validation; because PyTorch checkpoints commonly use pickle-based serialization, a malicious checkpoint can trigger object deserialization side effects and code execution when loaded. The CPE cpe:2.3:a:yoshitomo-matsubara:torchdistill:*:*:*:*:*:*:*:* indicates the affected product family without version constraint, while the reported affected range is up to 1.1.5. The supplied CVSS 4.0 vector is AV:L/AC:L/AT:N/PR:L/UI:N/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N/E:P, reflecting local access, low privileges, no user interaction, and proof-of-concept exploit maturity; the independent assessment rates the same conditions under CVSS 3.1 as AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H, meaning successful exploitation can have high confidentiality, integrity, and availability impact even though the attack path is constrained. The maintainer considers this similar to a prior internal report and closed the GitHub issue as a duplicate, treating checkpoint loading as trusted-input behavior.
Know when Torchdistill 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:L/AC:L/AT:N/PR:L/UI:N/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N/E:P
Local vector with low-privilege invocation of load_ckpt (AV:L/PR:L/AC:L); pickle deserialization yields arbitrary code execution, so C/I/A rated High despite the input's low impact ratings.
Primary rating from Vendor (VulDB).
CVSS VectorVendor: VulDB
Lifecycle Timeline
3DescriptionCVE.org
A flaw has been found in yoshitomo-matsubara torchdistill up to 1.1.5. This affects the function load_ckpt of the file torchdistill/common/main_util.py. Executing a manipulation of the argument src_ckpt can lead to deserialization. The attack needs to be launched locally. The exploit has been published and may be used. The project maintainer explains: "This is very similar to an internal report that GH auto-generated for the owner before, which I found tolerable for this project at that time. So I will close this as duplicate."
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.
EUVD-2026-98206
GHSA-m93m-2x62-w23p
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB