CVE-2026-115878: stanfordnlp stanza · Code Injection
Affects stanfordnlp stanzaSource CVE Database V5
Not known to be exploited · CVSS 7.8 High · fixed in 1.15.0 : patch stanfordnlp stanza soon.
Data as of 3 Nov 2026, 22:58 UTC
Thin evidence
One scorer or none| CNA (GitHub_M) | CVSS 3.1 | 7.8 |
|---|
- Patch
- Available – fixed in 1.15.0
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:HExploitation evidence
Disclosed: evidence found.
CVE published 3 Nov 2026
Detectable: no evidence on record.
No public nuclei template indexed
Weaponized: no evidence on record.
No public exploit code indexed in Metasploit or Exploit-DB
Exploited in the wildExploited: no evidence on record.
Not in CISA KEV and no source reports exploitation
Observed by OffSeq MirageSeen by Mirage: no evidence on record.
No attack traffic recorded by OffSeq Mirage sensors
A missing step is not evidence of safety. Sources: cve.org (opens in a new tab), the Metasploit, Exploit-DB and nuclei-templates index as of 3 Nov 2026.
What to do
Affected software
| Product | Affected | Fixed in |
|---|---|---|
| stanfordnlpstanza | Affected
| Fixed in– |
PyPIstanzapkg:pypi/stanzaOther threats | Affected
| Fixed in– |
Check your own hosts for these packages with threat-finder (opens in a new tab), our free open-source scanner.
AI-suggested
Upgrade stanza to version 1.15.0 or later, where this vulnerability is fixed. Avoid loading untrusted or attacker-controlled lemmatizer checkpoint files. Since this is a code injection via unsafe deserialization, do not use untrusted inputs for lemma_model_path or related pipeline construction parameters.
Description
Stanza is a Stanford NLP Python library for tokenization, sentence segmentation, NER, and parsing of many human languages. From 1.14.0 until 1.15.0, loading an attacker-supplied lemmatizer checkpoint can execute arbitrary code because stanza/models/lemma/trainer.py stores pos_dict as gzip-compressed pickle bytes and Trainer.load passes the decompressed stream to unrestricted pickle.loads. The outer torch.load call uses weights_only=True, but the nested bytes are treated as a primitive and are not inspected by that allowlist. The path is reachable during pipeline construction through a caller-influenced lemma_model_path, before inference begins. This issue is fixed in version 1.15.0.
References
- github.com/stanfordnlp/stanza/security/advisories/GHSA-gh9r-c94j-cmp5 (opens in a new tab)
- github.com/stanfordnlp/stanza/pull/1649 (opens in a new tab)
- github.com/stanfordnlp/stanza/commit/b21e1c9b47b4fccff21d3b0a6c0687a19410c2f0 (opens in a new tab)
- github.com/stanfordnlp/stanza/releases/tag/v1.15.0 (opens in a new tab)