CVE-2026-24884
Compressing Vulnerable to Arbitrary File Write via Symlink Extraction
Compressing is a compressing and uncompressing lib for node. In version 2.0.0 and 1.10.3 and prior, Compressing extracts TAR archives while restoring symbolic links without validating their targets. By embedding symlinks that resolve outside the intended extraction directory, an attacker can cause subsequent file entries to be written to arbitrary locations on the host file system. Depending on the extractor’s handling of existing files, this behavior may allow overwriting sensitive files or creating new files in security-critical locations. This issue has been patched in versions 1.10.4 and 2.0.1.
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
- High
- Integrity
- High
- Availability
- High
Exploit likelihood
What each source reports
CVE List Score used
8.4
Compressing Vulnerable to Arbitrary File Write via Symlink Extraction
Compressing is a compressing and uncompressing lib for node. In version 2.0.0 and 1.10.3 and prior, Compressing extracts TAR archives while restoring symbolic links without validating their targets. By embedding symlinks that resolve outside the intended extraction directory, an attacker can cause subsequent file entries to be written to arbitrary locations on the host file system. Depending on the extractor’s handling of existing files, this behavior may allow overwriting sensitive files or creating new files in security-critical locations. This issue has been patched in versions 1.10.4 and 2.0.1.
- Record
CVE-2026-24884- CVSS 3.1
- 8.4 High
CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-59
- Updated
- 2026-11-02
EUVDEUVD-2026-5368
8.4
Compressing is a compressing and uncompressing lib for node. In version 2.0.0 and 1.10.3 and prior, Compressing extracts TAR archives while restoring symbolic links without validating their targets. By embedding symlinks that resolve outside the intended extraction directory, an attacker can cause subsequent file entries to be written to arbitrary locations on the host file system. Depending on the extractor’s handling of existing files, this behavior may allow overwriting sensitive files or creating new files in security-critical locations. This issue has been patched in versions 1.10.4 and 2.0.1.
- Record
EUVD-2026-5368- CVSS 3.1
- 8.4 High
CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-cc8f-xg8v-72m3
8.4
Compressing Vulnerable to Arbitrary File Write via Symlink Extraction
Arbitrary File Write via Symlink Extraction in github.com/node-modules/compressing
Brief Introduction
The compressing npm package extracts TAR archives while restoring symbolic links without validating their targets.
By embedding symlinks that resolve outside the intended extraction directory, an attacker can cause subsequent file entries to be written to arbitrary locations on the host file system.
Depending on the extractor’s handling of existing files, this behavior may allow overwriting sensitive files or creating new files in security-critical locations.
Affected Component and Versions
- Component:
github.com/node-modules/compressing - Affected Versions:
<= 1.10.3 || =2.0.0
Vulnerability Details
Root Cause
compressing.tar.uncompress sanitizes the destination paths of archive entries, but it does not restrict or validate the targets of symlinks contained in TAR archives. During extraction, the library creates those symlinks inside the output directory. Later entries that resolve through the symlink are written to the symlink target rather than the intended extraction root, enabling an arbitrary file write.
Impact
An attacker who can supply a crafted TAR archive can:
-
Cause files to be written outside the intended extraction directory (arbitrary file write via symlink traversal).
-
Write files to attacker-controlled paths on the host file system once symbolic links are followed during extraction.
-
In environments where extraction is performed with elevated privileges or targets executable paths, this may lead to code execution, privilege escalation, data corruption, or denial of service.
Reproduction
Environment
- OS: Ubuntu 24.04
- Node.js: v24.12.0
- compressing: 2.0.0
Construct PoC Archive
The following pseudo-code demonstrates the attack logic:
base_dir = "archive/"
with tarfile.open("./poc_arbitrary_write.tar", mode="w") as tar:
add_regular_file(tar, base_dir + "baseFile.txt", "base content\n")
add_symlink(tar, base_dir + "myTmp", "/tmp")
add_regular_file(tar, base_dir + "myTmp/poc.txt", "Arbitrary File Write\n")
Extract the Archive
const compressing = require('compressing');
function untar(archiveName, destPath) {
return compressing.tar.uncompress(archiveName, destPath);
}
async function main() {
const archivePath = process.argv[2];
const destPath = "./output";
if (archivePath && archivePath.endsWith(".tar")) {
await untar(archivePath, destPath);
}
}
main();
Attack Results
<img width="547" height="161" alt="image" src="https://github.com/user-attachments/assets/5ea12efd-0d3f-4f8a-8414-b3a5c72e153e" />
After extraction, the output directory contains a symlink pointing to /tmp. The file poc.txt is then written through the symlink to /tmp/poc.txt, demonstrating an arbitrary file write outside the extraction directory.
Summary
compressing restores symlinks from TAR archives without validating their targets. By combining a malicious symlink with a subsequent file entry, an attacker can redirect extracted files to arbitrary locations on the host.
- Record
GHSA-cc8f-xg8v-72m3- CVSS 3.1
- 8.4 High
CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-59
- Updated
- 2026-11-02
NVD
8.4
Compressing is a compressing and uncompressing lib for node. In version 2.0.0 and 1.10.3 and prior, Compressing extracts TAR archives while restoring symbolic links without validating their targets. By embedding symlinks that resolve outside the intended extraction directory, an attacker can cause subsequent file entries to be written to arbitrary locations on the host file system. Depending on the extractor’s handling of existing files, this behavior may allow overwriting sensitive files or creating new files in security-critical locations. This issue has been patched in versions 1.10.4 and 2.0.1.
- Record
CVE-2026-24884- CVSS 3.1
- 8.4 High
CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - CVSS 3.1
- 7.8 High
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H - Weakness
- CWE-59
- Updated
- 2026-11-02
OSV
8.4
Compressing Vulnerable to Arbitrary File Write via Symlink Extraction
Compressing is a compressing and uncompressing lib for node. In version 2.0.0 and 1.10.3 and prior, Compressing extracts TAR archives while restoring symbolic links without validating their targets. By embedding symlinks that resolve outside the intended extraction directory, an attacker can cause subsequent file entries to be written to arbitrary locations on the host file system. Depending on the extractor’s handling of existing files, this behavior may allow overwriting sensitive files or creating new files in security-critical locations. This issue has been patched in versions 1.10.4 and 2.0.1.
- Record
CVE-2026-24884- CVSS 3.1
- 8.4 High
CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-59
- Updated
- 2026-11-02
OSVGHSA-cc8f-xg8v-72m3
8.4
Compressing Vulnerable to Arbitrary File Write via Symlink Extraction
Arbitrary File Write via Symlink Extraction in github.com/node-modules/compressing
Brief Introduction
The compressing npm package extracts TAR archives while restoring symbolic links without validating their targets.
By embedding symlinks that resolve outside the intended extraction directory, an attacker can cause subsequent file entries to be written to arbitrary locations on the host file system.
Depending on the extractor’s handling of existing files, this behavior may allow overwriting sensitive files or creating new files in security-critical locations.
Affected Component and Versions
- Component:
github.com/node-modules/compressing - Affected Versions:
<= 1.10.3 || =2.0.0
Vulnerability Details
Root Cause
compressing.tar.uncompress sanitizes the destination paths of archive entries, but it does not restrict or validate the targets of symlinks contained in TAR archives. During extraction, the library creates those symlinks inside the output directory. Later entries that resolve through the symlink are written to the symlink target rather than the intended extraction root, enabling an arbitrary file write.
Impact
An attacker who can supply a crafted TAR archive can:
-
Cause files to be written outside the intended extraction directory (arbitrary file write via symlink traversal).
-
Write files to attacker-controlled paths on the host file system once symbolic links are followed during extraction.
-
In environments where extraction is performed with elevated privileges or targets executable paths, this may lead to code execution, privilege escalation, data corruption, or denial of service.
Reproduction
Environment
- OS: Ubuntu 24.04
- Node.js: v24.12.0
- compressing: 2.0.0
Construct PoC Archive
The following pseudo-code demonstrates the attack logic:
base_dir = "archive/"
with tarfile.open("./poc_arbitrary_write.tar", mode="w") as tar:
add_regular_file(tar, base_dir + "baseFile.txt", "base content\n")
add_symlink(tar, base_dir + "myTmp", "/tmp")
add_regular_file(tar, base_dir + "myTmp/poc.txt", "Arbitrary File Write\n")
Extract the Archive
const compressing = require('compressing');
function untar(archiveName, destPath) {
return compressing.tar.uncompress(archiveName, destPath);
}
async function main() {
const archivePath = process.argv[2];
const destPath = "./output";
if (archivePath && archivePath.endsWith(".tar")) {
await untar(archivePath, destPath);
}
}
main();
Attack Results
<img width="547" height="161" alt="image" src="https://github.com/user-attachments/assets/5ea12efd-0d3f-4f8a-8414-b3a5c72e153e" />
After extraction, the output directory contains a symlink pointing to /tmp. The file poc.txt is then written through the symlink to /tmp/poc.txt, demonstrating an arbitrary file write outside the extraction directory.
Summary
compressing restores symlinks from TAR archives without validating their targets. By combining a malicious symlink with a subsequent file entry, an attacker can redirect extracted files to arbitrary locations on the host.
- Record
GHSA-cc8f-xg8v-72m3- CVSS 3.1
- 8.4 High
CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-59
- Updated
- 2026-11-02
OSVCLSA-2026-1792369075 No score
TuxCare security update for compressing (2 CVEs)
TuxCare rebuilt compressing to address 2 CVEs. Fixed in 1.10.0-tuxcare.1.
- Record
CLSA-2026-1792369075- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
compressingnpm |
2.0.0 to 2.0.0 | 2.0.1 |
compressingnpm |
through 1.10.3 | 1.10.4 |
compressingTuxCare:npm From an advisory covering 2 CVEs |
1.10.0-tuxcare.0 up to 1.10.0-tuxcare.1, plus listed versions 1.10.0 |
1.10.0-tuxcare.1 |
compressingnpm |
2.0.0 up to 2.0.1 | 2.0.1 |
compressingnpm |
before 1.10.4 | 1.10.4 |
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-24884 is a high vulnerability (CVSS 8.4) in Node-modules Compressing, published February 3, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.35%, the 28th percentile. Fixed in compressing 2.0.1.
References
github.com/node-modules/compressing/security/advisories/GHSA-cc8f-xg8v-72m3
github.com/node-modules/compressing/commit/8d16c196c7f1888fc1af957d9ff36117247cea6c
github.com/node-modules/compressing/commit/ce1c0131c401c071c77d5a1425bf8c88cfc16361
nvd.nist.gov/vuln/detail/CVE-2026-24884
github.com/advisories/GHSA-cc8f-xg8v-72m3
github.com/CVEProject/cvelistV5/tree/main/cves/2026/24xxx/CVE-2026-24884.json
github.com/node-modules/compressing