@xhmikosr/decompress: Path traversal via symlink chain
The decompress package for Node.js extracts archives. Prior to 10.2.2 and 11.1.4, the default decompress(input, output) API relies on lexical containment checks that do not account for the kernel following a planted symlink chain. An attacker can supply a crafted archive containing chained symlink entries so that a later entry resolves outside the output directory. This allows files outside output to be read or written, and overwriting startup scripts or configuration can lead to remote code execution. The maintained @xhmikosr/decompress package is fixed in 10.2.2 and 11.1.4, but the separately affected unmaintained decompress package remains unpatched through 4.2.1. This vulnerability results from a bypass of the incomplete hardening for CVE-2026-53486. @xhmikosr/decompress is fixed in versions 10.2.2 and 11.1.4.
- Products
- Not specified
- Affected versions
- Not specified
- Fixed versions
- Not specified
- CVEs
- CVE-2026-101894
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 4 Nov 2026, 03:13 UTC · Revision 1
Source evidence
@xhmikosr/decompress: Path traversal via symlink chain
core-osv · Original sourcePublished 28 Sept 2026, 16:57 UTC
The decompress package for Node.js extracts archives. Prior to 10.2.2 and 11.1.4, the default decompress(input, output) API relies on lexical containment checks that do not account for the kernel following a planted symlink chain. An attacker can supply a crafted archive containing chained symlink entries so that a later entry resolves outside the output directory. This allows files outside output to be read or written, and overwriting startup scripts or configuration can lead to remote code execution. The maintained @xhmikosr/decompress package is fixed in 10.2.2 and 11.1.4, but the separately affected unmaintained decompress package remains unpatched through 4.2.1. This vulnerability results from a bypass of the incomplete hardening for CVE-2026-53486. @xhmikosr/decompress is fixed in versions 10.2.2 and 11.1.4.
osv:CVE-2026-101894
Complete source record
{
"id": "1bfc73106f3c6825cb214bdcde69fa5acbfab2b199859f14bc19a303b2ac6e83",
"url": "https://osv.dev/vulnerability/CVE-2026-101894",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "@xhmikosr/decompress: Path traversal via symlink chain",
"summary": "The decompress package for Node.js extracts archives. Prior to 10.2.2 and 11.1.4, the default decompress(input, output) API relies on lexical containment checks that do not account for the kernel following a planted symlink chain. An attacker can supply a crafted archive containing chained symlink entries so that a later entry resolves outside the output directory. This allows files outside output to be read or written, and overwriting startup scripts or configuration can lead to remote code execution. The maintained @xhmikosr/decompress package is fixed in 10.2.2 and 11.1.4, but the separately affected unmaintained decompress package remains unpatched through 4.2.1. This vulnerability results from a bypass of the incomplete hardening for CVE-2026-53486. @xhmikosr/decompress is fixed in versions 10.2.2 and 11.1.4.",
"evidence": "osv:CVE-2026-101894",
"products": [],
"severity": "critical",
"structured": {
"id": "CVE-2026-101894",
"aliases": [
"CVE-2026-101894",
"GHSA-hrh2-vp3x-79xf"
],
"metrics": [
{
"type": "CVSS_V3",
"score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N"
}
],
"affected": [
{
"ranges": [
{
"repo": "https://github.com/xhmikosr/decompress",
"type": "GIT",
"events": [
{
"introduced": "bbaa8c6c31bab65fea6b8a85f12ffb4ead6845f7"
},
{
"fixed": "18aacc5bec66f06c6dbe80b1499d684221af1068"
},
{
"introduced": "0"
},
{
"fixed": "5f4b2f64abb31bbaf1fef8975b595fd7df2558d8"
},
{
"fixed": "f6c88c668216d6a12c6cecf4fe0b6c70bf77050a"
}
],
"database_specific": {
"extracted_events": [
{
"range": [
{
"introduced": "11.0.0"
},
{
"fixed": "11.1.4"
}
],
"source": "AFFECTED_FIELD",
"strategy": "StringRangeExpression"
},
{
"range": [
{
"introduced": "0"
},
{
"last_affected": "4.2.1"
}
],
"source": "AFFECTED_FIELD",
"strategy": "StringRangeExpression"
},
{
"range": [
{
"fixed": "5f4b2f64abb31bbaf1fef8975b595fd7df2558d8"
}
],
"source": "REFERENCES_COMMIT"
},
{
"range": [
{
"fixed": "f6c88c668216d6a12c6cecf4fe0b6c70bf77050a"
}
],
"source": "REFERENCES_COMMIT"
},
{
"range": [
{
"fixed": "18aacc5bec66f06c6dbe80b1499d684221af1068"
}
],
"source": "REFERENCES_TAG",
"original_tag": "v11.1.4"
}
]
}
}
],
"versions": [
"v11.1.3",
"v11.1.2",
"v11.1.1",
"v11.1.0",
"v11.0.2",
"v11.0.1",
"v11.0.0"
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-101894.json"
}
}
],
"modified": "2026-10-28T02:30:33.090666638Z",
"provider": "osv",
"references": [
"https://github.com/XhmikosR/decompress/releases/tag/v10.2.2",
"https://github.com/XhmikosR/decompress/releases/tag/v11.1.4",
"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/101xxx/CVE-2026-101894.json",
"https://github.com/XhmikosR/decompress/security/advisories/GHSA-hrh2-vp3x-79xf",
"https://nvd.nist.gov/vuln/detail/CVE-2026-101894",
"https://github.com/XhmikosR/decompress/commit/5f4b2f64abb31bbaf1fef8975b595fd7df2558d8",
"https://github.com/XhmikosR/decompress/commit/f6c88c668216d6a12c6cecf4fe0b6c70bf77050a"
],
"provider_metadata": {
"cwe_ids": [
"CWE-22",
"CWE-59"
],
"cna_assigner": "GitHub_M",
"unresolved_ranges": [
{
"extracted_events": [
{
"range": [
{
"fixed": "10.2.2"
}
],
"source": "AFFECTED_FIELD",
"strategy": "StringRangeExpression"
}
]
}
],
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/101xxx/CVE-2026-101894.json"
}
},
"related_cves": [
{
"value": "CVE-2026-101894",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": "/severity/0/score"
},
"source_id": "core-osv",
"document_id": 499955,
"published_at": "2026-09-28T16:57:11.44+00:00"
}