CVE Catalog

CVE-2026-104025

HighCVSS 8.4
Published: Updated: Translated: NVD NIST

Exploitation Probability (EPSS)

Low risk
0.16%

5th percentile - higher than 5% of all known CVEs

Summary

A Path Traversal (CWE-22) vulnerability in the execute_obj function of PeaZip's archive object viewer (peach.pas) in versions 11.2.0 and earlier on Windows allows an attacker to execute an arbitrary program already present on the victim's system. The attacker must convince the victim to preview a crafted archive entry via the "Preview with... -> Associated application" action (Shift+Ctrl+O), where the entry name contains "../" sequences that escape the temporary extraction directory and are passed to ShellExecuteW without warning. The flaw stems from missing validation of the tempstring and lack of path-containment check in checkfiledirname.

Risk Assessment

The organization is exposed to arbitrary code execution in the context of the user opening a crafted archive, potentially leading to system compromise, data theft, or further escalation. The risk is particularly high because the attack requires no administrative privileges and only a preview action from the victim.

Recommendation

Update PeaZip to a version later than 11.2.0 if available, or disable the "Preview with... -> Associated application" feature until a patch is released. Additionally, consider restricting the opening of untrusted archives and enforcing least privilege for users.

Other vulnerabilities in PeaZip

See all
Original NVD description (English source)

Path Traversal (CWE-22) in the execute_obj function of the archive object viewer (peach.pas) in PeaZip 11.2.0 and earlier on Windows allows an attacker who convinces a victim to preview an entry of a crafted archive via the "Preview with... -> Associated application" action (Shift+Ctrl+O) to execute an arbitrary program already present on the victim's system, with no warning dialog. The function validates only outname (PeaZip's own temporary directory) with checkfiledirname, while the string actually executed is the concatenation outname+tempstring; tempstring is taken verbatim from the archive entry name (StringGridList.Cells[12,...]) and is never validated. checkfiledirname (list_utils.pas) rejects control and reserved characters in the file name but performs no ".." path-containment check, so an entry named ../../../../Windows/System32/calc.exe escapes the extraction directory and is passed to cp_open -> ShellExecuteW; the extracting backend (7-Zip) strips the traversal while the opener does not. In addition, the SECEXTCONST dangerous-extension confirmation prompt is implemented only in the double-click handler (grid_obj_open) and not on this preview route, so an executable inside an archive reaches ShellExecuteW unannounced, and where the prompt does fire it names the entry's display name rather than the resolved path that will run. Arbitrary code execution was demonstrated with a proof of concept against official PeaZip builds, confirmed on two archive formats (.zip and .tar) to show the defect is in PeaZip's own path handling and not in a single format parser.

Vulnerability data from NVD (NIST) · CISA KEV · EPSS