<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <id>https://vulnerability.circl.lu/rss/recent/all/10</id>
  <title>Most recent entries from all</title>
  <updated>2026-09-28T13:47:31.075503+00:00</updated>
  <author>
    <name>Vulnerability-Lookup</name>
    <email>info@circl.lu</email>
  </author>
  <link href="https://vulnerability.circl.lu" rel="alternate"/>
  <generator uri="https://lkiesow.github.io/python-feedgen" version="1.0.0">python-feedgen</generator>
  <subtitle>Contains only the most 10 recent entries.</subtitle>
  <entry>
    <id>https://vulnerability.circl.lu/vuln/brew-acronym-cve-2026-81727</id>
    <title>BREW-acronym-CVE-2026-81727 — NLTK: Downloader.download follows hardlinks and overwrites outside-root files</title>
    <updated>2026-09-28T13:47:31.080832+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> Homebrew: acronym</p>
<p>### Summary</p>
<p>NLTK's downloader now blocks symlink escapes during ZIP extraction, but it still treats pre-existing hardlinks inside the install tree as ordinary in-root files. A normal package install can therefore overwrite an outside-root inode through that hardlink.</p>
<p>### Details</p>
<p>- **Vulnerability type:** Filesystem containment bypass
- **Affected component:** `nltk.downloader.Downloader.download`, `nltk.downloader.Downloader.incr_download`
- **Affected versions:** Published `3.9.4` and current source `v3.10.0-rc2` both reproduced for the extraction-stage overwrite.
- **Patched versions:** 3.10.3
- **Root cause:** The downloader validates traversal and symlink conditions but does not reject pre-existing hardlink aliases inside the install tree.</p>
<p>The install flow correctly rejects a pre-existing symlink at an extraction target, yet it accepts a pre-existing hardlink at the same path. When the package is installed, extracted member data is written through the hardlink and mutates the outside inode.</p>
<p>### PoC</p>
<p>**Preconditions**
- The attacker can plant files inside a writable shared downloader root on the same filesystem as the target file.</p>
<p>**Steps**
1. Prepare a downloader root and create a hardlink inside it that points to an outside target file.
2. Confirm a symlink at the same path is rejected as a negative control.
3. Run a normal `Downloader.download()` package install whose extracted member lands on the hardlink path.
4. Observe the outside target file is overwritten w…</p></div>
    </content>
    <link href="https://vulnerability.circl.lu/vuln/brew-acronym-cve-2026-81727"/>
  </entry>
  <entry>
    <id>https://vulnerability.circl.lu/vuln/cve-2026-81727</id>
    <title>CVE-2026-81727 — NLTK before 3.10.3 Hardlink File Overwrite via downloader</title>
    <updated>2026-09-28T13:47:31.081182+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> nltk</p>
<p>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.</p></div>
    </content>
    <link href="https://vulnerability.circl.lu/vuln/cve-2026-81727"/>
  </entry>
  <entry>
    <id>https://vulnerability.circl.lu/vuln/ghsa-f794-5jv7-7672</id>
    <title>GHSA-f794-5jv7-7672 — NLTK: Downloader.download follows hardlinks and overwrites outside-root files</title>
    <updated>2026-09-28T13:47:31.081315+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> PyPI: nltk</p>
<p>### Summary</p>
<p>NLTK's downloader now blocks symlink escapes during ZIP extraction, but it still treats pre-existing hardlinks inside the install tree as ordinary in-root files. A normal package install can therefore overwrite an outside-root inode through that hardlink.</p>
<p>### Details</p>
<p>- **Vulnerability type:** Filesystem containment bypass
- **Affected component:** `nltk.downloader.Downloader.download`, `nltk.downloader.Downloader.incr_download`
- **Affected versions:** Published `3.9.4` and current source `v3.10.0-rc2` both reproduced for the extraction-stage overwrite.
- **Patched versions:** 3.10.3
- **Root cause:** The downloader validates traversal and symlink conditions but does not reject pre-existing hardlink aliases inside the install tree.</p>
<p>The install flow correctly rejects a pre-existing symlink at an extraction target, yet it accepts a pre-existing hardlink at the same path. When the package is installed, extracted member data is written through the hardlink and mutates the outside inode.</p>
<p>### PoC</p>
<p>**Preconditions**
- The attacker can plant files inside a writable shared downloader root on the same filesystem as the target file.</p>
<p>**Steps**
1. Prepare a downloader root and create a hardlink inside it that points to an outside target file.
2. Confirm a symlink at the same path is rejected as a negative control.
3. Run a normal `Downloader.download()` package install whose extracted member lands on the hardlink path.
4. Observe the outside target file is overwritten w…</p></div>
    </content>
    <link href="https://vulnerability.circl.lu/vuln/ghsa-f794-5jv7-7672"/>
  </entry>
</feed>
