CVE-2026-47078

Source
https://cve.org/CVERecord?id=CVE-2026-47078
Import Source
https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2026-47078.json
JSON Data
https://api.test.osv.dev/v1/vulns/CVE-2026-47078
Aliases
Downstream
DEBIAN (1)
openSUSE (2)
SUSE (2)
UBUNTU (1)
Related
Published
2026-07-27T15:03:50Z
Modified
2026-08-21T18:27:48Z
Severity
  • 4.8 (Medium) CVSS_V4 - CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:P/VC:N/VI:L/VA:L/SC:N/SI:L/SA:L CVSS Calculator
Summary
Relative path traversal in zip:unzip/zip:extract via check_dir_level depth-counter bypass
Details

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 29.0.4, OTP 28.5.0.4 and OTP 27.3.4.15, corresponding to stdlib from 6.1 before 8.0.3, 7.3.0.1 and 6.2.2.4.

Database specific
{
    "cna_assigner":  "EEF",
    "cwe_ids":  [
        "CWE-23"
    ],
    "osv_generated_from":  "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/47xxx/CVE-2026-47078.json",
    "unresolved_ranges":  [
        {
            "extracted_events":  [
                {
                    "introduced":  "6.1"
                },
                {
                    "fixed":  "*"
                },
                {
                    "introduced":  "27.1"
                },
                {
                    "fixed":  "*"
                },
                {
                    "introduced":  "8d537f51a4262d24f3395c4148323eaca9facbbd"
                },
                {
                    "fixed":  "8a933c9c7835b06776d31d17b79b7336627d887a"
                }
            ],
            "source":  "AFFECTED_FIELD"
        }
    ]
}
References

Affected packages

Git / github.com/erlang/otp

Affected ranges

Type
GIT
Repo
https://github.com/erlang/otp
Events
Database specific
Show details
{
    "extracted_events":  [
        {
            "introduced":  "27.1"
        },
        {
            "fixed":  "27.3.4.15"
        },
        {
            "introduced":  "28.0"
        },
        {
            "fixed":  "28.5.0.4"
        },
        {
            "introduced":  "29.0"
        },
        {
            "fixed":  "29.0.4"
        }
    ],
    "source":  [
        "CPE_FIELD",
        "REFERENCES"
    ]
}

Affected versions

OTP-27.*
OTP-27.1
OTP-27.2
OTP-27.3
OTP-27.3.1
OTP-27.3.2
OTP-27.3.3
OTP-27.3.4
OTP-27.3.4.1
OTP-27.3.4.10
OTP-27.3.4.11
OTP-27.3.4.12
OTP-27.3.4.13
OTP-27.3.4.14
OTP-27.3.4.2
OTP-27.3.4.3
OTP-27.3.4.4
OTP-27.3.4.5
OTP-27.3.4.6
OTP-27.3.4.7
OTP-27.3.4.8
OTP-27.3.4.9
OTP-28.*
OTP-28.0
OTP-28.1
OTP-28.4
OTP-28.5
OTP-28.5.0.1
OTP-28.5.0.2
OTP-28.5.0.3
OTP-29.*
OTP-29.0
OTP-29.0.1
OTP-29.0.2
OTP-29.0.3
Other
patch-base-27
patch-base-28

Database specific

source
"https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2026-47078.json"