{"id":"CVE-2026-70626","state":"PUBLISHED","title":"NLTK before 3.9.4 Symlink Escape via CorpusReader","description":"NLTK versions before 3.9.4 contain a symlink escape vulnerability in CorpusReader.open() that allows local attackers to read arbitrary files outside the corpus root. The vulnerability exists because path validation is lexical and does not account for symlink resolution, enabling attackers to place symlinks inside the corpus root to access files outside the intended boundary.","publishedAt":"2026-08-22T14:12:44.983Z","updatedAt":"2026-08-24T19:49:30.565Z","severity":{"score":8.6,"label":"High","version":"4.0","vector":"CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N","source":"VulnCheck"},"assigner":"VulnCheck","products":["nltk nltk"],"affected":[{"vendor":"nltk","product":"nltk","packageURL":"pkg:pypi/nltk","defaultStatus":"unaffected","versions":[{"version":"0","status":"affected","lessThan":"3.9.4","versionType":"semver"},{"version":"3.9.4","status":"unaffected","versionType":"semver"}]}],"references":["https://github.com/nltk/nltk/security/advisories/GHSA-r6gq-whwq-mvg9","https://www.vulncheck.com/advisories/nltk-before-symlink-escape-via-corpusreader"],"weaknesses":["CWE-59"],"ingestedAt":"2026-10-29T20:12:49.727Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/70xxx/CVE-2026-70626.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-70626","state":"PUBLISHED","datePublished":"2026-08-22T14:12:44.983Z","dateUpdated":"2026-08-24T19:49:30.565Z","assignerShortName":"VulnCheck","assignerOrgId":"83251b91-4cc7-4094-a5c7-464a1b83ea10","dateReserved":"2026-08-04T20:17:18.297Z"},"containers":{"cna":{"title":"NLTK before 3.9.4 Symlink Escape via CorpusReader","descriptions":[{"lang":"en","value":"NLTK versions before 3.9.4 contain a symlink escape vulnerability in CorpusReader.open() that allows local attackers to read arbitrary files outside the corpus root. The vulnerability exists because path validation is lexical and does not account for symlink resolution, enabling attackers to place symlinks inside the corpus root to access files outside the intended boundary."}],"affected":[{"vendor":"nltk","product":"nltk","packageURL":"pkg:pypi/nltk","defaultStatus":"unaffected","versions":[{"version":"0","status":"affected","lessThan":"3.9.4","versionType":"semver"},{"version":"3.9.4","status":"unaffected","versionType":"semver"}]}],"references":[{"url":"https://github.com/nltk/nltk/security/advisories/GHSA-r6gq-whwq-mvg9","tags":["vendor-advisory"],"name":"GitHub Security Advisory (GHSA-r6gq-whwq-mvg9)"},{"url":"https://www.vulncheck.com/advisories/nltk-before-symlink-escape-via-corpusreader","name":"VulnCheck Advisory: NLTK before 3.9.4 Symlink Escape via CorpusReader","tags":["third-party-advisory"]}],"metrics":[{"cvssV4_0":{"Automatable":"NOT_DEFINED","Recovery":"NOT_DEFINED","Safety":"NOT_DEFINED","attackComplexity":"LOW","attackRequirements":"NONE","attackVector":"LOCAL","baseScore":8.6,"baseSeverity":"HIGH","exploitMaturity":"NOT_DEFINED","privilegesRequired":"NONE","providerUrgency":"NOT_DEFINED","subAvailabilityImpact":"NONE","subConfidentialityImpact":"NONE","subIntegrityImpact":"NONE","userInteraction":"NONE","valueDensity":"NOT_DEFINED","vectorString":"CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N","version":"4.0","vulnAvailabilityImpact":"HIGH","vulnConfidentialityImpact":"HIGH","vulnIntegrityImpact":"HIGH","vulnerabilityResponseEffort":"NOT_DEFINED"},"format":"CVSS"},{"cvssV3_1":{"attackComplexity":"LOW","attackVector":"LOCAL","availabilityImpact":"NONE","baseScore":6.2,"baseSeverity":"MEDIUM","confidentialityImpact":"HIGH","integrityImpact":"NONE","privilegesRequired":"NONE","scope":"UNCHANGED","userInteraction":"NONE","vectorString":"CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N","version":"3.1"},"format":"CVSS"}],"problemTypes":[{"descriptions":[{"cweId":"CWE-59","lang":"en","description":"Improper Link Resolution Before File Access ('Link Following')","type":"CWE"}]}],"providerMetadata":{"shortName":"VulnCheck","orgId":"83251b91-4cc7-4094-a5c7-464a1b83ea10","dateUpdated":"2026-08-22T14:12:44.983Z"},"datePublic":"2026-08-07T00:00:00.000Z","cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:a:nltk:nltk:*:*:*:*:*:*:*:*","versionEndExcluding":"3.9.4"}]}]}],"credits":[{"lang":"en","value":"leduckhuong","type":"reporter"}],"x_generator":{"engine":"vulncheck-endgame"}},"adp":[{"title":"CISA ADP Vulnrichment","references":[{"url":"https://github.com/nltk/nltk/security/advisories/GHSA-r6gq-whwq-mvg9","tags":["exploit"]}],"metrics":[{"other":{"type":"ssvc","content":{"timestamp":"2026-08-24T19:49:24.557944Z","id":"CVE-2026-70626","options":[{"Exploitation":"poc"},{"Automatable":"no"},{"Technical Impact":"partial"}],"role":"CISA Coordinator","version":"2.0.3"}}}],"providerMetadata":{"shortName":"CISA-ADP","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","dateUpdated":"2026-08-24T19:49:30.565Z"}}]}}}