pyLoad tar extraction creates device nodes and FIFOs

Severity: high · Published 2026-10-09

pyLoad is a download manager that extracts compressed archives. When extracting tar archives, it fails to filter out special member types like device nodes and named pipes (FIFOs), allowing an attacker to create them on disk. If pyLoad runs as root (as in the official Docker image), a crafted archive can create block devices for raw disk access, leading to complete host compromise.

Technologies: pyload-ng (PyPI). Vendors: PyPI.

Quick answers

Is This vulnerability exploited in the wild?
No. Junglewise Threat Intelligence has no report of This vulnerability being exploited in the wild.
How severe is This vulnerability?
High severity, published 9 October 2026.
Which products and versions are affected?
pyLoad contributors pyLoad all versions using UnTar extractor without member-type validation; pyload-ng (PyPI) <= 0.5.0b3.dev101.
Is there a fix for This vulnerability?
No fixed version is recorded yet. Reject or skip every tar member that is not a regular file, directory, or safe symlink/hardlink by adding member-type validation (isdev(), isfifo() checks) before extraction, and pass filter="data" to tarfile.extractall() on Python 3.12+ (or backport the check for older runtimes). If you run it, Junglewise drafts a mitigation that fits your setup and applies it once you approve, with senior security engineers behind it.
How is This vulnerability attacked?
It is attacked over the network, in a software library.
Am I affected?
Check whether you run pyLoad contributors pyLoad or pyload-ng (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

Reject or skip every tar member that is not a regular file, directory, or safe symlink/hardlink by adding member-type validation (isdev(), isfifo() checks) before extraction, and pass filter="data" to tarfile.extractall() on Python 3.12+ (or backport the check for older runtimes).

Technical details

The vulnerability exists in UnTar._safe_extractall, which validates member names and symlink/hardlink targets but does not check member types (isdev(), ischr(), isblk(), isfifo()). The code calls tarfile.extractall() without a filter parameter; on Python 3.9–3.13 (the supported runtimes), the default "fully_trusted" filter allows mknod for root and FIFO creation for any user. Any low-privileged user who can trigger archive extraction (via ADD and STATUS API calls) can supply a crafted tar archive containing device or FIFO entries to exploit this.

Affected products

  • pyLoad contributors pyLoad all versions using UnTar extractor without member-type validation

Timeline

  • 2026-10-09: disclosed

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