CVE-2026-23950: node-tar has Race Condition in Path Reservations via Unicode Ligature Collisions on macOS APFS
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.
Security readout for executives and security teams
Plain-English summary
A malicious tar archive can exploit filename collisions on macOS filesystems to defeat node-tar’s safety sequencing. During extraction, this race may redirect writes through symbolic links, overwriting files outside the intended destination. Systems are primarily at risk when they extract untrusted archives using node-tar before version 7.5.4.
Executive priority
Prioritize remediation for internet-facing upload processors, CI systems, package services, and employee tools extracting external archives on macOS. Upgrade promptly because successful exploitation can overwrite files beyond the intended extraction directory. Lower the priority only after confirming no vulnerable version, relevant filesystem, or untrusted archive path exists.
Technical view
Before 7.5.4, node-tar’s PathReservations normalization does not reliably equate Unicode names that APFS or HFS+ may treat as colliding. Conflicting archive entries can therefore execute concurrently, bypassing serialization between metadata checks and writes. Combined with symbolic links, the race enables arbitrary file overwrite. The CVSS 3.1 score is 8.8.
Likely exposure
Likely exposure is concentrated in applications, build systems, developer tools, or services running node-tar below 7.5.4 on macOS APFS or HFS+ and extracting attacker-controlled archives. Direct and transitive dependencies both matter. Environments that never process untrusted tar data have materially lower practical exposure.
Exploitation context
Exploitation requires a crafted archive, a vulnerable extraction workflow, and the relevant filesystem behavior. The supplied record indicates user interaction because a victim workflow must process the archive. It reports successful testing on macOS APFS. The bundle marks this CVE as not listed in KEV and provides no evidence of active exploitation.
Researcher notes
The patch changes reservation-key normalization to better match filesystem equivalence, using NFKD with locale-aware case conversion. The demonstrated security consequence depends on a timing race between colliding entries and symbolic-link handling. The source bundle specifically reports macOS APFS testing and names APFS/HFS+ exposure; broader filesystem applicability is not established here.
Mitigation direction
Upgrade node-tar to version 7.5.4 or later.
Update parent dependencies and lockfiles where node-tar is included transitively.
If upgrading is delayed, reject all SymbolicLink entries during programmatic extraction of arbitrary archives.
Restrict archive ingestion to trusted sources and isolate extraction with minimal filesystem permissions.
Validation and detection
Inventory direct and transitive node-tar versions, confirming the resolved runtime version is 7.5.4 or later.
Identify macOS APFS or HFS+ workflows that extract archives from untrusted or user-controlled sources.
Confirm SymbolicLink entries are rejected wherever upgrading is delayed.
Run safe regression tests for Unicode-colliding filenames inside an isolated test directory after remediation.
Generated from the cited source records. This long-tail analysis has not been individually reviewed by a named human.
Potential ATT&CK relevance
Conservative CVE-to-ATT&CK context
These mappings and lookup hints may be relevant to the vulnerability behavior, CWE, affected product, or exposure path. Glexia-inferred context is not an official MITRE, ATT&CK, CWE, or CVE Program mapping.
ATT&CK lookup starting points
Use these exact CWE pages and searches to review the Glexia ATT&CK library from this CVE's weakness and description context.
cwe · low confidence lookup
CWE-176: Exact CWE lookup
Use the exact CWE identifier as the starting point before reviewing related ATT&CK behavior. Open the exact CWE lookup page first, then review the ATT&CK searches from that MITRE weakness context. This is a Glexia lookup hint, not an official ATT&CK mapping.
CWE-352: User-session and phishing behavior lookup
Client-side and session-facing weaknesses should be reviewed alongside initial-access and user-execution behaviors. Open the exact CWE lookup page first, then review the ATT&CK searches from that MITRE weakness context. This is a Glexia lookup hint, not an official ATT&CK mapping.
Use the exact CWE identifier as the starting point before reviewing related ATT&CK behavior. Open the exact CWE lookup page first, then review the ATT&CK searches from that MITRE weakness context. This is a Glexia lookup hint, not an official ATT&CK mapping.
The CVE wording references file access or upload behavior, so file telemetry and web shell review may help. This is a Glexia inferred lookup path, not an official MITRE, ATT&CK, or CVE Program mapping.
These fields come from the CVE record and ADP containers, not from Glexia's Take. They preserve time-varying source decisions such as CISA SSVC, KEV status, CVSS metrics, and provider references.
We collect every scored CVSS vector available in the official CNA and ADP containers. When more than one version is present, the table keeps the source vectors side by side instead of collapsing them into the highest score.
CWE links open Glexia weakness intelligence pages with official CWE context, developer remediation guidance, and related CVE mappings.
CWE-176 · source CWE mapping
Improper Handling of Unicode Encoding
Improper Handling of Unicode Encoding represents a recurring weakness pattern that can create exploitable paths when design, validation, or implementation controls are missing.
Cross-Site Request Forgery (CSRF) represents a recurring weakness pattern that can create exploitable paths when design, validation, or implementation controls are missing.
Time-of-check Time-of-use (TOCTOU) Race Condition represents a recurring weakness pattern that can create exploitable paths when design, validation, or implementation controls are missing.