{"items":[{"id":"NVI-00013904","kind":"vulnerability","title":"NLTK: Corpus readers follow symlinks outside trusted roots despite pathsec enforcement","revision":1,"unknowns":["Customer inventory, deployment, reachability and exploitation have not been inspected."],"lifecycle":"active","identifiers":["GHSA-p4rw-rvv2-7xwr","CVE-2026-79676"],"plain_summary":"GitHub lists this reviewed advisory for nltk. Published version ranges and source prerequisites are shown below; this is not an inspection of a visitor’s application.","review_status":"source_listed","control_topics":[],"public_actions":[{"summary":"Identify the exact component and deployed version, examine the linked publisher’s conditions, and retain evidence of any mitigation.","source_ids":["sr-19ddab59a56568be6b730c9814f187fc"],"action_type":"investigate","limitations":"Confirm current vendor support, compatibility and deployment evidence. This report has not tested a fix in your system.","current_supported_target":null}],"schema_version":"1.1.0","source_metrics":[],"why_it_matters":"Published affected context helps an owner decide what evidence to gather. This report has not examined your application.","related_sources":[{"id":"sr-19ddab59a56568be6b730c9814f187fc","url":"https://github.com/advisories/GHSA-p4rw-rvv2-7xwr","basis":"vendor_advisory","notes":"GitHub Advisory Database; CC-BY-4.0. Each advisory links its original attribution. Null normalizes fields.","title":"GHSA-p4rw-rvv2-7xwr","publisher":"GitHub Advisory Database","observed_at":"2026-11-02T02:20:31.767Z"}],"affected_context":[{"certainty":"source_listed","source_ids":["sr-19ddab59a56568be6b730c9814f187fc"],"technology":"nltk","known_exclusions":[],"conditions_summary":"### Summary\n\nSeveral corpus readers still step outside NLTK's symlink-aware trusted-root model. They derive in-root paths from trusted corpus state, convert those paths back into plain strings, and reopen them with built-in `open()` rather than `nltk.pathsec.open()`.\n\n### Details\n\n- **Vulnerability type:** Path traversal and symlink boundary bypass\n- **Affected component:** `nltk.corpus.reader.ipipan`, `nltk.corpus.reader.crubadan`, `nltk.corpus.reader.lin`\n- **Affected versions:** Published `3.9.4` and current source `v3.10.0-rc2` both reproduced.\n- **Patched versions:** Not yet patched\n- **Root cause:** Root-derived paths are reopened with raw `open()` without preserving the trusted-root boundary.\n\n`IPIPANCorpusReader` opens `header.xml` derived from `morph.xml`, `CrubadanCorpusReader` opens `table.txt` directly, and `LinThesaurusCorpusReader` opens `simN.lsp` paths returned from its own root helpers. Under `pathsec.ENFORCE=True`, a symlink placed inside the trusted corpus root can point outside the root and still be parsed successfully. It was confirmed parsed outside-root content is returned through public methods such as `channels()`, `domains()`, `categories()`, `langs()`, `c","public_affected_ranges":["<= 3.10.2"]}],"null_published_at":"2026-11-02T10:00:37.173Z","source_updated_at":"2026-09-08T16:55:40.000Z","source_disclosed_at":"2026-09-08T16:55:38.000Z","is_synthetic_fixture":false,"null_last_reviewed_at":null,"public_change_summary":"First indexed by Null; source disclosure date is shown separately.","null_first_observed_at":"2026-11-02T02:20:31.767Z"}],"next_cursor":null,"snapshot_revision":"42594"}