Skip to content
Heist/ feed
Back to feed
Critical

@xhmikosr/decompress: Path traversal via symlink chain

Type: advisorySources: OSV

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 source

Published 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"
}