Skip to main content

HanLP CVE-2026-112081

| EUVDEUVD-2026-104071 LOW
Deserialization of Untrusted Data (CWE-502)
2026-10-19 VulDB GHSA-g4wc-qgxw-hw24
2.1
CVSS 4.0 · Vendor: VulDB
View

Attack ChainAIDerived

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

  1. Access
    Publish malicious model/config with crafted classpath
  2. Exploit
    Victim calls hanlp.load on untrusted model
  3. Execution
    Deserialization instantiates attacker class in reflection.py
  4. Impact
    Code executes in victim 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 invoke hanlp.load() on an attacker-controlled model/config in which the classpath argument is manipulated, triggering unsafe deserialization/reflection in plugins/hanlp_common/hanlp_common/reflection.py. The key LIMITING factor is required user interaction (UI:P in the supplied vector): the victim must obtain and load a malicious or untrusted model - it is not triggered against a default, idle installation. No authentication is required (PR:N). Systems that only load trusted, first-party HanLP models are not realistically exposed; risk concentrates on pipelines that load third-party or externally sourced models.

Impact

This is a CWE-502 deserialization flaw in hankcs HanLP (≤2.1.0-beta.64) reached through the classpath argument during model config loading in hanlp.load. Signals are mixed and point to a moderate, not urgent, priority. The supplied CVSS 4.0 vector (AV:N/AC:L/PR:N/UI:P/VC:L/VI:L/VA:L, score 5.3) describes low partial impact and, critically, requires user interaction (UI:P) - the victim must load an attacker-supplied model/config. There is NO EPSS score and NO SSVC decision in the input, so exploitation probability and automatability cannot be quantified. The flaw is NOT in CISA KEV, so there is no confirmed active exploitation; however a public POC (poc.zip) exists, so publicly available exploit code exists. CONFLICT TO NOTE: the VulDB CVSS caps impact at Low across C/I/A, yet CWE-502 deserialization driven by an attacker-controlled classpath typically yields arbitrary code execution (High impact) - this low scoring appears conservative and should be verified; my independent assessment rates impact higher. The decisive mitigating factor is the UI requirement plus an unresponsive-but-niche project: this is a real but conditional issue, not a mass-exploitable internet-facing RCE. Treat as medium priority - patch/pin when a fix lands and avoid loading untrusted models in the interim.

Exploit ScenarioDerived

An attacker publishes or distributes a malicious HanLP model package whose config specifies an attacker-chosen classpath. A developer or application calls hanlp.load() on that untrusted model, and the deserialization/instantiation of the attacker-controlled class executes attacker code in the victim's Python process. A public proof-of-concept (poc.zip) has been released demonstrating the issue.

Monitor Track and reassess. Why: LOW severity (CVSS 0.1-3.9).
No patch listed yet 0.3% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Oct 19, 2026

Unsafe deserialization in hankcs HanLP through 2.1.0-beta.64 allows unauthenticated remote attackers to achieve code execution when a victim loads an attacker-supplied model or config in which the classpath argument passed through hanlp.load() has been manipulated, reaching the reflection logic in plugins/hanlp_common/hanlp_common/reflection.py. Exploitation is not automatic against an idle installation: it requires the user to obtain and load an untrusted model, so exposure is concentrated in pipelines that consume third-party or externally sourced models rather than those loading only first-party artifacts. Publicly available exploit code exists (a PoC archive is linked from the VulDB entry), but there is no CISA KEV confirmation of active exploitation; the project was notified via GitHub issue #1969 and has not responded at time of analysis.

RemediationAI

No vendor-released patch was identified at time of analysis: the issue was filed at https://github.com/hankcs/HanLP/issues/1969 and the maintainers had not responded, so there is no fixed version to cite. Until an upstream fix lands, the effective control is provenance-based: treat model artifacts as executable code, and only call hanlp.load() on models your organization built or downloaded over an authenticated channel and verified by pinned hash/signature - the trade-off is that ad-hoc or community model downloads must be blocked or run through an internal review-and-republish step. Where models must come from external sources, load them inside a disposable, unprivileged container with a read-only filesystem and no outbound network, and separate the model-loading step from any service holding credentials; this costs extra orchestration and blocks features that expect live downloads at load time. If you control the configs passed to hanlp.load(), pin or hard-restrict the classpath field to an explicit allowlist of known classes before loading, and strip or reject model configs containing unexpected classpath entries - this requires maintaining an allowlist per HanLP upgrade and cannot protect callers who pass arbitrary user configs straight through. Also monitor https://github.com/hankcs/HanLP/issues/1969 and https://vuldb.com/vuln/421760 for a patched release and upgrade to the first version that validates or restricts the classpath argument. Note that a public PoC is available (referenced from the VulDB entry), so untrusted model ingestion should be treated as an immediate exposure rather than a theoretical one.

Affected VersionsENISA

