CVE-2026-115878 · GHSA-gh9r-c94j-cmp5
Stanza: RCE via pickle deserialization in the lemmatizer
- Risk score
- 52/100
- CVSS
- 7.8 v3.1
- Published
- 3 Nov 2026
Open in the live forecast Today's forecast
What to know
- What it is
- 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 T…
- Affected
- stanza (pip) = 1.14.0
- Fix
- Upgrade stanza to 1.15.0 or later.
- Exploitation
- No known exploitation
Why it is Yellow
- CVSS 7.8 high
- On your watchlist: PyPI
Affected packages
| Package | Ecosystem | Vulnerable | Fixed in |
|---|---|---|---|
| stanza | pip | = 1.14.0 | 1.15.0 |
References
- https://github.com/advisories/GHSA-gh9r-c94j-cmp5
- https://github.com/stanfordnlp/stanza/security/advisories/GHSA-gh9r-c94j-cmp5
- https://github.com/stanfordnlp/stanza/pull/1649
- https://github.com/stanfordnlp/stanza/commit/b21e1c9b47b4fccff21d3b0a6c0687a19410c2f0
- https://github.com/stanfordnlp/stanza/releases/tag/v1.15.0
- https://github.com/advisories/GHSA-gh9r-c94j-cmp5
Original 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.
Last activity 3 Nov 2026. Patch Forecast updates every hour.