Cloudanix VulnDB

CVE-2026-23745

Medium · 6.1

CVSS

6.1

EPSS

0.4%

Published

Jan 16, 2026

CISA due date

—

Cloudanix analysis

Next patch cycle SSVC: Track

A malicious archive could make affected software write or link files outside the folder it was supposed to use, potentially damaging files or changing how an application runs.

Chainable
Exploitation
Requires User Interaction
Attacker needs
User Interaction
Complexity
Low
Impact
Data Tampering
Component
Library
Class
Path Traversal
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

node-tar versions 7.5.2 and earlier do not correctly sanitize the linkpath field for tar archive hardlink and symbolic link entries when extracting archives with preservePaths set to false, which is intended to keep extraction confined to the chosen destination directory. A crafted archive can use an absolute or otherwise unsafe link target to create links that point outside the extraction root. This can result in arbitrary file overwrite through hardlink behavior and symlink poisoning where later file operations follow attacker-controlled links to sensitive locations outside the intended directory.

Why it matters to the business

Applications, build systems, package managers, CI/CD jobs, developer tools, or services that extract untrusted tar archives with affected node-tar versions may allow an attacker-supplied archive to overwrite files or plant dangerous links outside the expected working directory. The most likely consequences are corrupted application files, poisoned build artifacts, altered configuration, credential exposure, or a path to code execution if overwritten files are later executed or loaded. The issue is not listed in CISA KEV, has low EPSS, and requires user or application interaction with a malicious archive, but node-tar is commonly used in JavaScript tooling, so indirect exposure through dependencies should be treated seriously.

How an attack unfolds

An attacker prepares a tar archive containing Link or SymbolicLink entries whose linkpath points to an absolute path or another location outside the intended extraction directory. The attacker then gets a vulnerable application, developer workflow, or automation process to extract that archive using node-tar 7.5.2 or earlier. Even when preservePaths is false, the vulnerable code sanitizes the archive entry path but fails to apply equivalent restrictions to the link target. As a result, extraction can create a hardlink or symlink that escapes the destination directory. The attacker can then include additional archive entries or rely on subsequent application behavior to write through the link, causing files outside the extraction root to be overwritten or redirecting future reads/writes to attacker-selected locations. Impact depends heavily on the privileges of the extracting process and which files are reachable or later consumed.

How to fix it

Upgrade node-tar to version 7.5.3 or later wherever it is used directly or transitively. For source builds from isaacs/node-tar, ensure the code includes the fix at commit 03138441b238f48070fb22824b2529c445bc70c7 or a later release containing it. Refresh lockfiles and rebuild containers or deployed artifacts so the updated package is actually present at runtime. As defense in depth, do not extract untrusted archives in privileged directories, run extraction in a temporary sandbox with least privilege, block absolute link targets and parent-directory traversal in archive validation, reject archives containing hardlinks or symlinks when they are not required, and avoid following symlinks during post-extraction processing.

How to confirm the fix worked

Confirm that all application and build environments resolve node-tar to 7.5.3 or later by checking package-lock.json, npm-shrinkwrap.json, yarn.lock, pnpm-lock.yaml, and deployed node_modules/tar/package.json files. Use dependency scanners such as npm audit, osv-scanner, Snyk, GitHub Dependabot, or equivalent SCA tooling to verify that no direct or transitive dependency still pulls node-tar 7.5.2 or earlier. Validate runtime artifacts, not only source repositories, because vulnerable versions may remain in containers, CI images, serverless bundles, or packaged desktop applications. For functional validation, test extraction of a controlled tar archive containing absolute symlink and hardlink targets and confirm the upgraded library rejects or neutralizes out-of-root link targets and does not create files or links outside the destination directory.

Typical attack path

  1. Identify an application, build process, upload workflow, or developer tool that extracts tar archives using node-tar 7.5.2 or earlier.
  2. Create a malicious tar archive containing hardlink or symbolic link entries with unsafe absolute or out-of-root linkpath targets.
  3. Deliver the archive through an upload feature, package import, source dependency, CI artifact, support bundle, or social engineering route.
  4. Trigger extraction by the vulnerable Node.js process with preservePaths disabled or left at its default value.
  5. Use the unsafe link target to create links outside the intended extraction directory.
  6. Cause the extraction process or a later workflow to write through the link, overwrite files, poison configuration, expose data, or influence code that is later executed.

How to detect it

To investigate prior exploitation, focus on workflows that processed untrusted or externally supplied tar archives before node-tar was upgraded. Review application upload logs, CI/CD job logs, package import logs, artifact-processing logs, and endpoint file integrity telemetry around archive extraction events. Look for tar archives containing symbolic links or hardlinks whose link targets are absolute paths or resolve outside the extraction directory. On hosts that performed extraction, examine filesystem timeline data for new or modified symlinks, hardlinks, configuration files, scripts, package manifests, shell startup files, service definitions, or application files created shortly after archive extraction. Compare modified files against known-good baselines and check whether changes were made by the Node.js process, CI runner, package manager, or application account. If suspicious archives are retained, inspect them with safe offline tooling and list link entries without extracting them. Because public exploit maturity is currently reported as none and there are no known KEV or named threat actor associations, detection should emphasize behavioral evidence: unsafe archive link entries, out-of-directory file creation, and unexpected writes by archive-processing processes.

  • node_modules/tar/package.json
  • "version": "7.5.2"
  • "version":"7.5.2"
  • "tar": "7.5.2"
  • "tar":"7.5.2"
  • node-tar
  • preservePaths
  • SymbolicLink
  • linkpath=/
  • linkpath: /
  • -> /
  • link to /
  • type=SymbolicLink
  • type=Link
  • hardlink to /
  • symlink to /

