MEDIUMCVSS v3.1 6.8Vulnerability

CVE-2026-126295

## Summary `BllipParser` in `nltk/parse/bllip.py` hands caller-supplied filesystem paths to the native `bllipparser` C extension without routing them through NLTK's `pathsec` validation. The constructor parameters `parser_model`, `reranker_features`, and `reranker_weights`, and the alternative `from_unified_model_dir()` entry point, flow directly to the C extension's `load_parser_model()` and `load_reranker_model()` calls, which open and read the given path at the OS level. Any application that passes an attacker-influenced path to this API reads a file of the attacker's choosing from anywhere on the filesystem, outside the NLTK data roots that every other NLTK tool wrapper confines access to. ## Root Cause As of NLTK 3.10.0, `SECURITY.md` documents a centralized I/O security module (`nltk.pathsec`) with strict enforcement enabled by default, under which file-backed resources must resolve inside allowed NLTK data directories. For paths handed to external tools and native extensions that open files themselves, the module provides `validate_tool_path()`, which runs name-safety checks, rejects option-shaped, URL-shaped, and traversal inputs, opens the path with `O_NOFOLLOW` requiring a regular single-linked file, and returns the validated string the caller must use. Every sibling tool wrapper applies it. `BllipParser` applies none of it: the module imports only `ParserI`, `safe_print`, and `Tree`, with zero `pathsec` references, so the three model-path parameters reach the C extension unchecked. The violated invariant is that NLTK tool wrappers must bound caller-supplied native-tool paths to the data roots before the native code opens them. ```text nltk/parse/bllip.py:125-131 BllipParser.__init__ accepts parser_model, reranker_features, reranker_weights (no validation) nltk/parse/bllip.py:164 self.rrp.load_parser_model(parser_model, ...) -> C extension open nltk/parse/bllip.py:166-170 self.rrp.load_reranker_model(features_f

Properties

Severity
medium
Summary
NLTK: BllipParser passes caller-supplied model paths to the bllipparser C extension with no pathsec check, enabling arbitrary read
Nvd fetched at
2026-11-14T00:40:25.638091+00:00
Epss score
0.00197
Cvss severity
MEDIUM
Cvss score
6.8
Retrieved at
2026-11-14T00:51:03+00:00
Ghsa published
2026-11-13T23:20:56Z
Source url
https://github.com/advisories/GHSA-fg9w-wfp5-j933
Ghsa updated
2026-11-13T23:20:57Z
Ghsa id
GHSA-fg9w-wfp5-j933
Last source
FIRST EPSS
Score
6.8
Cvss version
3.1
Cve id
CVE-2026-126295
Cvss vector
CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:L
First seen by Signal
2026-11-13T17:31:47+00:00
Is ghsa only
false
Vector
CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:L
Published at
2026-11-13T10:17:34.060

Related Entities (5)

AFFECTS (1)

→[Software]pip/nltk

VULNERABLE_TO (1)

←[Software]pip/nltk

Related research

Explore deeper with Ninja Signal's threat intelligence graph

CVE-2026-126295 (CVSS v3.1 6.8) — Ninja Signal Threat Intelligence | Ninja Signal