CVE-2026-47078
mediumpriority · track · 0EPSS 0.001 · 4 %ileDEEUUSEPSS · scored 2026-10-27
Relative Path Traversal vulnerability in Erlang OTP (stdlib zip module) allows writing files outside the intended extraction directory via a crafted zip archive. zip:unzip/1,2 and zip:extract/1,2 validate entry paths using zip:check_dir_level/2, which tracks directory depth as a running integer counter: .. decrements it, normal path components increment it. The caller rejects only paths where the final counter value is less than zero. A path such as ../x/y causes the counter to go negative mid-traversal then recover to zero, passing validation while resolving to a location outside the extraction directory when joined with the current working directory via add_cwd. This vulnerability is associated with program file lib/stdlib/src/zip.erl. This issue affects OTP from OTP 27.1 before OTP 27.3.4.15, OTP 28.5.0.4, and OTP 29.0.4, corresponding to stdlib from 6.1 before 6.2.2.4, 7.3.0.1, and 8.0.3.
cvss
Technical severity, 0–10. One row per scoring source.
base score 0–10 · higher = more severe · hover a vector to decode⚠ sources disagree · low–medium · 1.1–4.8
ssvc
A stakeholder decision — act, attend, or track — from exploitation and impact.
weaknesses
The CWE weakness classes this flaw belongs to.
affected products (12)
Products and version ranges known to be affected.
advisories (2)
Vendor and ecosystem advisories describing this.
- WID-SEC-W-2026-2533Erlang/OTP: Mehrere SchwachstellenDeutsch2026-07-27csaf · cert_bundDE
Ein entfernter, anonymer Angreifer kann mehrere Schwachstellen in Erlang/OTP ausnutzen, um einen Denial of Service Angriff durchzuführen, beliebigen Code auszuführen, Sicherheitsmaßnahmen zu umgehen sowie Daten zu manipulieren oder offenzulegen.
- EEF-CVE-2026-47078Relative path traversal in zip:unzip/zip:extract via check_dir_level depth-counter bypass2026-07-27vendor · osvUS
## Summary Relative Path Traversal vulnerability in Erlang OTP (stdlib zip module) allows writing files outside the intended extraction directory via a crafted zip archive. `zip:unzip/1,2` and `zip:extract/1,2` validate entry paths using `zip:check_dir_level/2`, which tracks directory depth as a running integer counter: `..` decrements it, normal path components increment it. The caller rejects only paths where the final counter value is less than zero. A path such as `../x/y` causes the counter to go negative mid-traversal then recover to zero, passing validation while resolving to a location outside the extraction directory when joined with the current working directory via `add_cwd`. This vulnerability is associated with program file `lib/stdlib/src/zip.erl`. This issue affects OTP from OTP 27.1 before OTP 27.3.4.15, OTP 28.5.0.4, and OTP 29.0.4, corresponding to stdlib from 6.1 before 6.2.2.4, 7.3.0.1, and 8.0.3.
also known as (3)
Other names and identifiers for this entity.
sources
Which sources assert this record, and when.
references (16)
External citations — patches, advisories, analysis.
- https://cna.erlef.org/cves/CVE-2026-47078.htmlcnnvd
- https://github.com/erlang/otp/commit/8a933c9c7835b06776d31d17b79b7336627d887acnnvd
- https://github.com/erlang/otp/security/advisories/GHSA-rf72-wp7h-jg3xcnnvd
- https://osv.dev/vulnerability/EEF-CVE-2026-47078cnnvd
- https://www.erlang.org/doc/system/versions.html#order-of-versionscnnvd
- https://cna.erlef.org/cves/CVE-2026-47078.htmlenisa_euvd
- https://github.com/erlang/otp/commit/8a933c9c7835b06776d31d17b79b7336627d887aenisa_euvd
- https://github.com/erlang/otp/security/advisories/GHSA-rf72-wp7h-jg3xenisa_euvd
Attackers weaponise vulnerabilities like this against internet-exposed services. See what is exposed on your perimeter with a free passive scan.
Free scan