You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
security(deps): the dependency audit gate is red on Dev_new_gui — PYSEC-2026-3740 against nltk has no recorded allowance #15520
The Dependency Security Scan gate is red on Dev_new_gui itself, not only on PRs. Observed on base head 0937e1504:
Found 5 known vulnerabilities in 2 packages
**FAIL** — 1 unallowed finding(s) at any severity, with 4 recorded allowance(s).
Recorded allowances: CVE-2026-45830, CVE-2026-45831, CVE-2026-45833, PYSEC-2026-311
Findings judged by this gate (first 10):
- PYSEC-2026-3740 [unknown] nltk==3.10.3
Four of the five findings carry recorded allowances. The fifth, PYSEC-2026-3740 against nltk==3.10.3, does not, so the gate fails as designed.
Where it comes from
requirements-ci/document.txt:6 — nltk==3.10.3 (the pinned version the audit installs)
autobot-infrastructure/shared/docker/ai-stack/requirements-ai.txt:37 — nltk>=3.10.3 (floor; resolves to the same or newer)
Why this needs its own issue rather than a per-PR note
Because base is red, every open PR inherits the failure. It was found while diagnosing PR #15517, which was suspected of introducing it by declaring new dependencies — it did not. Confirming that took a comparison against the base run, and the next person to hit it will spend the same time unless the cause is written down. A red that predates the branch is indistinguishable, on the PR page, from one the branch caused.
The gate is also working exactly as intended here, which is worth stating plainly: it refuses to pass an unallowed finding, and its own error text says "Fix the finding; do not re-add" an override. So the correct resolution is a version bump or a recorded allowance with a justification — not loosening the gate.
Acceptance criteria
Establish what PYSEC-2026-3740 actually is — affected versions, fixed version, and whether the vulnerable code path is reachable from how this repository uses nltk. Severity is reported as unknown, so the gate cannot rank it; a human judgement is required and should be recorded on this issue.
Bump nltk past the fixed version in bothrequirements-ci/document.txt and autobot-infrastructure/shared/docker/ai-stack/requirements-ai.txt, keeping the two consistent — a pin and a floor that disagree is how this class of drift starts.
Confirm the gate returns green on Dev_new_gui afterwards, and note the run.
Check whether the four existing allowances (CVE-2026-45830, CVE-2026-45831, CVE-2026-45833, PYSEC-2026-311) still apply, or have been fixed upstream and can be removed. An allowance list that only grows is the same shape as a ratchet that only grows.
Related
#12262 (umbrella: reconcile open security alerts with tracking issues) — this is one of them, previously untracked.
Closed on code evidence, verified against merged Dev_new_gui (PR #15550, f4e01552).
AC
Evidence in base
Establish what PYSEC-2026-3740 is; human judgement recorded
PYSEC-2026-3740 = CVE-2026-81726 = GHSA-8mgp-746c-j5xp, a pathsec bypass (CWE-22/59/73) in TransitionParser, AveragedPerceptron, PerceptronTagger and the maxent save/load helpers, which use raw open() on caller-controlled paths. Affects <=3.10.3 — every published release. Reachability measured, not asserted: grep -rn 'import nltk|from nltk' --include=*.py . returns 0 files, so none of the vulnerable APIs are reachable
Bump past the fixed version in both files
Not applicable, and deliberately not done. The GHSA record carries first_patched_version: null and 3.10.3 is still PyPI's latest — there is nothing to bump to. requirements-ci/document.txt:6 and requirements-ai.txt:37 are unchanged, so the pin and floor stay consistent
If no fix exists, record an allowance with reason and re-check date
.github/workflows/security.yml — --allow-id PYSEC-2026-3740 beside the existing four, with a comment block carrying the advisory ids, the no-fix-exists fact, the reachability evidence and RE-CHECK BY 2026-12-01. Not open-ended: pipeline-scripts/security_scan_gate.py:260-268fails the step on an allowance naming a finding the scanner no longer reports, so removal is enforced by the gate rather than trusted to memory
Gate returns green on Dev_new_gui
Dependency Security Scan green on #15550 before merge; base head is f4e01552
Re-check the four existing allowances
All four still needed. PYSEC-2026-311, CVE-2026-45830, CVE-2026-45831, CVE-2026-45833 all still resolve as affecting chromadb==1.5.9, the current pin and upstream's latest. None removed; the bump stays tracked as #15052
Follow-up filed as #15551: nothing imports nltk, yet it is declared in two manifests and now carries a permanent allowance. Deleting an unused dependency beats tolerating an unfixable advisory against it — but not blind, since a transitive consumer would keep it in the resolved set.
Activity
fix(deps): clear the two advisories that redden every PR from base (#…
github-actions commentedon Sep 3, 2026
PR #15550 (merged to
Dev_new_gui) references this issue with a close keyword.If this issue is fully resolved, close it manually. If work remains, no action is needed.
mrveiss commentedon Sep 3, 2026
Closed on code evidence, verified against merged
Dev_new_gui(PR #15550,f4e01552).TransitionParser,AveragedPerceptron,PerceptronTaggerand the maxent save/load helpers, which use rawopen()on caller-controlled paths. Affects<=3.10.3— every published release. Reachability measured, not asserted:grep -rn 'import nltk|from nltk' --include=*.py .returns 0 files, so none of the vulnerable APIs are reachablefirst_patched_version: nulland 3.10.3 is still PyPI's latest — there is nothing to bump to.requirements-ci/document.txt:6andrequirements-ai.txt:37are unchanged, so the pin and floor stay consistent.github/workflows/security.yml—--allow-id PYSEC-2026-3740beside the existing four, with a comment block carrying the advisory ids, the no-fix-exists fact, the reachability evidence andRE-CHECK BY 2026-12-01. Not open-ended:pipeline-scripts/security_scan_gate.py:260-268fails the step on an allowance naming a finding the scanner no longer reports, so removal is enforced by the gate rather than trusted to memoryDependency Security Scangreen on #15550 before merge; base head isf4e01552PYSEC-2026-311,CVE-2026-45830,CVE-2026-45831,CVE-2026-45833all still resolve as affectingchromadb==1.5.9, the current pin and upstream's latest. None removed; the bump stays tracked as #15052Follow-up filed as #15551: nothing imports
nltk, yet it is declared in two manifests and now carries a permanent allowance. Deleting an unused dependency beats tolerating an unfixable advisory against it — but not blind, since a transitive consumer would keep it in the resolved set.