HanLP 2.1.0-beta.43
HanLP 2.1.0-beta.9
HanLP 2.1.0-beta.4
HanLP 2.1.0-beta.44
HanLP 2.1.0-beta.0
HanLP 2.1.0-beta.40
HanLP 2.1.0-beta.63
HanLP 2.1.0-beta.46
HanLP 2.1.0-beta.51
HanLP 2.1.0-beta.20
HanLP 2.1.0-beta.3
HanLP 2.1.0-beta.26
HanLP 2.1.0-beta.60
HanLP 2.1.0-beta.27
HanLP 2.1.0-beta.61
HanLP 2.1.0-beta.14
HanLP 2.1.0-beta.15
HanLP 2.1.0-beta.37
HanLP 2.1.0-beta.13
HanLP 2.1.0-beta.10
HanLP 2.1.0-beta.7
HanLP 2.1.0-beta.6
HanLP 2.1.0-beta.18
HanLP 2.1.0-beta.42
HanLP 2.1.0-beta.55
HanLP 2.1.0-beta.58
HanLP 2.1.0-beta.57
HanLP 2.1.0-beta.28
HanLP 2.1.0-beta.32
HanLP 2.1.0-beta.62
HanLP 2.1.0-beta.54
HanLP 2.1.0-beta.38
HanLP 2.1.0-beta.30
HanLP 2.1.0-beta.8
HanLP 2.1.0-beta.12
HanLP 2.1.0-beta.1
HanLP 2.1.0-beta.5
HanLP 2.1.0-beta.23
HanLP 2.1.0-beta.49
HanLP 2.1.0-beta.33
HanLP 2.1.0-beta.25
HanLP 2.1.0-beta.64
HanLP 2.1.0-beta.41
HanLP 2.1.0-beta.36
HanLP 2.1.0-beta.59
HanLP 2.1.0-beta.11
HanLP 2.1.0-beta.34
HanLP 2.1.0-beta.29
HanLP 2.1.0-beta.17
HanLP 2.1.0-beta.2
HanLP 2.1.0-beta.53
HanLP 2.1.0-beta.45
HanLP 2.1.0-beta.56
HanLP 2.1.0-beta.52
HanLP 2.1.0-beta.47
HanLP 2.1.0-beta.22
HanLP 2.1.0-beta.16
HanLP 2.1.0-beta.24
HanLP 2.1.0-beta.50
HanLP 2.1.0-beta.31
HanLP 2.1.0-beta.39
HanLP 2.1.0-beta.48
HanLP 2.1.0-beta.19
HanLP 2.1.0-beta.35
HanLP 2.1.0-beta.21

Affected Packages

euvd hanlp no fix

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

HanLP is a Python natural-language-processing library whose model/config loading path resolves a user-facing configuration (including a classpath argument naming a Python dotted import path) and instantiates the referenced class through dynamic reflection rather than restricting it to an internal allowlist. That reflection helper in plugins/hanlp_common/hanlp_common/reflection.py is the specific sink: because the classpath value is attacker-influencable in a supplied model config, a malicious model can steer class resolution and, combined with the library's Python object deserialization of model data, trigger arbitrary object construction and code execution during what appears to be a routine model load. The weakness class is CWE-502 (Deserialization of Untrusted Data) - the library treats model artifacts as trusted content and neither validates the classpath against a fixed set of permitted classes nor uses a safe deserialization format, so the integrity of the whole load pipeline rests on the provenance of the model file. The affected CPE is cpe:2.3:a:hankcs:hanlp:*:*:*:*:*:*:*:* covering releases up to and including 2.1.0-beta.64; note that the reporter's CVSS 4.0 vector scores this 5.3 with only low confidentiality/integrity/availability impact, whereas the assessed CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:R/C:H/I:H/A:H) reflects that successful deserialization yields full code execution in the loading process's context.

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

Vendor (VulDB) PRIMARY 2.1 MEDIUM
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
vuln.today AI 8.8 HIGH

Attacker-controlled classpath deserialization enables code execution (C/I/A:H), but the victim must load the malicious model, so UI:R; no privileges needed (PR:N).

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

Primary rating from Vendor (VulDB).

CVSS VectorVendor: VulDB

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
Passive
Vulnerable system: Confidentiality
Low
Vulnerable system: Integrity
Low
Vulnerable system: Availability
Low
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

3
Severity Changed
Oct 19, 2026 - 06:22 NVD
MEDIUM LOW
CVSS changed
Oct 19, 2026 - 06:22 NVD
5.3 (MEDIUM) 2.1 (LOW)
CVE Published
Oct 19, 2026 - 05:15 cve.org
MEDIUM 5.3

DescriptionCVE.org

A vulnerability was determined in hankcs HanLP up to 2.1.0-beta.64. This affects the function hanlp.load of the file plugins/hanlp_common/hanlp_common/reflection.py of the component Model Config Loading. This manipulation of the argument classpath causes deserialization. It is possible to initiate the attack remotely. The exploit has been publicly disclosed and may be utilized. The project was informed of the problem early through an issue report but has not responded yet.

Threat Intelligence Overview

EPSS Score
0.3%
Top 74% exploitable
Prevalence
Medium
popular open-source NLP library, domain-specific not universal footprint
Exploit
POC
Public exploit code exists
Data Quality
6 sources
Confidence: High

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 LOW
CISA KEV No
Public POC Yes
EPSS 0.3%
Patch available No
Active threat No
Deciding rule
LOW severity (CVSS 0.1-3.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
Scheduled
Exploitation· derived
Poc
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
Low

Priority Score

30
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +10
PoC: +20
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.

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