<?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>Fri, 02 Oct 2026 17:45:05 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-54574 — `proot-distro install` has a Symlink Escape (Arbitrary Host File Write) via Malicious Tar Archive</title>
      <link>https://cve.radiocsirt.org/vuln/cve-2026-54574</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; termux proot-distro&lt;/p&gt;
&lt;p&gt;proot-distro is a utility for managing proot containers. Prior to version 5.1.5, proot-distro install extracted plain tarball root filesystems through _extract_plain_tar() in proot_distro/commands/install.py and Docker layers through _apply_layer() in proot_distro/helpers/docker.py without validating archive-controlled symlink targets in member.linkname, allowing a malicious archive to plant an absolute host-path symlink and write files through it onto the host filesystem. This issue is fixed in version 5.1.5.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; termux proot-distro&lt;/p&gt;
&lt;p&gt;proot-distro is a utility for managing proot containers. Prior to version 5.1.5, proot-distro install extracted plain tarball root filesystems through _extract_plain_tar() in proot_distro/commands/install.py and Docker layers through _apply_layer() in proot_distro/helpers/docker.py without validating archive-controlled symlink targets in member.linkname, allowing a malicious archive to plant an absolute host-path symlink and write files through it onto the host filesystem. This issue is fixed in version 5.1.5.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/cve-2026-54574</guid>
    </item>
    <item>
      <title>GHSA-9xq3-3fqg-4vg7 — `proot-distro install` has a Symlink Escape (Arbitrary Host File Write) via Malicious Tar Archive</title>
      <link>https://cve.radiocsirt.org/vuln/ghsa-9xq3-3fqg-4vg7</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: proot-distro&lt;/p&gt;
&lt;p&gt;**Repository:** `termux/proot-distro`  
**Component:** `proot_distro/commands/install.py` → `_extract_plain_tar()`; also `helpers/docker.py` → `_apply_layer()`&lt;/p&gt;
&lt;p&gt;---&lt;/p&gt;
&lt;p&gt;## Affected Versions&lt;/p&gt;
&lt;p&gt;| Component     | Version                      |
|---------------|------------------------------|
| proot-distro  | 5.0.2 (confirmed vulnerable) |
| Termux app    | 0.119.0-beta.3               |
| Device / ABI  | Samsung Galaxy A23 / aarch64 |
| Python (host) | 3.13                         |&lt;/p&gt;
&lt;p&gt;---&lt;/p&gt;
&lt;p&gt;## Vulnerability Description&lt;/p&gt;
&lt;p&gt;`proot-distro install` extracts a plain tarball rootfs by calling `_extract_plain_tar()` in
`proot_distro/commands/install.py`. This function correctly rejects tar member **names**
containing `..` components, but applies **no equivalent check on symlink targets**
(`member.linkname`). A tar archive can therefore:&lt;/p&gt;
&lt;p&gt;1. Plant a symlink inside the rootfs whose target is an **absolute host path**
   (e.g. `/data/data/com.termux/files/home`).
2. Write a subsequent regular-file member whose path traverses through that symlink name.&lt;/p&gt;
&lt;p&gt;Python&amp;#39;s `open()` follows the symlink, writing the file **on the host filesystem** at the
privilege level of the Termux process — entirely during `proot-distro install`, before the
container is ever run.&lt;/p&gt;
&lt;p&gt;The same `_extract_plain_tar` function is reachable via `proot-distro reset`, and the
equivalent `_apply_layer` in `helpers/docker.py` contains the same flaw.&lt;/p&gt;
&lt;p&gt;---&lt;/p&gt;
&lt;p&gt;## Vulnerable Code&lt;/p&gt;
&lt;p&gt;**`proot_distro/commands/install.py`**, `_extract_plain_…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: proot-distro&lt;/p&gt;
&lt;p&gt;**Repository:** `termux/proot-distro`  
**Component:** `proot_distro/commands/install.py` → `_extract_plain_tar()`; also `helpers/docker.py` → `_apply_layer()`&lt;/p&gt;
&lt;p&gt;---&lt;/p&gt;
&lt;p&gt;## Affected Versions&lt;/p&gt;
&lt;p&gt;| Component     | Version                      |
|---------------|------------------------------|
| proot-distro  | 5.0.2 (confirmed vulnerable) |
| Termux app    | 0.119.0-beta.3               |
| Device / ABI  | Samsung Galaxy A23 / aarch64 |
| Python (host) | 3.13                         |&lt;/p&gt;
&lt;p&gt;---&lt;/p&gt;
&lt;p&gt;## Vulnerability Description&lt;/p&gt;
&lt;p&gt;`proot-distro install` extracts a plain tarball rootfs by calling `_extract_plain_tar()` in
`proot_distro/commands/install.py`. This function correctly rejects tar member **names**
containing `..` components, but applies **no equivalent check on symlink targets**
(`member.linkname`). A tar archive can therefore:&lt;/p&gt;
&lt;p&gt;1. Plant a symlink inside the rootfs whose target is an **absolute host path**
   (e.g. `/data/data/com.termux/files/home`).
2. Write a subsequent regular-file member whose path traverses through that symlink name.&lt;/p&gt;
&lt;p&gt;Python&amp;#39;s `open()` follows the symlink, writing the file **on the host filesystem** at the
privilege level of the Termux process — entirely during `proot-distro install`, before the
container is ever run.&lt;/p&gt;
&lt;p&gt;The same `_extract_plain_tar` function is reachable via `proot-distro reset`, and the
equivalent `_apply_layer` in `helpers/docker.py` contains the same flaw.&lt;/p&gt;
&lt;p&gt;---&lt;/p&gt;
&lt;p&gt;## Vulnerable Code&lt;/p&gt;
&lt;p&gt;**`proot_distro/commands/install.py`**, `_extract_plain_…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/ghsa-9xq3-3fqg-4vg7</guid>
    </item>
  </channel>
</rss>
