Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessCraft malicious pickle vocab file
-
DeliveryDistribute model to target user
-
ExploitVictim loads vectors.vocab
-
ExecutionUnsafe deserialization triggers payload
-
ImpactExecute arbitrary code in 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 a victim to load an attacker-supplied word2vec vectors.vocab file through HanLP's load_word2vec_as_vocab_tensor function, which deserializes it with Python pickle. The key prerequisite and primary limiting factor is this user interaction (UI:P): the attack is not against a running network service but depends on a user being tricked into opening or loading a malicious/untrusted model file. No authentication is required of the attacker (PR:N), and no special non-default product configuration is needed - the vulnerable loading path exists in HanLP up to 2.1.0-beta.64 - but the mandatory file-loading step and reliance on social engineering or a compromised model-distribution channel meaningfully constrain mass exploitation. |
| Impact | This is a CWE-502 untrusted-deserialization (Python pickle) flaw in HanLP's load_word2vec_as_vocab_tensor function, where a crafted vectors.vocab argument/file is unpickled. The signals are mixed. The VulDB-assigned CVSS 4.0 vector (AV:N/AC:L/PR:N/UI:P) with only Low impacts yields a modest 5.3, but that Low/Low/Low impact rating understates typical pickle deserialization, which generally grants arbitrary code execution in the loading process - my independent assessment rates impact as High across C/I/A. Exploitation is NOT unattended: UI:P (passive user interaction) means a victim must be induced to load an attacker-supplied word2vec/vocab file, so this is a trust-boundary/supply-style issue rather than a direct remote-service compromise. A public POC exists (a pickle POC zip), but there is NO CISA KEV listing and no EPSS score was provided, so there is no evidence of widespread automated exploitation - risk is opportunistic/targeted (tricking a user into loading a malicious model). Note the vendor was notified via issue #1968 but has not responded, so no fix is confirmed. Net: a genuine code-execution risk for anyone who loads untrusted HanLP vocab/model files, but lower urgency than the 'remote unauthenticated' phrasing suggests because user interaction is mandatory and there is no mass-exploitation signal. |
| Exploit ScenarioDerived | An attacker publishes or shares a malicious HanLP word2vec vocabulary/model file (as in the public pickle POC) that embeds a serialized object with an attacker-controlled reduce payload. When a victim loads that file via load_word2vec_as_vocab_tensor, the pickle is deserialized and the embedded code executes in the victim's Python process. A public POC archive (hanlp-ddb1299-vocab-pickle-poc.zip) demonstrates the technique. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 19, 2026
Deserialization of untrusted data in HanLP through 2.1.0-beta.64 allows an attacker who supplies a crafted vectors.vocab file to execute arbitrary code when a victim loads it with load_word2vec_as_vocab_tensor. The attack can be delivered remotely but requires the victim to open or load the malicious model file, so user interaction is the key prerequisite; no authentication or special configuration is needed. Publicly available exploit code exists, but the supplied intelligence does not confirm CISA KEV active exploitation.
RemediationAI
No vendor-released patch identified at time of analysis; the project was reportedly notified via issue report but had not responded. Until a fixed HanLP version is published, do not load vectors.vocab files from untrusted, unverified, or compromised sources, and treat model files as executable code because static scanning alone cannot make pickle safe. If untrusted model loading is unavoidable, isolate HanLP in a low-privilege sandbox or container with no secrets, restricted network access, and no host mounts, or replace pickle-based loading with a restricted unpickler or a non-executable format such as JSON or NumPy in a trusted preprocessing step; these controls add operational overhead and may break compatibility. Track https://github.com/hankcs/HanLP/issues/1968 and https://vuldb.com/vuln/421758 for an official fix.
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
This is a CWE-502 untrusted deserialization issue in HanLP, a natural-language processing library. The affected routine, load_word2vec_as_vocab_tensor in hanlp/utils/torch_util.py, consumes a vectors.vocab file and uses Python pickle to deserialize it; pickle can invoke arbitrary callables during unpickling, so a malicious vocab file becomes code execution in the context of the process that loads it. The CPE cpe:2.3:a:hankcs:hanlp:*:*:*:*:*:*:*:* reflects the HanLP package, with the description bounding affected code at 2.1.0-beta.64. A public PoC archive is referenced at https://github.com/user-attachments/files/32910161/hanlp-ddb1299-vocab-pickle-poc.zip, and the vendor issue is https://github.com/hankcs/HanLP/issues/1968.
Know when Hanlp 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:N/AC:L/AT:N/PR:N/UI:P/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N/E:P
Pickle deserialization of an attacker-supplied file yields code execution (C/I/A:H); the victim must load the file so UI:R, no attacker auth so PR:N, file delivered remotely so AV:N.
Primary rating from Vendor (VulDB).
CVSS VectorVendor: VulDB
Lifecycle Timeline
3DescriptionCVE.org
A vulnerability has been found in hankcs HanLP up to 2.1.0-beta.64. The affected element is the function load_word2vec_as_vocab_tensor of the file hanlp/utils/torch_util.py. The manipulation of the argument vectors.vocab leads to deserialization. The attack is possible to be carried out remotely. The exploit has been disclosed to the public and may be used. The project was informed of the problem early through an issue report but has not responded yet.
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-104067
GHSA-q7j8-9vmr-j8qv
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB