Description
sevenz-rust2 is a Rust-native 7z compressor and `decompress`or. Prior to 0.21.1, extracting an attacker-supplied 7z archive can write or overwrite files outside the destination directory. In `src/util/decompress.rs`, `decompress_impl` computes each destination with `dest.join(entry.name())` without normalizing the archive's UTF-16 entry name or verifying containment, and `default_entry_extract_fn` writes to it with `File::create`. Parent-directory components escape the extraction root, and an absolute entry path makes the join discard the destination entirely. The convenience entry points `decompress`, `decompress_file`, `decompress_with_password`, and `decompress_file_with_password` all use this default path. Overwriting writable configuration, startup, cron, or build files can lead to code execution or persistence. The archive bytes are the attacker-controlled trust boundary, including for applications that automatically unpack uploaded or otherwise untrusted archives. This issue is fixed in version 0.21.1.
Published: 2026-10-30
Score: 6.1 Medium
EPSS: n/a
KEV: No
Impact: Remote Code Execution
Action: Patch
AI Analysis

Impact

The sevenz-rust2 library contains a flaw that allows an attacker to supply a crafted 7z archive with path names that are not normalised or checked for containment. When the library decompresses entries, it constructs the destination path with dest.join(entry.name()), which can resolve to a location outside the intended extraction directory or, if the entry is an absolute path, bypass the join entirely. The archive entries are written with File::create without any containment verification, enabling overwriting of arbitrary files on the system. If the decompression is performed by a privileged process, the attacker can replace configuration, startup, cron, or build files, potentially leading to remote code execution or persistent compromise.

Affected Systems

All installations of hasenbanck:sevenz-rust2 preceding version 0.21.1 are affected. The vulnerability persists across all convenience extraction functions—decompress, decompress_file, decompress_with_password, and decompress_file_with_password—because each ultimately uses the same default path resolution logic.

Risk and Exploitability

The CVSS score of 6.1 indicates medium severity, and no EPSS score is available; the vulnerability is not listed in the CISA KEV catalog. The likely attack vector is local or server‐side processing of attacker‑controlled 7z archives; an application that automatically extracts uploaded or otherwise untrusted archives could be tricked into overwriting critical system files. If the decompression routine runs with elevated privileges, the overwrite could provide a privilege escalation or remote code execution path.

Generated by OpenCVE AI on October 30, 2026 at 23:51 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade sevenz-rust2 to version 0.21.1 or newer to apply the path‑validation fix.
  • Temporarily disable or sandbox automatic extraction of untrusted 7z archives until the library is updated.
  • Restrict write permissions on critical configuration, cron, and system directories and monitor for unauthorized file changes to mitigate potential overwrites.

Generated by OpenCVE AI on October 30, 2026 at 23:51 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Fri, 30 Oct 2026 22:15:00 +0000

Type Values Removed Values Added
Description sevenz-rust2 is a Rust-native 7z compressor and `decompress`or. Prior to 0.21.1, extracting an attacker-supplied 7z archive can write or overwrite files outside the destination directory. In `src/util/decompress.rs`, `decompress_impl` computes each destination with `dest.join(entry.name())` without normalizing the archive's UTF-16 entry name or verifying containment, and `default_entry_extract_fn` writes to it with `File::create`. Parent-directory components escape the extraction root, and an absolute entry path makes the join discard the destination entirely. The convenience entry points `decompress`, `decompress_file`, `decompress_with_password`, and `decompress_file_with_password` all use this default path. Overwriting writable configuration, startup, cron, or build files can lead to code execution or persistence. The archive bytes are the attacker-controlled trust boundary, including for applications that automatically unpack uploaded or otherwise untrusted archives. This issue is fixed in version 0.21.1.
Title sevenz-rust2: unchecked 7z entry paths permit traversal and absolute-path file overwrites
Weaknesses CWE-22
CWE-23
References
Metrics cvssV3_1

{'score': 6.1, 'vector': 'CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:L'}


Subscriptions

No data.

cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-10-30T22:10:55.526Z

Reserved: 2026-07-10T18:59:00.046Z

Link: CVE-2026-61725

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-10-30T23:17:11.743

Modified: 2026-10-30T23:17:11.743

Link: CVE-2026-61725

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-10-31T00:00:27Z

Weaknesses
  • CWE-22

    Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')

  • CWE-23

    Relative Path Traversal