Every CVE Search/ Get API key

CVE-2026-39245

decompress before 4.2.2 contains an improper path containment check that enables directory...

6.2 Medium

decompress before 4.2.2 contains an improper path containment check that enables directory traversal and arbitrary file write. The safeMakeDir function (index.js line 29) and the extraction path validation (index.js line 106) use String.indexOf() to verify the resolved path is within the output directory: realDestinationDir.indexOf(realOutputPath) !== 0. This check is flawed because it does not enforce a path separator boundary. For example, "/tmp/app_config".indexOf("/tmp/app") returns 0, incorrectly passing the check even though /tmp/app_config is outside /tmp/app. Combined with the unvalidated symlink creation in the same package, an attacker can write arbitrary files to directories adjacent to the extraction target. This is a bypass of the fix for CVE-2020-12265. The correct check requires appending a path separator: realParentPath.indexOf(realOutputPath + path.sep) !== 0.

Attack profile

How easy it is to exploit

Attack vector
Local
Complexity
Low
Privileges needed
None
User interaction
None

What an attacker can affect

Confidentiality
None
Integrity
High
Availability
None

Exploit likelihood

0.38%Up 0.1 points since Jul 10, 2026
90%50%10%1%

What each source reports

CVE List Score used 6.2

decompress before 4.2.2 contains an improper path containment check that enables directory traversal and arbitrary file write. The safeMakeDir function (index.js line 29) and the extraction path validation (index.js line 106) use String.indexOf() to verify the resolved path is within the output directory: realDestinationDir.indexOf(realOutputPath) !== 0. This check is flawed because it does not enforce a path separator boundary. For example, "/tmp/app_config".indexOf("/tmp/app") returns 0, incorrectly passing the check even though /tmp/app_config is outside /tmp/app. Combined with the unvalidated symlink creation in the same package, an attacker can write arbitrary files to directories adjacent to the extraction target. This is a bypass of the fix for CVE-2020-12265. The correct check requires appending a path separator: realParentPath.indexOf(realOutputPath + path.sep) !== 0.

Record
CVE-2026-39245
CVSS 3.1
6.2 MediumCVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N
Weakness
CWE-22
Updated
2026-11-02
EUVDEUVD-2026-42769 6.2

decompress before 4.2.2 contains an improper path containment check that enables directory traversal and arbitrary file write. The safeMakeDir function (index.js line 29) and the extraction path validation (index.js line 106) use String.indexOf() to verify the resolved path is within the output directory: realDestinationDir.indexOf(realOutputPath) !== 0. This check is flawed because it does not enforce a path separator boundary. For example, "/tmp/app_config".indexOf("/tmp/app") returns 0, incorrectly passing the check even though /tmp/app_config is outside /tmp/app. Combined with the unvalidated symlink creation in the same package, an attacker can write arbitrary files to directories adjacent to the extraction target. This is a bypass of the fix for CVE-2020-12265. The correct check requires appending a path separator: realParentPath.indexOf(realOutputPath + path.sep) !== 0.

Record
EUVD-2026-42769
CVSS 3.1
6.2 MediumCVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N
Updated
2026-11-02
GitHub AdvisoriesGHSA-qcj4-cj8p-fhf4 6.2

decompress before 4.2.2 contains an improper path containment check that enables directory...

decompress before 4.2.2 contains an improper path containment check that enables directory traversal and arbitrary file write. The safeMakeDir function (index.js line 29) and the extraction path validation (index.js line 106) use String.indexOf() to verify the resolved path is within the output directory: realDestinationDir.indexOf(realOutputPath) !== 0. This check is flawed because it does not enforce a path separator boundary. For example, "/tmp/app_config".indexOf("/tmp/app") returns 0, incorrectly passing the check even though /tmp/app_config is outside /tmp/app. Combined with the unvalidated symlink creation in the same package, an attacker can write arbitrary files to directories adjacent to the extraction target. This is a bypass of the fix for CVE-2020-12265. The correct check requires appending a path separator: realParentPath.indexOf(realOutputPath + path.sep) !== 0.

Record
GHSA-qcj4-cj8p-fhf4
CVSS 3.1
6.2 MediumCVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N
Weakness
CWE-22
Updated
2026-11-02
NVD 6.2

decompress before 4.2.2 contains an improper path containment check that enables directory traversal and arbitrary file write. The safeMakeDir function (index.js line 29) and the extraction path validation (index.js line 106) use String.indexOf() to verify the resolved path is within the output directory: realDestinationDir.indexOf(realOutputPath) !== 0. This check is flawed because it does not enforce a path separator boundary. For example, "/tmp/app_config".indexOf("/tmp/app") returns 0, incorrectly passing the check even though /tmp/app_config is outside /tmp/app. Combined with the unvalidated symlink creation in the same package, an attacker can write arbitrary files to directories adjacent to the extraction target. This is a bypass of the fix for CVE-2020-12265. The correct check requires appending a path separator: realParentPath.indexOf(realOutputPath + path.sep) !== 0.

