p PatchFirst

PatchFirst · Latest vulnerabilities

nltk 3.10.0: known vulnerabilities

The comparison for nltk 3.10.0 is incomplete. Review the confirmed matches below.

Filter vulnerabilities
Clear filters

Could not compare 4 records. The results are incomplete.

Vulnerabilities: 21

  1. CVE-2026-109956

    High · CVSS 8.3EPSS 0.32%Fix available

    NLTK through 3.10.3 Path Traversal via WekaClassifier Model Path

    NLTK through 3.10.3 contains a path traversal vulnerability in WekaClassifier that allows attackers to bypass nltk.pathsec containment by supplying unvalidated model paths. Attackers controlling the model_filename or model argument can make the weka JVM write files via -d or probe files via -l outside allowed data roots.

    • Update to 3.10.4
    Published Updated
  2. CVE-2026-81727

    Medium · CVSS 6.9EPSS 0.19%Fix available

    NLTK before 3.10.3 Hardlink File Overwrite via downloader

    NLTK versions before 3.10.3 contain a filesystem containment bypass vulnerability in the Downloader.download and Downloader.incr_download methods that allows attackers to overwrite files outside the install root through pre-existing hardlinks. Attackers with write access to a shared downloader directory can create hardlinks pointing to outside-root files that are then overwritten during normal package extraction, mutating files outside the intended install tree.

    • Update to 3.10.3
    Published Updated
  3. CVE-2026-81726

    High · CVSS 8.3EPSS 0.34%Fix available

    NLTK through 3.10.3 Path Traversal via Model-Artifact APIs

    NLTK through 3.10.3 contains a path traversal vulnerability in model-artifact APIs that bypass pathsec enforcement by using raw file operations on caller-controlled paths. Attackers can read or write files outside allowed sandbox roots through TransitionParser, AveragedPerceptron, PerceptronTagger, and maxent parameter APIs when pathsec is enabled.

    • Update to 3.10.3
    Published Updated
  4. CVE-2026-81725

    Medium · CVSS 6.3EPSS 0.37%Fix available

    NLTK before 3.10.3 Regular Expression Denial of Service via Pl196xCorpusReader

    NLTK before 3.10.3 contains a regular expression denial of service vulnerability in Pl196xCorpusReader that allows attackers to cause quadratic CPU consumption by supplying malformed TEI blocks with many unmatched opening tags. Attackers can exploit lazy regex patterns in the read_block method through public APIs like words() and tagged_words() to force repeated rescans and achieve near-quadratic runtime growth.

    • Update to 3.10.3
    Published Updated
  5. CVE-2026-81724

    Medium · CVSS 6.9EPSS 0.46%Fix available

    NLTK before 3.10.3 Denial of Service via Uncontrolled Recursion

    NLTK before 3.10.3 contains an uncontrolled recursion vulnerability in nltk.featstruct.FeatStructReader that allows unauthenticated attackers to cause a denial of service by supplying deeply nested feature-structure input. Attackers can craft trivial payloads with nested brackets that exceed Python's recursion limit and raise an unhandled RecursionError, crashing applications that parse user-supplied feature structures or feature grammars.

    • Update to 3.10.3
    Published Updated
  6. CVE-2026-81723

    Medium · CVSS 6.3EPSS 0.28%Fix available

    NLTK before 3.10.3 Quadratic CPU Exhaustion via XMLCorpusView

    NLTK versions before 3.10.3 contain a quadratic CPU exhaustion vulnerability in XMLCorpusView._read_xml_fragment() that rescans accumulated XML fragments on every 1 KiB block read. Attackers can provide malformed XML corpus files to cause severe CPU consumption and denial of service through affected readers like BNCCorpusReader.

    • Update to 3.10.3
    Published Updated
  7. CVE-2026-81722

    High · CVSS 8.7EPSS 0.52%Fix available

    nltk PorterStemmer before 3.10.3 Quadratic-time DoS

    nltk PorterStemmer in versions <= 3.10.2 (fixed in 3.10.3) contains an inefficient-algorithmic-complexity denial of service in PorterStemmer.stem(). The _is_consonant() helper walks backward over the entire run of trailing 'y' characters on every call, and _measure() invokes it for each stem position, causing O(n^2) behavior. A single ~20-50 KB untrusted token consisting of a long run of the letter 'y' followed by a matching suffix (e.g., 'ness') can pin a CPU core for seconds to minutes, causing availability impact.

    • Update to 3.10.3
    Published Updated
  8. CVE-2026-80206

    High · CVSS 8.2EPSS 0.44%Fix available

    NLTK 3.10.2 Regular Expression Denial of Service via tgrep

    NLTK before 3.10.3 contains a regular expression denial of service (ReDoS) vulnerability in the tgrep module. The _tgrep_node_action function compiles user-supplied regular expressions embedded in /regex/ pattern nodes and executes them via re.search against tree node labels without any validation or timeout. An attacker who controls the tgrep pattern (e.g., via tgrep_positions() or tgrep_compile() exposed to external input) can supply a pattern that triggers catastrophic backtracking, causing indefinite CPU saturation that blocks the Python process.

    • Update to 3.10.3
    Published Updated
  9. CVE-2026-79676

    High · CVSS 8.2EPSS 0.45%Fix available

    NLTK before 3.10.3 Path Traversal via Symlink Bypass

    NLTK versions before 3.10.3 contain a path traversal vulnerability in corpus readers that reopen root-derived paths using built-in open() instead of nltk.pathsec.open(), allowing symlinks to escape trusted roots. Attackers who stage symlinked corpus files under a trusted data root can disclose outside-root content through normal corpus reader methods like channels(), domains(), and synonyms().

    • Update to 3.10.3
    Published Updated
  10. CVE-2026-79675

    Critical · CVSS 9.3EPSS 0.78%Fix available

    NLTK before 3.10.3 JVM Argument Injection via Per-Call Options

    NLTK before 3.10.3 fails to validate JVM options passed through the per-call options parameter in the java() function, allowing attackers to inject dangerous JVM flags. Attackers can supply malicious options like -agentpath, -javaagent, or @argfile to Stanford wrapper classes to achieve arbitrary code execution.

    • Update to 3.10.3
    Published Updated
  11. CVE-2026-79674

    High · CVSS 8.8EPSS 0.39%Fix available

    NLTK 3.10.2 Path Traversal via corpus-reader constructors

    NLTK versions before 3.10.3 contain a path sandbox bypass vulnerability in corpus-reader constructors that allows attackers to read files outside the intended data root. Attackers can supply arbitrary corpus root paths to LinThesaurusCorpusReader and PanLexLiteCorpusReader constructors to access filesystem content and SQLite databases outside the pathsec sandbox boundary.

    • Update to 3.10.3
    Published Updated
  12. CVE-2026-79657

    Critical · CVSS 9.3EPSS 1.27%Fix available

    NLTK before 3.10.3 Remote Code Execution via Unsafe Pickle Deserialization

    NLTK versions before 3.10.3 contain a remote code execution vulnerability in allowlisted pickle loaders that trust entire module namespaces instead of specific safe callables. Attackers can craft malicious pickle payloads invoking dangerous in-namespace functions like ReppTokenizer._execute and numpy.f2py.crackfortran.myeval through pickle REDUCE to execute arbitrary commands during model or tokenizer artifact loading.

    • Update to 3.10.3
    Published Updated
  13. CVE-2026-78682

    High · CVSS 8.7EPSS 0.43%Fix available

    NLTK before 3.10.3 SSRF Protection Bypass via Proxy

    NLTK before 3.10.3 contains a server-side request forgery vulnerability in nltk.pathsec.urlopen (and callers nltk.data.load, nltk.downloader.Downloader.index/download) when an HTTP proxy is configured. pathsec.urlopen validates the requested hostname locally, but proxy-handler inheritance disables the safe HTTP/HTTPS handlers so the actual fetch is performed by the proxy against a destination that is never re-validated. An attacker can supply a validated public URL that the proxy forwards to an internal loopback-only service, allowing disclosure of internal HTTP resources, loading of forged downloader indexes, and installation of attacker-cho

    • Update to 3.10.3
    Published Updated
  14. CVE-2026-78681

    High · CVSS 8.7EPSS 0.52%Fix available

    NLTK before 3.10.3 Entity Expansion DoS via ElementTree

    NLTK versions before 3.10.3 use xml.etree.ElementTree to parse XML in multiple modules, which honors entity declarations in document DTDs. Attackers can craft XML payloads with nested entity declarations that expand from hundreds of bytes to megabytes in memory, causing denial of service.

    • Update to 3.10.3
    Published Updated
  15. CVE-2026-78680

    High · CVSS 8.5EPSS 0.18%Fix available

    NLTK before 3.10.3 Arbitrary Code Execution via Graphviz dot Binary

    NLTK versions before 3.10.3 fail to use validated absolute paths when invoking the Graphviz dot binary in dependencygraph.dot2img and AlignedSent._repr_svg_, allowing attackers to execute arbitrary code by placing a malicious dot binary in the search path or current working directory. Attackers can exploit bare-name binary resolution on Windows via the current working directory or on Unix-like systems via relative PATH entries to execute their binary instead of the legitimate Graphviz tool.

    • Update to 3.10.3
    Published Updated
  16. CVE-2026-62384

    High · CVSS 8.7EPSS 0.65%Fix available

    NLTK FramenetCorpusReader Symlink Sandbox Bypass before 3.10.2

    NLTK versions before 3.10.2 contain a symlink-based sandbox bypass in FramenetCorpusReader that allows attackers to read arbitrary XML files outside the corpus root. Attackers can place symlinks with names containing no path separators inside the corpus subdirectory, which pass the path validation guard and are resolved to files outside the intended corpus root when accessed via frame_by_name(), _lu_file(), or doc() methods.

    • Update to 3.10.2
    Published Updated
  17. CVE-2026-62383

    Medium · CVSS 6.8EPSS 0.18%Fix available

    nltk IPIPANCorpusReader Symlink Arbitrary File Read

    nltk versions before 3.10.2 contain a symlink-based arbitrary file read vulnerability in IPIPANCorpusReader methods that bypass nltk.pathsec validation entirely. Attackers can place a symlink in the corpus root directory and read arbitrary files accessible to the process by calling channels(), domains(), categories(), or fileids() methods with the symlink filename.

    • Update to 3.10.2
    Published Updated
  18. CVE-2026-71514

    Low · CVSS 2.0EPSS 0.17%Fix available

    NLTK 3.9.4 through 3.10.2 Path Traversal via CrubadanCorpusReader pathsec Bypass

    NLTK 3.9.4 through 3.10.2 contains a path traversal vulnerability in CrubadanCorpusReader. _load_lang_ngrams joins the corpus root with crubadan_code, the column-0 value read from the corpus table.txt mapping file, and opens the result with the builtin open() rather than the pathsec-validated opener, so os.path.join discards the root when that value is absolute and the read escapes the corpus directory without the containment check nltk.pathsec applies when ENFORCE is set. An attacker who controls a corpus package can disclose file contents outside the corpus root through lang_freq, limited to paths ending in -3grams.txt whose contents parse

    • Update to 3.10.3
    Published Updated
  19. CVE-2026-71513

    High · CVSS 8.7EPSS 1.1%Fix available

    NLTK 3.10.0 through 3.10.2 Remote Code Execution via AllowlistUnpickler Dotted-Name Bypass

    NLTK before 3.10.3 contains a remote code execution vulnerability in AllowlistUnpickler that validates only the pickle module string and not the global name, allowing attackers to resolve dotted names by attribute traversal to callables outside the allowlisted namespace. Attackers can craft untrusted transition-parser models that execute arbitrary commands when TransitionParser.parse loads the model through allowlisted_pickle_load.

    • Update to 3.10.3
    Published Updated
  20. CVE-2026-72818

    High · CVSS 8.7EPSS 0.74%Fix available

    NLTK TweetTokenizer URL Pattern Backtracks Catastrophically on Naked-Domain-Like Input

    The URLS regular expression in nltk/tokenize/casual.py, compiled into TweetTokenizer.WORD_RE and applied by TweetTokenizer.tokenize, contains a naked-domain branch whose domain-label prefix [a-z0-9]+(?:[.\-][a-z0-9]+)* is unbounded. Input consisting of many alternating label separators can be partitioned in exponentially many ways, and because the branch also requires a trailing top-level domain that such input never supplies, the engine explores those partitions before failing at each offset. A few kilobytes of input therefore consumes seconds to minutes of single-threaded CPU, and the HANG_RE substitution performed before matching does not

    • Update to 3.10.1
    Published Updated

Check your server

Check your installed stack and versions against the current vulnerability feeds.

Check your server →