What your security team should do

  • Inventory all direct and transitive uses of node-tar across applications, build pipelines, developer tooling, containers, and packaged artifacts.
  • Prioritize upgrades for systems that extract archives supplied by users, third parties, package registries, CI jobs, or external integrations.
  • Upgrade to node-tar 7.5.3 or later and regenerate lockfiles to prevent dependency resolution from retaining vulnerable versions.
  • Add archive safety checks that reject absolute paths, parent-directory traversal, hardlinks, and symlinks to absolute targets before extraction.
  • Run archive extraction with low-privilege accounts in isolated temporary directories or containers, never in application roots, home directories, or system paths.
  • Search recent logs and uploaded artifacts for suspicious tar archives containing hardlinks or symlinks with absolute link targets.
  • Monitor build and deployment systems for unexpected file modifications immediately after archive extraction steps.

The record

node-tar is a Tar for Node.js. The node-tar library (<= 7.5.2) fails to sanitize the linkpath of Link (hardlink) and SymbolicLink entries when preservePaths is false (the default secure behavior). This allows malicious archives to bypass the extraction root restriction, leading to Arbitrary File Overwrite via hardlinks and Symlink Poisoning via absolute symlink targets. This vulnerability is fixed in 7.5.3.

Affected packages

Ecosystem Package Introduced Fixed
npm tar 0 7.5.3
Chainguard actions-runner 0 2.331.0-r1
Chainguard code-server 0 4.106.3-r2
Chainguard graalvm-25-ce-nodejs 0 25.0.2-r1
Chainguard kibana-8.17 0 8.17.10-r8
Chainguard kibana-8.17-bitnami 0 8.17.10-r8
Chainguard kibana-8.17-iamguarded 0 8.17.10-r8
Chainguard kibana-8.18 0 8.18.8-r8
Chainguard kibana-8.18-bitnami 0 8.18.8-r8
Chainguard kibana-8.18-iamguarded 0 8.18.8-r8
Chainguard kibana-8.19 0 8.19.10-r2
Chainguard kibana-8.19-iamguarded 0 8.19.10-r2
Chainguard kibana-9.0 0 9.0.8-r8
Chainguard kibana-9.0-bitnami 0 9.0.8-r8
Chainguard kibana-9.0-iamguarded 0 9.0.8-r8
Chainguard kibana-9.1 0 9.1.10-r3
Chainguard kibana-9.1-iamguarded 0 9.1.10-r3
Chainguard kibana-9.2 0 9.2.3-r5
Chainguard kibana-9.2-iamguarded 0 9.2.3-r5
Chainguard kubeflow-centraldashboard 0 1.10.0-r10
Chainguard kubeflow-pipelines-frontend 0 2.15.0-r10
Chainguard lerna 0 9.0.3-r1
Chainguard node-gyp 0 12.2.0-r0
Chainguard npm 0 11.8.0-r0
Chainguard opensearch-dashboards-2 0 2.19.4-r15
Chainguard opensearch-dashboards-2-fips 0 2.19.5-r0
Chainguard opensearch-dashboards-3 0 3.5.0-r0
Chainguard opensearch-dashboards-3-fips 0 3.5.0-r0
Chainguard prism 0 5.14.3-r2
Chainguard pulumi-language-nodejs 0 3.215.0-r1
Chainguard redisinsight 0 3.0.2-r1
Chainguard renovate 0 43.2.4-r0
Chainguard sqlpad 0 7.5.7-r6
Chainguard tileserver-gl 0 5.5.0-r2
Chainguard tileserver-gl-fips 0 5.5.0-r3
Chainguard vitess-22 0 22.0.3-r0
Chainguard vitess-23 0 23.0.1-r0
Wolfi code-server 0 4.106.3-r2
Wolfi kubeflow-centraldashboard 0 1.10.0-r10
Wolfi kubeflow-pipelines-frontend 0 2.15.0-r10
Wolfi lerna 0 9.0.3-r1
Wolfi node-gyp 0 12.2.0-r0
Wolfi npm 0 11.8.0-r0
Wolfi opensearch-dashboards-2 0 2.19.4-r15
Wolfi opensearch-dashboards-3 0 3.5.0-r0
Wolfi prism 0 5.14.3-r2
Wolfi pulumi-language-nodejs 0 3.215.0-r1
Wolfi renovate 0 43.2.4-r0
Wolfi sqlpad 0 7.5.7-r6
Wolfi tileserver-gl 0 5.5.0-r2
Wolfi vitess-22 0 22.0.3-r0
Wolfi vitess-23 0 23.0.1-r0

Related vulnerabilities