Record
CVE-2026-39245
CVSS 3.1
6.2 MediumCVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N
Weakness
CWE-22
Updated
2026-11-02
OSV 6.2

decompress before 4.2.2 contains an improper path containment check that enables directory traversal and arbitrary file write. The safeMakeDir function (index.js line 29) and the extraction path validation (index.js line 106) use String.indexOf() to verify the resolved path is within the output directory: realDestinationDir.indexOf(realOutputPath) !== 0. This check is flawed because it does not enforce a path separator boundary. For example, "/tmp/app_config".indexOf("/tmp/app") returns 0, incorrectly passing the check even though /tmp/app_config is outside /tmp/app. Combined with the unvalidated symlink creation in the same package, an attacker can write arbitrary files to directories adjacent to the extraction target. This is a bypass of the fix for CVE-2020-12265. The correct check requires appending a path separator: realParentPath.indexOf(realOutputPath + path.sep) !== 0.

Record
CVE-2026-39245
CVSS 3.1
6.2 MediumCVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N
Updated
2026-11-02
OSVRHSA-2026:37577 7.5

Red Hat Security Advisory: Red Hat Hardened Images RPMs Security Update

Record
RHSA-2026:37577
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Updated
2026-11-02

Affected products

Affected packages

Affected packages
PackageAffectedFixed
dotnet-sdk-8.0
Red Hat:hummingbird:1
From an advisory covering 4 CVEs
before 0:8.0.128-1.1.hum1
0:8.0.128-1.1.hum1
dotnet-sdk-8.0-source-built-artifacts
Red Hat:hummingbird:1
From an advisory covering 4 CVEs
before 0:8.0.128-1.1.hum1
0:8.0.128-1.1.hum1
dotnet-sdk-dbg-8.0
Red Hat:hummingbird:1
From an advisory covering 4 CVEs
before 0:8.0.128-1.1.hum1
0:8.0.128-1.1.hum1
dotnet-templates-8.0
Red Hat:hummingbird:1
From an advisory covering 4 CVEs
before 0:8.0.128-1.1.hum1
0:8.0.128-1.1.hum1
dotnet8.0
Red Hat:hummingbird:1
From an advisory covering 4 CVEs
before 0:8.0.128-1.1.hum1
0:8.0.128-1.1.hum1
aspnetcore-runtime-8.0
Red Hat:hummingbird:1
From an advisory covering 4 CVEs
before 0:8.0.28-1.1.hum1
0:8.0.28-1.1.hum1
aspnetcore-runtime-dbg-8.0
Red Hat:hummingbird:1
From an advisory covering 4 CVEs
before 0:8.0.28-1.1.hum1
0:8.0.28-1.1.hum1
aspnetcore-targeting-pack-8.0
Red Hat:hummingbird:1
From an advisory covering 4 CVEs
before 0:8.0.28-1.1.hum1
0:8.0.28-1.1.hum1
dotnet-apphost-pack-8.0
Red Hat:hummingbird:1
From an advisory covering 4 CVEs
before 0:8.0.28-1.1.hum1
0:8.0.28-1.1.hum1
dotnet-hostfxr-8.0
Red Hat:hummingbird:1
From an advisory covering 4 CVEs
before 0:8.0.28-1.1.hum1
0:8.0.28-1.1.hum1
dotnet-runtime-8.0
Red Hat:hummingbird:1
From an advisory covering 4 CVEs
before 0:8.0.28-1.1.hum1
0:8.0.28-1.1.hum1
dotnet-runtime-dbg-8.0
Red Hat:hummingbird:1
From an advisory covering 4 CVEs
before 0:8.0.28-1.1.hum1
0:8.0.28-1.1.hum1
dotnet-targeting-pack-8.0
Red Hat:hummingbird:1
From an advisory covering 4 CVEs
before 0:8.0.28-1.1.hum1
0:8.0.28-1.1.hum1

History

History
RecordedChangedSources
affected, facts
first indexedCVE List, EUVD, GitHub Advisories, NVD, OSV

Dates are when Every CVE recorded each change. Upstream dates may differ.

In short

CVE-2026-39245 is a medium vulnerability (CVSS 6.2) in Decompress Project Decompress, published July 9, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.38%, the 31st percentile. No source names a fixed version.

References

Show 30 moreShow less
MoveEnter Open