Skip to main content

NeuralNLP-NeuralClassifier CVE-2025-13708

HIGH
Deserialization of Untrusted Data (CWE-502)
2025-12-23 zdi-disclosures@trendmicro.com
7.8
CVSS 3.0 · Vendor: trendmicro
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Deliver malicious PyTorch checkpoint to victim
  2. Exploit
    Victim loads model via predict path
  3. Execution
    torch.load deserializes untrusted pickle
  4. Impact
    Execute 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 torch.load() without weights_only=True (i.e., any installation using torch<2.6.0 or the pre-patch code). The concrete prerequisite is deserializing an untrusted PyTorch checkpoint (pickle) file - there is no network service to attack. LIMITING FACTORS: mandatory user interaction (UI:R) - the victim must actively obtain and open/load the malicious file; the attack vector is local (AV:L), not remotely triggerable without that step; and it is blocked by upgrading to torch>=2.6.0 or applying the patched weights_only=True loading. Authentication is not required to craft the payload (PR:N), but delivery depends on social engineering or supply-chain trust in the model source.

Impact

This is a CWE-502 untrusted-data deserialization flaw in Tencent NeuralNLP-NeuralClassifier's _load_checkpoint/_get_classification_model path, which called torch.load() without weights_only=True, allowing arbitrary code execution via a malicious PyTorch checkpoint (pickle) file. The CVSS 3.0 vector (AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H, base 7.8) is internally consistent with the description: the vector is LOCAL and requires user interaction (loading/opening a malicious checkpoint), NOT a network-facing service - so despite the 'Remote Code Execution' label, this is not a remote unauthenticated network exploit. EPSS is low (0.51%, 42nd percentile) and the CVE is NOT in CISA KEV, with no public exploit code referenced beyond the ZDI advisory, so there is no public exploit identified at time of analysis. The practical risk is moderate and conditional: exploitation hinges entirely on a victim being tricked into loading an attacker-supplied model file, which is a realistic supply-chain/social-engineering vector for ML tooling but not mass-exploitable. Conflicting-signal note: the title and 'remote attackers' phrasing imply remote reach, but the CVSS vector is AV:L - the 'remote' aspect is only that the malicious file originates remotely; actual trigger is local file deserialization. The description's claim of code execution 'in the context of root' is not reflected by a CVSS scope change (S:U) and should be treated as a deployment-specific observation rather than a guaranteed privilege outcome.

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 torch.load() call deserializes the payload and executes attacker code in the process context (claimed as root in the advisory). No public exploit code is identified at time of analysis, but pickle-based torch.load RCE is a well-understood, trivially reproducible technique.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
No patch listed yet 0.5% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

Vendor (trendmicro) PRIMARY 7.8 HIGH
AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
vuln.today AI 7.8 HIGH

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.

3.1 AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
4.0 AV:L/AC:L/AT:N/PR:N/UI:A/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (trendmicro).

CVSS VectorVendor: trendmicro

Attack Vector
Local
Attack Complexity
Low
Privileges Required
None
User Interaction
Required
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

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

Why It Matters

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.

Business Impact: Medium
Compensating Controls

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

EPSS Score
0.5%
Top 58% exploitable
Prevalence
Low
niche open-source research NLP toolkit, limited production footprint
Data Quality
4 sources
Confidence: Medium

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.5%
Patch available No
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Defer
Exploitation· derived
None
System Exposure· derived
Small
Automatable· derived
No
Human Impact
Medium

Priority Score

40
Low Medium High Critical
KEV: 0
EPSS: +1
CVSS: +39
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

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.

CVE-2023-43654 CRITICAL POC
9.8 Sep 28

TorchServe is a tool for serving and scaling PyTorch models in production. Rated critical severity (CVSS 9.8), this vuln

CVE-2024-48063 CRITICAL POC
9.8 Oct 29

In PyTorch <=2.4.1, the RemoteModule has Deserialization RCE. Rated critical severity (CVSS 9.8), this vulnerability is

CVE-2025-1945 CRITICAL POC
9.8 Mar 10

PickleScan before 0.0.23 can be bypassed by flipping specific ZIP file header flag bits, allowing malicious pickle files

CVE-2022-45907 CRITICAL POC
9.8 Nov 26

In PyTorch before trunk/89695, torch.jit.annotations.parse_type_line can cause arbitrary code execution because eval is

CVE-2026-24747 HIGH POC
8.8 Jan 27

PyTorch is a Python package that provides tensor computation. [CVSS 8.8 HIGH]

CVE-2024-8020 HIGH POC
7.5 Mar 20

A vulnerability in lightning-ai/pytorch-lightning version 2.3.2 allows an attacker to cause a denial of service by sendi

CVE-2026-65918 HIGH POC
7.1 Jul 23

Out-of-bounds heap read in PyTorch torchvision's native GIF decoder (versions through 0.28.0) lets attackers who supply

CVE-2025-1944 MEDIUM POC
6.5 Mar 10

picklescan before 0.0.23 is vulnerable to a ZIP archive manipulation attack that causes it to crash when attempting to e

CVE-2024-35198 CRITICAL
9.8 Jul 19

TorchServe is a flexible and easy-to-use tool for serving and scaling PyTorch models in production. Rated critical sever

CVE-2025-32434 CRITICAL POC
9.3 Apr 18

PyTorch is a Python package that provides tensor computation with strong GPU acceleration and deep neural networks built

CVE-2025-33244 CRITICAL
9.0 Mar 24

NVIDIA APEX for Linux contains a deserialization of untrusted data vulnerability that affects environments using PyTorch

CVE-2025-2953 MEDIUM POC
4.8 Mar 30

A vulnerability, which was classified as problematic, has been found in PyTorch 2.6.0+cu124. Rated medium severity (CVSS

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy