CVE-2026-54574: termux proot-distro symlink escape in archive extraction

CVE-2026-54574 · Severity: high · CVSS 8.2 · Published 2026-07-29

proot-distro is a utility used to manage Linux distributions within a container-like environment on Android. A security flaw allows a specially crafted container image or archive to break out of its intended directory and write files directly onto the user's device. If a user attempts to install a malicious archive, an attacker could gain persistent control over the user's terminal environment by overwriting sensitive configuration files.

Technologies: proot-distro (PyPI). Vendors: PyPI.

Quick answers

Is CVE-2026-54574 exploited in the wild?
No. Junglewise Threat Intelligence has no report of CVE-2026-54574 being exploited in the wild.
How severe is CVE-2026-54574?
High severity, with a CVSS score of 8.2, published 29 July 2026.
Which products and versions are affected?
proot-distro (PyPI) <= 5.1.4, ECOSYSTEM:introduced=0,fixed=5.1.5.
Is there a fix for CVE-2026-54574?
Yes. proot-distro (PyPI): upgrade to 5.1.5 or later. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
How is CVE-2026-54574 attacked?
It is attacked with local access, in a software library.
Am I affected by CVE-2026-54574?
Check whether you run proot-distro (PyPI) at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

How to fix

  • proot-distro (PyPI): upgrade to 5.1.5 or later
    pip install "proot-distro>=5.1.5"

Technical details

A symlink escape vulnerability exists in proot-distro's archive extraction logic within `_extract_plain_tar()` and `_apply_layer()`. While the utility validated member names for directory traversal (e.g., '..'), it failed to validate the `linkname` property of symbolic link members. An attacker can craft a tar archive containing a symlink pointing to an absolute host path, followed by a regular file member that traverses that symlink. During extraction, Python's `os.symlink` creates the link, and subsequent `open()` calls follow it, resulting in an arbitrary file write on the host at the privilege level of the Termux process. This is fixed in version 5.1.5 by implementing a secure path resolver that clamps all symlink hops within the container rootfs.

Affected products

  • termux proot-distro < 5.1.5

Identifiers

  • CVE-2026-54574
  • GHSA-9xq3-3fqg-4vg7
  • PYSEC-2026-3608

Timeline

  • 2026-06-06: patched: Fix committed to repository
  • 2026-06-07: patched: Version 5.1.5 released
  • 2026-06-08: advisory: GitHub Security Advisory published
  • 2026-07-29: disclosed: CVE published to NVD

References

This page as Markdown. Free to reuse under CC BY 4.0 with a link back.