CVE-2026-23950: node-tar has Race Condition in Path Reservations via Unicode Ligature Collisions on macOS APFS
Vulnerability summary
CVE-2026-23950 is a high (CVSS 8.8) Improper Handling of Unicode Encoding vulnerability in isaacs node-tar. EPSS estimates a 0.26% chance of exploitation in the next 30 days, higher than 18.3% of scored vulnerabilities. 1 public exploit is recorded.
Public exploit (GitHub, Date unknown)
Source freshness unavailable
How is this decided?Advisory lineage
Upstream 0 · Downstream 2 · Related 1Timeline
- 20-01-2026PublishedVulnerability first disclosed.
- 01-09-2026Last modifiedVulnerability information updated.
Description
node-tar,a Tar for Node.js, has a race condition vulnerability in versions up to and including 7.5.3. This is due to an incomplete handling of Unicode path collisions in the `path-reservations` system. On case-insensitive or normalization-insensitive filesystems (such as macOS APFS, In which it has been tested), the library fails to lock colliding paths (e.g., `ß` and `ss`), allowing them to be processed in parallel. This bypasses the library's internal concurrency safeguards and permits Symlink Poisoning attacks via race conditions. The library uses a `PathReservations` system to ensure that metadata checks and file operations for the same path are serialized. This prevents race conditions where one entry might clobber another concurrently. This is a Race Condition which enables Arbitrary File Overwrite. This vulnerability affects users and systems using node-tar on macOS (APFS/HFS+). Because of using `NFD` Unicode normalization (in which `ß` and `ss` are different), conflicting paths do not have their order properly preserved under filesystems that ignore Unicode normalization (e.g., APFS (in which `ß` causes an inode collision with `ss`)). This enables an attacker to circumvent internal parallelization locks (`PathReservations`) using conflicting filenames within a malicious tar archive. The patch in version 7.5.4 updates `path-reservations.js` to use a normalization form that matches the target filesystem's behavior (e.g., `NFKD`), followed by first `toLocaleLowerCase('en')` and then `toLocaleUpperCase('en')`. As a workaround, users who cannot upgrade promptly, and who are programmatically using `node-tar` to extract arbitrary tarball data should filter out all `SymbolicLink` entries (as npm does) to defend against arbitrary file writes via this file system entry name collision issue.
CVSS metrics
7 scores · 7 sources · 1 version- OSV · UbuntuEcosystem advisory · calculated5.9MediumCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:NDiffers
- OSV · DebianEcosystem advisory · calculated5.9MediumCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:NDiffers
- OSV · WolfiEcosystem advisory · calculated8.8HighCVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:H/A:L
- OSV · NpmEcosystem advisory · calculated8.8HighCVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:H/A:L
- OSV · ChainguardEcosystem advisory · calculated8.8HighCVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:H/A:L
- NVDNIST5.9MediumCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:NDiffers
EPSS trend
Probability
0.26%
Chance of exploitation in the next 30 days
Percentile
18%
Versus all other CVEs
30-day change
Increase +0.01 pp
From 0.26% on 04-10-2026
Known exploited
Compare KEV catalogsNot in the CISA KEV catalog.
Not in the ENISA CNW catalog.
Not in the CIRCL catalog.
Public exploits
1 foundNode Tar
Maturity: poc
Weaknesses
CWE · root cause- CWE-176Improper Handling of Unicode EncodingThe product does not properly handle when an input contains Unicode encoding.
- CWE-352Cross-Site Request ForgeryThe web application does not, or cannot, sufficiently verify whether a request was intentionally provided by the user who sent the request, which could have originated from an unauthorized actor.
- CWE-367Time-of-check Time-of-use (TOCTOU) Race ConditionThe product checks the state of a resource before using that resource, but the resource's state can change between the check and the use in a way that invalidates the results of the check.
Affected systems
Known conditions: network-reachable, no authentication, user interaction (CVSS vector). Other conditions: not stated in public data.
Chainguard81 products
- actions-runner< 2.331.0-r1
- code-server< 4.106.3-r4
- drupal-11.3< 11.3.13-r3
- gitlab-rails-ce-18.1< 18.1.6-r31
- gitlab-rails-ce-18.10All versions (No fix recorded)
Wolfi29 products
- code-server< 4.106.3-r4
- jupyter-base-notebook< 7.6.3-r2
- katib-earlystopping< 0.19.0-r31
- katib-suggestion-goptuna-compat< 0.19.0-r40
- katib-suggestion-hyperband< 0.19.0-r31
Debian1 product
- node-tarAll versions (No fix recorded) | < 6.2.1+~cs7.0.8-1+deb13u1 | < 6.2.1+ds1+~cs6.1.13-7
Npm1 product
- tar< 7.5.4
Ubuntu1 product
- node-tarAll versions (No fix recorded)
6 vendors · 115 products
References
16 links- github.com/isaacs/node-tar/security/advisories/GHSA-r6q2-hw4h-h46wX Refsource CONFIRMREPORTAdvisoryWEBExploitMitigationVendor Advisory
- github.com/isaacs/node-tar/commit/3b1abfae650056edfabcbe0a0df5954d390521e6X Refsource MISCREPORTFIXWEBPatch
Show all 16 references
- github.com/isaacs/node-tarPACKAGE