CVE-2026-39245
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.
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
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 Medium
CVSS: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 Medium
CVSS: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 Medium
CVSS: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 Medium
CVSS: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 Medium
CVSS: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 High
CVSS: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
| Package | Affected | Fixed |
|---|---|---|
dotnet-sdk-8.0Red 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-artifactsRed 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.0Red 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.0Red 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.0Red 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.0Red 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.0Red 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.0Red 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.0Red 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.0Red 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.0Red 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.0Red 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.0Red 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
| Recorded | Changed | Sources |
|---|---|---|
| affected, facts | ||
| first indexed | CVE 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
github.com/kevva/decompress
npmjs.com/package/decompress
nvd.nist.gov/vuln/detail/CVE-2020-12265
github.com/kevva/decompress/issues/115
nvd.nist.gov/vuln/detail/CVE-2026-39245
github.com/advisories/GHSA-qcj4-cj8p-fhf4
Show 30 moreShow less
github.com/CVEProject/cvelistV5/tree/main/cves/2026/39xxx/CVE-2026-39245.json
access.redhat.com/errata/RHSA-2026:37577
access.redhat.com/security/cve/CVE-2026-59725
access.redhat.com/security/cve/CVE-2026-59869
access.redhat.com/security/updates/classification
images.redhat.com
access.redhat.com/security/cve/CVE-2026-39243
access.redhat.com/security/cve/CVE-2026-39245
access.redhat.com/security/cve/CVE-2020-12265
security.access.redhat.com/data/csaf/v2/advisories/2026/rhsa-2026_37577.json
bugzilla.redhat.com/show_bug.cgi?id=2498833
cve.org/CVERecord?id=CVE-2026-39243
nvd.nist.gov/vuln/detail/CVE-2026-39243
github.com/kevva/decompress/issues/113
bugzilla.redhat.com/show_bug.cgi?id=2498814
cve.org/CVERecord?id=CVE-2026-39245
bugzilla.redhat.com/show_bug.cgi?id=2498118
cve.org/CVERecord?id=CVE-2026-59725
nvd.nist.gov/vuln/detail/CVE-2026-59725
github.com/socketio/socket.io/commit/fc11285e14964c2132d122164bf130c355f60671
github.com/socketio/socket.io/releases/tag/[email protected]
github.com/socketio/socket.io/security/advisories/GHSA-r635-g3xr-vw7x
bugzilla.redhat.com/show_bug.cgi?id=2498122
cve.org/CVERecord?id=CVE-2026-59869
nvd.nist.gov/vuln/detail/CVE-2026-59869
github.com/nodeca/js-yaml/commit/24f13e79ee1343a7e30bd6f6c9d9cdbf0ac9b2b7
github.com/nodeca/js-yaml/commit/59423c6f8cdc78742ac00e25a4dd39ef16b702e4
github.com/nodeca/js-yaml/releases/tag/3.15.0
github.com/nodeca/js-yaml/releases/tag/4.3.0
github.com/nodeca/js-yaml/security/advisories/GHSA-52cp-r559-cp3m