<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title>Most recent entries from all</title>
    <link>https://db.gcve.eu</link>
    <description>Contains only the most 10 recent entries.</description>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>python-feedgen</generator>
    <language>en</language>
    <lastBuildDate>Thu, 12 Nov 2026 07:24:57 +0000</lastBuildDate>
    <item>
      <title>BREW-acronym-CVE-2026-12074 — Natural Language Toolkit (NLTK) has path traversal in FramenetCorpusReader.frame() that allows arbitrary XML file read,…</title>
      <link>https://db.gcve.eu/vuln/brew-acronym-cve-2026-12074</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Homebrew: acronym&lt;/p&gt;
&lt;p&gt;### Summary
`FramenetCorpusReader.frame(name)` interpolates a caller-supplied frame name into an XML file path that is read with the builtin `open()`, bypassing `CorpusReader.open()` and the `nltk.pathsec` sandbox — including strict `ENFORCE=True` mode. A `../` sequence in the name escapes the corpus root, yielding an arbitrary XML file read whose parsed content is returned to the caller.&lt;/p&gt;
&lt;p&gt;### Details
`frame_by_name` builds the path by joining the corpus root, the frame directory, and the caller-supplied name with a fixed `.xml` extension, with no containment check, then constructs an `XMLCorpusView` from that **string** path. Because the view is built from a string rather than a `PathPointer`, it reads with the builtin `open()`, so `nltk.pathsec.validate_path()` is never invoked and `ENFORCE=True` does not block the access. This is the same path-traversal class previously hardened for the generic corpus readers; `frame_by_name` never goes through `CorpusReader.open()`, so that protection does not apply.&lt;/p&gt;
&lt;p&gt;The same string-path-into-`XMLCorpusView` pattern exists in two sibling methods that take a name from corpus data rather than the immediate caller:
- `doc()` — uses the index entry `filename` field
- the lexical-unit file loader — uses the `lexUnit` ID attribute&lt;/p&gt;
&lt;p&gt;These are reachable through a malicious or attacker-modified FrameNet corpus index.&lt;/p&gt;
&lt;p&gt;### PoC
```python
&amp;#34;&amp;#34;&amp;#34;&lt;/p&gt;
&lt;p&gt;import os
import sys
import tempfile
import warnings
from pathlib import Path&lt;/p&gt;
&lt;p&gt;warnings.filterwarnings(&amp;#34;i…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Homebrew: acronym&lt;/p&gt;
&lt;p&gt;### Summary
`FramenetCorpusReader.frame(name)` interpolates a caller-supplied frame name into an XML file path that is read with the builtin `open()`, bypassing `CorpusReader.open()` and the `nltk.pathsec` sandbox — including strict `ENFORCE=True` mode. A `../` sequence in the name escapes the corpus root, yielding an arbitrary XML file read whose parsed content is returned to the caller.&lt;/p&gt;
&lt;p&gt;### Details
`frame_by_name` builds the path by joining the corpus root, the frame directory, and the caller-supplied name with a fixed `.xml` extension, with no containment check, then constructs an `XMLCorpusView` from that **string** path. Because the view is built from a string rather than a `PathPointer`, it reads with the builtin `open()`, so `nltk.pathsec.validate_path()` is never invoked and `ENFORCE=True` does not block the access. This is the same path-traversal class previously hardened for the generic corpus readers; `frame_by_name` never goes through `CorpusReader.open()`, so that protection does not apply.&lt;/p&gt;
&lt;p&gt;The same string-path-into-`XMLCorpusView` pattern exists in two sibling methods that take a name from corpus data rather than the immediate caller:
- `doc()` — uses the index entry `filename` field
- the lexical-unit file loader — uses the `lexUnit` ID attribute&lt;/p&gt;
&lt;p&gt;These are reachable through a malicious or attacker-modified FrameNet corpus index.&lt;/p&gt;
&lt;p&gt;### PoC
```python
&amp;#34;&amp;#34;&amp;#34;&lt;/p&gt;
&lt;p&gt;import os
import sys
import tempfile
import warnings
from pathlib import Path&lt;/p&gt;
&lt;p&gt;warnings.filterwarnings(&amp;#34;i…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://db.gcve.eu/vuln/brew-acronym-cve-2026-12074</guid>
    </item>
    <item>
      <title>certfr-2026-avi-1486 — De multiples vulnérabilités ont été découvertes dans les produits VMware. Elles permettent à un attaquant de provoquer…</title>
      <link>https://db.gcve.eu/vuln/certfr-2026-avi-1486</link>
      <description>certfr-2026-avi-1486</description>
      <guid isPermaLink="false">https://db.gcve.eu/vuln/certfr-2026-avi-1486</guid>
    </item>
    <item>
      <title>GHSA-xh95-f55m-82fw — Natural Language Toolkit (NLTK) has path traversal in FramenetCorpusReader.frame() that allows arbitrary XML file read,…</title>
      <link>https://db.gcve.eu/vuln/ghsa-xh95-f55m-82fw</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: nltk&lt;/p&gt;
&lt;p&gt;### Summary
`FramenetCorpusReader.frame(name)` interpolates a caller-supplied frame name into an XML file path that is read with the builtin `open()`, bypassing `CorpusReader.open()` and the `nltk.pathsec` sandbox — including strict `ENFORCE=True` mode. A `../` sequence in the name escapes the corpus root, yielding an arbitrary XML file read whose parsed content is returned to the caller.&lt;/p&gt;
&lt;p&gt;### Details
`frame_by_name` builds the path by joining the corpus root, the frame directory, and the caller-supplied name with a fixed `.xml` extension, with no containment check, then constructs an `XMLCorpusView` from that **string** path. Because the view is built from a string rather than a `PathPointer`, it reads with the builtin `open()`, so `nltk.pathsec.validate_path()` is never invoked and `ENFORCE=True` does not block the access. This is the same path-traversal class previously hardened for the generic corpus readers; `frame_by_name` never goes through `CorpusReader.open()`, so that protection does not apply.&lt;/p&gt;
&lt;p&gt;The same string-path-into-`XMLCorpusView` pattern exists in two sibling methods that take a name from corpus data rather than the immediate caller:
- `doc()` — uses the index entry `filename` field
- the lexical-unit file loader — uses the `lexUnit` ID attribute&lt;/p&gt;
&lt;p&gt;These are reachable through a malicious or attacker-modified FrameNet corpus index.&lt;/p&gt;
&lt;p&gt;### PoC
```python
&amp;#34;&amp;#34;&amp;#34;&lt;/p&gt;
&lt;p&gt;import os
import sys
import tempfile
import warnings
from pathlib import Path&lt;/p&gt;
&lt;p&gt;warnings.filterwarnings(&amp;#34;i…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: nltk&lt;/p&gt;
&lt;p&gt;### Summary
`FramenetCorpusReader.frame(name)` interpolates a caller-supplied frame name into an XML file path that is read with the builtin `open()`, bypassing `CorpusReader.open()` and the `nltk.pathsec` sandbox — including strict `ENFORCE=True` mode. A `../` sequence in the name escapes the corpus root, yielding an arbitrary XML file read whose parsed content is returned to the caller.&lt;/p&gt;
&lt;p&gt;### Details
`frame_by_name` builds the path by joining the corpus root, the frame directory, and the caller-supplied name with a fixed `.xml` extension, with no containment check, then constructs an `XMLCorpusView` from that **string** path. Because the view is built from a string rather than a `PathPointer`, it reads with the builtin `open()`, so `nltk.pathsec.validate_path()` is never invoked and `ENFORCE=True` does not block the access. This is the same path-traversal class previously hardened for the generic corpus readers; `frame_by_name` never goes through `CorpusReader.open()`, so that protection does not apply.&lt;/p&gt;
&lt;p&gt;The same string-path-into-`XMLCorpusView` pattern exists in two sibling methods that take a name from corpus data rather than the immediate caller:
- `doc()` — uses the index entry `filename` field
- the lexical-unit file loader — uses the `lexUnit` ID attribute&lt;/p&gt;
&lt;p&gt;These are reachable through a malicious or attacker-modified FrameNet corpus index.&lt;/p&gt;
&lt;p&gt;### PoC
```python
&amp;#34;&amp;#34;&amp;#34;&lt;/p&gt;
&lt;p&gt;import os
import sys
import tempfile
import warnings
from pathlib import Path&lt;/p&gt;
&lt;p&gt;warnings.filterwarnings(&amp;#34;i…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://db.gcve.eu/vuln/ghsa-xh95-f55m-82fw</guid>
    </item>
    <item>
      <title>PYSEC-2026-3584 — Natural Language Toolkit (NLTK) has path traversal in FramenetCorpusReader.frame() that allows arbitrary XML file read,…</title>
      <link>https://db.gcve.eu/vuln/pysec-2026-3584</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: nltk&lt;/p&gt;
&lt;p&gt;### Summary
`FramenetCorpusReader.frame(name)` interpolates a caller-supplied frame name into an XML file path that is read with the builtin `open()`, bypassing `CorpusReader.open()` and the `nltk.pathsec` sandbox — including strict `ENFORCE=True` mode. A `../` sequence in the name escapes the corpus root, yielding an arbitrary XML file read whose parsed content is returned to the caller.&lt;/p&gt;
&lt;p&gt;### Details
`frame_by_name` builds the path by joining the corpus root, the frame directory, and the caller-supplied name with a fixed `.xml` extension, with no containment check, then constructs an `XMLCorpusView` from that **string** path. Because the view is built from a string rather than a `PathPointer`, it reads with the builtin `open()`, so `nltk.pathsec.validate_path()` is never invoked and `ENFORCE=True` does not block the access. This is the same path-traversal class previously hardened for the generic corpus readers; `frame_by_name` never goes through `CorpusReader.open()`, so that protection does not apply.&lt;/p&gt;
&lt;p&gt;The same string-path-into-`XMLCorpusView` pattern exists in two sibling methods that take a name from corpus data rather than the immediate caller:
- `doc()` — uses the index entry `filename` field
- the lexical-unit file loader — uses the `lexUnit` ID attribute&lt;/p&gt;
&lt;p&gt;These are reachable through a malicious or attacker-modified FrameNet corpus index.&lt;/p&gt;
&lt;p&gt;### PoC
```python
&amp;#34;&amp;#34;&amp;#34;&lt;/p&gt;
&lt;p&gt;import os
import sys
import tempfile
import warnings
from pathlib import Path&lt;/p&gt;
&lt;p&gt;warnings.filterwarnings(&amp;#34;i…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: nltk&lt;/p&gt;
&lt;p&gt;### Summary
`FramenetCorpusReader.frame(name)` interpolates a caller-supplied frame name into an XML file path that is read with the builtin `open()`, bypassing `CorpusReader.open()` and the `nltk.pathsec` sandbox — including strict `ENFORCE=True` mode. A `../` sequence in the name escapes the corpus root, yielding an arbitrary XML file read whose parsed content is returned to the caller.&lt;/p&gt;
&lt;p&gt;### Details
`frame_by_name` builds the path by joining the corpus root, the frame directory, and the caller-supplied name with a fixed `.xml` extension, with no containment check, then constructs an `XMLCorpusView` from that **string** path. Because the view is built from a string rather than a `PathPointer`, it reads with the builtin `open()`, so `nltk.pathsec.validate_path()` is never invoked and `ENFORCE=True` does not block the access. This is the same path-traversal class previously hardened for the generic corpus readers; `frame_by_name` never goes through `CorpusReader.open()`, so that protection does not apply.&lt;/p&gt;
&lt;p&gt;The same string-path-into-`XMLCorpusView` pattern exists in two sibling methods that take a name from corpus data rather than the immediate caller:
- `doc()` — uses the index entry `filename` field
- the lexical-unit file loader — uses the `lexUnit` ID attribute&lt;/p&gt;
&lt;p&gt;These are reachable through a malicious or attacker-modified FrameNet corpus index.&lt;/p&gt;
&lt;p&gt;### PoC
```python
&amp;#34;&amp;#34;&amp;#34;&lt;/p&gt;
&lt;p&gt;import os
import sys
import tempfile
import warnings
from pathlib import Path&lt;/p&gt;
&lt;p&gt;warnings.filterwarnings(&amp;#34;i…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://db.gcve.eu/vuln/pysec-2026-3584</guid>
    </item>
    <item>
      <title>UBUNTU-CVE-2026-12074</title>
      <link>https://db.gcve.eu/vuln/ubuntu-cve-2026-12074</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Ubuntu:Pro:14.04:LTS: nltk, Ubuntu:Pro:16.04:LTS: nltk, Ubuntu:Pro:18.04:LTS: nltk, Ubuntu:Pro:20.04:LTS: nltk, Ubuntu:Pro:22.04:LTS: nltk, Ubuntu:Pro:24.04:LTS: nltk, Ubuntu:26.10: nltk, Ubuntu:Pro:26.04:LTS: nltk&lt;/p&gt;
&lt;p&gt;[Unknown description]&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Ubuntu:Pro:14.04:LTS: nltk, Ubuntu:Pro:16.04:LTS: nltk, Ubuntu:Pro:18.04:LTS: nltk, Ubuntu:Pro:20.04:LTS: nltk, Ubuntu:Pro:22.04:LTS: nltk, Ubuntu:Pro:24.04:LTS: nltk, Ubuntu:26.10: nltk, Ubuntu:Pro:26.04:LTS: nltk&lt;/p&gt;
&lt;p&gt;[Unknown description]&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://db.gcve.eu/vuln/ubuntu-cve-2026-12074</guid>
    </item>
  </channel>
</rss>
