Impact
The vulnerability exists in the Erlang OTP standard library zip module. A crafted zip archive can be passed to zip:unzip/zip:extract, causing the path validation routine zip:check_dir_level/2 to accept entries whose intermediate path components temporarily drop the depth counter below zero but ultimately return to zero. This results in a final resolved file path that lies outside the intended extraction directory. The attacker can therefore create or overwrite files wherever the executing process has write permission. File overwrite can impact configuration files or binaries, leading to potential compromise of the system or denial of service. The weakness is a classic relative path traversal (CWE‑23).
Affected Systems
Erlang OTP versions prior to 29.0.4, including OTP 27.1 before 29.0.4, OTP 28.5.0.4 and OTP 27.3.4.15, affect the stdlib zip module. These versions correspond to stdlib 6.1 before 8.0.3, 7.3.0.1 and 6.2.2.4 respectively, and are available on all platforms supported by Erlang OTP. Updates to OTP 29.0.4 or newer contain the fix.
Risk and Exploitability
The CVSS score of 4.8 indicates moderate severity. The EPSS score is < 1%, indicating a very low but nonzero probability of exploitation. The vulnerability is not listed in CISA’s KEV catalog, which suggests it has not yet seen widespread exploitation. Based on the description, it is inferred that the likely attack vector is the delivery of a crafted zip archive to an application that uses the vulnerable functions; attackers would need to supply such a malicious zip file. If the vulnerable OTP installation is running services that accept untrusted archives, the risk is higher. Given the moderate CVSS and very low EPSS, the priority is to apply the patch as soon as possible rather than immediately monitoring or mitigating denial of service.
OpenCVE Enrichment