NeuralNLP-NeuralClassifier CVE-2025-13708
HIGHAttack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessDeliver malicious PyTorch checkpoint to victim
-
ExploitVictim loads model via predict path
-
Executiontorch.load deserializes untrusted pickle
-
ImpactExecute arbitrary code in process context
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 model checkpoint file through the prediction path that calls |
| Impact | This is a CWE-502 untrusted-data deserialization flaw in Tencent NeuralNLP-NeuralClassifier's |
| Exploit ScenarioDerived | An attacker crafts a malicious PyTorch checkpoint file embedding a pickle payload and distributes it as a pretrained NeuralNLP-NeuralClassifier model (e.g., via a model-sharing site, email, or compromised repo). When a victim loads it for prediction, the unsafe |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 19, 2026
Arbitrary code execution in Tencent NeuralNLP-NeuralClassifier occurs when the prediction path loads an untrusted PyTorch checkpoint via torch.load() without weights_only=True, allowing a malicious pickle payload to run code in the context of the user (described as root in the ZDI advisory). Affected installations are those using the pre-patch predict.py/_load_checkpoint code or a torch version below 2.6.0; exploitation is local and requires the victim to obtain and load an attacker-controlled model file (UI:R), with no network service directly exposed. No public exploit was identified at time of analysis, the issue is not in CISA KEV, and EPSS is 0.51% (42nd percentile).
RemediationAI
Apply the upstream fix commit 8dea5ffdb45cf0a33b3d116de38507afaee87594 (or a later release containing it) and upgrade PyTorch to 2.6.0 or newer, since the fix changes torch.load() calls in predict.py to pass weights_only=True and raises requirements.txt to torch>=2.6.0. If upgrading cannot be done immediately, avoid loading checkpoints from untrusted or unverified sources, enforce checksum/signature validation on model artifacts, and run prediction jobs in a low-privilege sandbox or container with no access to sensitive host data; note that weights_only=True can reject legacy checkpoints containing non-tensor Python objects, so affected models may need to be re-saved as state dictionaries or explicitly allowlisted, and a torch upgrade may alter compatibility with older checkpoint formats. Vendor references: https://github.com/Tencent/NeuralNLP-NeuralClassifier/commit/8dea5ffdb45cf0a33b3d116de38507afaee87594 and https://www.zerodayinitiative.com/advisories/ZDI-25-1033/.
Affected ProductsAI
Tencent NeuralNLP-NeuralClassifier installations that use the pre-patch predict.py checkpoint-loading path and resolve PyTorch below 2.6.0 are affected, specifically code calling torch.load() without weights_only=True in _load_checkpoint/_get_classification_model. The upstream fix is commit 8dea5ffdb45cf0a33b3d116de38507afaee87594, which also requires torch>=2.6.0; see https://github.com/Tencent/NeuralNLP-NeuralClassifier/commit/8dea5ffdb45cf0a33b3d116de38507afaee87594 and the ZDI advisory https://www.zerodayinitiative.com/advisories/ZDI-25-1033/. No CPE strings were provided to narrow exact version ranges beyond this patch boundary.
Affects your stack
Find out whether the stacks and servers you run are on an affected version.
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The flaw is CWE-502, deserialization of untrusted data, in Tencent NeuralNLP-NeuralClassifier's _load_checkpoint/_get_classification_model path used by predict.py. PyTorch checkpoints are pickle-based; calling torch.load() without weights_only=True permits arbitrary object construction and code execution when a crafted checkpoint is deserialized. The upstream commit 8dea5ff changes both checkpoint-loading calls to pass weights_only=True and raises the dependency floor from torch>=1.0.1.post2 to torch>=2.6.0, reflecting PyTorch's safer default loading behavior. The assessed vector is CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H: local attack vector, no privileges required to craft the payload, mandatory user interaction for the victim to load the file, and high confidentiality/integrity/availability impact. The ZDI advisory tracks this as ZDI-CAN-27184; no CPE strings were supplied in the input data.
Know when Pytorch 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
File-based pickle RCE requires the victim to load a malicious checkpoint locally, so AV:L and UI:R; no attacker privileges needed (PR:N) and full code execution yields C/I/A:H.
Primary rating from Vendor (trendmicro).
CVSS VectorVendor: trendmicro
DescriptionCVE.org
Tencent NeuralNLP-NeuralClassifier _load_checkpoint Deserialization of Untrusted Data Remote Code Execution Vulnerability. This vulnerability allows remote attackers to execute arbitrary code on affected installations of Tencent NeuralNLP-NeuralClassifier. 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 _load_checkpoint function. 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 root. Was ZDI-CAN-27184.
Executive ViewAI
Tencent NeuralNLP-NeuralClassifier deployments that load external PyTorch checkpoints can be made to execute attacker-supplied code locally under the prediction process account, which the ZDI advisory describes as root, potentially exposing model hosts, credentials, and proprietary training data. Leadership should care because third-party model files are a routine part of ML workflows and can bypass traditional network defenses, although no public exploit has been identified at time of analysis and exploitation requires a user to load a malicious checkpoint.
No vendor-released patch identified; interim mitigations include strict model provenance and checksum allowlisting, upgrading PyTorch to 2.6.0 or later and enforcing torch.load(..., weights_only=True), running prediction jobs as a non-root low-privilege account, sandboxing or containerizing model-loading workloads, scanning or re-saving checkpoints in a safe format, and blocking untrusted checkpoint imports.
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.
TorchServe is a tool for serving and scaling PyTorch models in production. Rated critical severity (CVSS 9.8), this vuln
In PyTorch <=2.4.1, the RemoteModule has Deserialization RCE. Rated critical severity (CVSS 9.8), this vulnerability is
PickleScan before 0.0.23 can be bypassed by flipping specific ZIP file header flag bits, allowing malicious pickle files
In PyTorch before trunk/89695, torch.jit.annotations.parse_type_line can cause arbitrary code execution because eval is
PyTorch is a Python package that provides tensor computation. [CVSS 8.8 HIGH]
A vulnerability in lightning-ai/pytorch-lightning version 2.3.2 allows an attacker to cause a denial of service by sendi
Out-of-bounds heap read in PyTorch torchvision's native GIF decoder (versions through 0.28.0) lets attackers who supply
picklescan before 0.0.23 is vulnerable to a ZIP archive manipulation attack that causes it to crash when attempting to e
TorchServe is a flexible and easy-to-use tool for serving and scaling PyTorch models in production. Rated critical sever
PyTorch is a Python package that provides tensor computation with strong GPU acceleration and deep neural networks built
NVIDIA APEX for Linux contains a deserialization of untrusted data vulnerability that affects environments using PyTorch
A vulnerability, which was classified as problematic, has been found in PyTorch 2.6.0+cu124. Rated medium severity (CVSS
NVD
CVE.org
EPSS
GitHub
Exploit-DB