CVE-2026-59871
node-tar: Process crash via PAX numeric path type confusion
node-tar is a tar archive manipulation library for Node.js. Prior to 7.5.18, node-tar coerces all-digit PAX path and linkpath values in src/pax.ts to JavaScript numbers, causing downstream path handling such as normalizeWindowsPath(entry.path).split('/') to throw an uncaught TypeError. This issue is fixed in version 7.5.18.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- None
- Integrity
- None
- Availability
- Low
Exploit likelihood
What each source reports
CVE List Score used
5.3
node-tar: Process crash via PAX numeric path type confusion
node-tar is a tar archive manipulation library for Node.js. Prior to 7.5.18, node-tar coerces all-digit PAX path and linkpath values in src/pax.ts to JavaScript numbers, causing downstream path handling such as normalizeWindowsPath(entry.path).split('/') to throw an uncaught TypeError. This issue is fixed in version 7.5.18.
- Record
CVE-2026-59871- CVSS 3.1
- 5.3 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L - Weakness
- CWE-704
- Updated
- 2026-11-02
EUVDEUVD-2026-42308
5.3
node-tar is a tar archive manipulation library for Node.js. Prior to 7.5.18, node-tar coerces all-digit PAX path and linkpath values in src/pax.ts to JavaScript numbers, causing downstream path handling such as normalizeWindowsPath(entry.path).split('/') to throw an uncaught TypeError. This issue is fixed in version 7.5.18.
- Record
EUVD-2026-42308- CVSS 3.1
- 5.3 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-w8wr-v893-vjvp
5.3
node-tar: Process crash via PAX numeric path type confusion
Summary
A crafted 2.5KB tar archive crashes any Node.js process that extracts it. The PAX header parser coerces all-digit path values to JavaScript numbers, which causes an uncaught TypeError when downstream code calls .split('/') on the numeric value. Error handlers and strict: false cannot intercept the crash.
Details
In pax.ts line 180, parseKV converts PAX values matching /^[0-9]+$/ to numbers via +v. This applies to all fields including path and linkpath. When a PAX header sets path to an all-digit string like "12345", the value becomes the number 12345.
This number flows through Header -> ReadEntry -> Unpack.CHECKPATH, where normalizeWindowsPath(entry.path).split('/') throws a TypeError because numbers don't have .split().
The throw is synchronous during event emission and bypasses all error handling:
strict: falsedoes not help'error'event handlers do not catch it'warn'handlers do not catch it- The TypeError propagates through the event emitter stack as an uncaughtException
Directory, SymbolicLink, and Link type entries reach CHECKPATH and crash. File type entries crash earlier in Header constructor at this.path.slice(-1), but that throw is caught and emitted as a warning only.
PoC
Create a tar archive with a PAX extended header containing an all-digit path:
PAX header body: "18 path=12345\n"
Entry type: Directory (type '5')
Extract it:
const tar = require('tar');
// All of these crash with TypeError: t.split is not a function
tar.extract({ file: 'malicious.tar', cwd: '/tmp/test' });
// Error handlers don't help:
tar.extract({ file: 'malicious.tar', cwd: '/tmp/test', strict: false })
.on('error', (err) => { /* never reached */ })
.on('warn', (code, msg) => { /* never reached */ });
The archive is ~2.5KB. The crash is deterministic on every attempt.
Impact
Denial of service. Any application or tool that extracts untrusted tar archives crashes from a single small file. This includes npm (which uses node-tar to extract packages), CI/CD pipelines, file upload processors, and backup tools. The crash cannot be caught by application-level error handling.
- Record
GHSA-w8wr-v893-vjvp- CVSS 3.1
- 5.3 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L - Weakness
- CWE-704
- Updated
- 2026-11-02
NVD
5.3
node-tar is a tar archive manipulation library for Node.js. Prior to 7.5.18, node-tar coerces all-digit PAX path and linkpath values in src/pax.ts to JavaScript numbers, causing downstream path handling such as normalizeWindowsPath(entry.path).split('/') to throw an uncaught TypeError. This issue is fixed in version 7.5.18.
- Record
CVE-2026-59871- CVSS 3.1
- 5.3 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L - CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-704
- Updated
- 2026-11-02
OSV
5.3
node-tar: Process crash via PAX numeric path type confusion
node-tar is a tar archive manipulation library for Node.js. Prior to 7.5.18, node-tar coerces all-digit PAX path and linkpath values in src/pax.ts to JavaScript numbers, causing downstream path handling such as normalizeWindowsPath(entry.path).split('/') to throw an uncaught TypeError. This issue is fixed in version 7.5.18.
- Record
CVE-2026-59871- CVSS 3.1
- 5.3 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L - Weakness
- CWE-704
- Updated
- 2026-11-02
OSVDEBIAN-CVE-2026-59871
7.5
node-tar is a tar archive manipulation library for Node.js. Prior to 7.5.18, node-tar coerces all-digit PAX path and linkpath values in src/pax.ts to JavaScript numbers, causing downstream path handling such as normalizeWindowsPath(entry.path).split('/') to throw an uncaught TypeError. This issue is fixed in version 7.5.18.
- Record
DEBIAN-CVE-2026-59871- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
Show 10 moreShow less
OSVGHSA-w8wr-v893-vjvp
5.3
node-tar: Process crash via PAX numeric path type confusion
Summary
A crafted 2.5KB tar archive crashes any Node.js process that extracts it. The PAX header parser coerces all-digit path values to JavaScript numbers, which causes an uncaught TypeError when downstream code calls .split('/') on the numeric value. Error handlers and strict: false cannot intercept the crash.
Details
In pax.ts line 180, parseKV converts PAX values matching /^[0-9]+$/ to numbers via +v. This applies to all fields including path and linkpath. When a PAX header sets path to an all-digit string like "12345", the value becomes the number 12345.
This number flows through Header -> ReadEntry -> Unpack.CHECKPATH, where normalizeWindowsPath(entry.path).split('/') throws a TypeError because numbers don't have .split().
The throw is synchronous during event emission and bypasses all error handling:
strict: falsedoes not help'error'event handlers do not catch it'warn'handlers do not catch it- The TypeError propagates through the event emitter stack as an uncaughtException
Directory, SymbolicLink, and Link type entries reach CHECKPATH and crash. File type entries crash earlier in Header constructor at this.path.slice(-1), but that throw is caught and emitted as a warning only.
PoC
Create a tar archive with a PAX extended header containing an all-digit path:
PAX header body: "18 path=12345\n"
Entry type: Directory (type '5')
Extract it:
const tar = require('tar');
// All of these crash with TypeError: t.split is not a function
tar.extract({ file: 'malicious.tar', cwd: '/tmp/test' });
// Error handlers don't help:
tar.extract({ file: 'malicious.tar', cwd: '/tmp/test', strict: false })
.on('error', (err) => { /* never reached */ })
.on('warn', (code, msg) => { /* never reached */ });
The archive is ~2.5KB. The crash is deterministic on every attempt.
Impact
Denial of service. Any application or tool that extracts untrusted tar archives crashes from a single small file. This includes npm (which uses node-tar to extract packages), CI/CD pipelines, file upload processors, and backup tools. The crash cannot be caught by application-level error handling.
- Record
GHSA-w8wr-v893-vjvp- CVSS 3.1
- 5.3 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L - Weakness
- CWE-704
- Updated
- 2026-11-02
OSVUBUNTU-CVE-2026-59871
5.3
node-tar is a tar archive manipulation library for Node.js. Prior to 7.5.18, node-tar coerces all-digit PAX path and linkpath values in src/pax.ts to JavaScript numbers, causing downstream path handling such as normalizeWindowsPath(entry.path).split('/') to throw an uncaught TypeError. This issue is fixed in version 7.5.18.
- Record
UBUNTU-CVE-2026-59871- CVSS 3.1
- 5.3 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L - CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVCLSA-2026-1784596283 No score
TuxCare security update for tar (4 CVEs)
TuxCare rebuilt tar to address 4 CVEs. Fixed in 6.2.1-tuxcare.4.
- Record
CLSA-2026-1784596283- Updated
- 2026-11-02
OSVCLSA-2026-1792074268 No score
TuxCare security update for tar (8 CVEs)
TuxCare rebuilt tar to address 8 CVEs. Fixed in 6.2.0-tuxcare.5.
- Record
CLSA-2026-1792074268- Updated
- 2026-11-02
OSVCLSA-2026-1792074305 No score
TuxCare security update for tar (12 CVEs)
TuxCare rebuilt tar to address 12 CVEs. Fixed in 6.0.2-tuxcare.6.
- Record
CLSA-2026-1792074305- Updated
- 2026-11-02
OSVCLSA-2026-1792164559 No score
TuxCare security update for tar (2 CVEs)
TuxCare rebuilt tar to address 2 CVEs. Fixed in 7.5.17-tuxcare.1.
- Record
CLSA-2026-1792164559- Updated
- 2026-11-02
OSVCLSA-2026-1793101936 No score
TuxCare security update for tar (6 CVEs)
TuxCare rebuilt tar to address 6 CVEs. Fixed in 6.1.0-tuxcare.3.
- Record
CLSA-2026-1793101936- Updated
- 2026-11-02
OSVCLSA-2026-1793102032 No score
TuxCare security update for tar (5 CVEs)
TuxCare rebuilt tar to address 5 CVEs. Fixed in 6.1.6-tuxcare.2.
- Record
CLSA-2026-1793102032- Updated
- 2026-11-02
OSVCLSA-2026-1793307830 No score
TuxCare security update for tar (11 CVEs)
TuxCare rebuilt tar to address 11 CVEs. Fixed in 4.4.19-tuxcare.5.
- Record
CLSA-2026-1793307830- Updated
- 2026-11-02
OSVROOT-APP-NPM-CVE-2026-59871 No score
CVE-2026-59871 in tar - Patched by Root
Root has patched CVE-2026-59871 in the tar package for Root:npm. Multiple fixed versions available.
- Record
ROOT-APP-NPM-CVE-2026-59871- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
tarnpm |
through 7.5.17 | 7.5.18 |
tarTuxCare:npm From an advisory covering 4 CVEs |
6.2.1-tuxcare.0 up to 6.2.1-tuxcare.4, plus listed versions 6.2.16.2.1-tuxcare.16.2.1-tuxcare.26.2.1-tuxcare.3 |
6.2.1-tuxcare.4 |
tarTuxCare:npm From an advisory covering 7 CVEs |
6.2.0-tuxcare.0 up to 6.2.0-tuxcare.5, plus listed versions 6.2.06.2.0-tuxcare.16.2.0-tuxcare.26.2.0-tuxcare.36.2.0-tuxcare.4 |
6.2.0-tuxcare.5 |
tarTuxCare:npm From an advisory covering 11 CVEs |
6.0.2-tuxcare.0 up to 6.0.2-tuxcare.6, plus listed versions 6.0.26.0.2-tuxcare.16.0.2-tuxcare.26.0.2-tuxcare.36.0.2-tuxcare.46.0.2-tuxcare.5 |
6.0.2-tuxcare.6 |
tarTuxCare:npm From an advisory covering 2 CVEs |
7.5.17-tuxcare.0 up to 7.5.17-tuxcare.1, plus listed versions 7.5.17 |
7.5.17-tuxcare.1 |
tarTuxCare:npm From an advisory covering 6 CVEs |
6.1.0-tuxcare.0 up to 6.1.0-tuxcare.3, plus listed versions 6.1.06.1.0-tuxcare.16.1.0-tuxcare.2 |
6.1.0-tuxcare.3 |
tarTuxCare:npm From an advisory covering 5 CVEs |
6.1.6-tuxcare.0 up to 6.1.6-tuxcare.2, plus listed versions 6.1.66.1.6-tuxcare.1 |
6.1.6-tuxcare.2 |
tarTuxCare:npm From an advisory covering 10 CVEs |
4.4.19-tuxcare.0 up to 4.4.19-tuxcare.5, plus listed versions 4.4.194.4.19-tuxcare.14.4.19-tuxcare.24.4.19-tuxcare.34.4.19-tuxcare.4 |
4.4.19-tuxcare.5 |
node-tarDebian:12 |
All versions, plus listed versions 6.1.13+~cs7.0.5-16.1.13+~cs7.0.5-1+deb12u16.1.13+~cs7.0.5-26.1.13+~cs7.0.5-36.1.13+~cs7.0.5-4 Show 17 moreShow less6.2.1+ds1+~cs6.1.13-16.2.1+ds1+~cs6.1.13-106.2.1+ds1+~cs6.1.13-116.2.1+ds1+~cs6.1.13-26.2.1+ds1+~cs6.1.13-36.2.1+ds1+~cs6.1.13-46.2.1+ds1+~cs6.1.13-56.2.1+ds1+~cs6.1.13-66.2.1+ds1+~cs6.1.13-76.2.1+ds1+~cs6.1.13-86.2.1+ds1+~cs6.1.13-96.2.1+~cs7.0.8-17.5.16+~4.0.1-17.5.16+~4.0.1-27.5.19+~4.0.1-17.5.19+~4.0.1-27.5.22+~4.0.1-1 |
None known |
node-tarDebian:13 |
All versions, plus listed versions 6.2.1+ds1+~cs6.1.13-16.2.1+ds1+~cs6.1.13-106.2.1+ds1+~cs6.1.13-116.2.1+ds1+~cs6.1.13-26.2.1+ds1+~cs6.1.13-3 Show 13 moreShow less6.2.1+ds1+~cs6.1.13-46.2.1+ds1+~cs6.1.13-56.2.1+ds1+~cs6.1.13-66.2.1+ds1+~cs6.1.13-76.2.1+ds1+~cs6.1.13-86.2.1+ds1+~cs6.1.13-96.2.1+~cs7.0.8-16.2.1+~cs7.0.8-1+deb13u17.5.16+~4.0.1-17.5.16+~4.0.1-27.5.19+~4.0.1-17.5.19+~4.0.1-27.5.22+~4.0.1-1 |
None known |
Show 13 moreShow less
| Package | Affected | Fixed |
|---|---|---|
node-tarDebian:14 |
before 7.5.19+~4.0.1-1, plus listed versions 6.2.1+ds1+~cs6.1.13-16.2.1+ds1+~cs6.1.13-106.2.1+ds1+~cs6.1.13-116.2.1+ds1+~cs6.1.13-26.2.1+ds1+~cs6.1.13-3 Show 9 moreShow less6.2.1+ds1+~cs6.1.13-46.2.1+ds1+~cs6.1.13-56.2.1+ds1+~cs6.1.13-66.2.1+ds1+~cs6.1.13-76.2.1+ds1+~cs6.1.13-86.2.1+ds1+~cs6.1.13-96.2.1+~cs7.0.8-17.5.16+~4.0.1-17.5.16+~4.0.1-2 |
7.5.19+~4.0.1-1 |
tarnpm |
before 7.5.18 | 7.5.18 |
tarRoot:npm |
before 6.1.11-aikido.10 | 6.1.11-aikido.107.5.11-aikido.47.5.1-aikido.126.1.11-aikido.87.5.17-aikido.14.4.19-aikido.56.2.1-aikido.117.5.15-aikido.27.5.16-aikido.17.5.17-aikido.26.1.11-aikido.94.4.19-aikido.67.4.3-aikido.107.5.15-aikido.37.5.1-aikido.117.5.13-aikido.27.5.9-aikido.37.5.9-aikido.47.5.9-aikido.57.5.15-aikido.44.4.19-aikido.76.2.1-aikido.127.5.9-aikido.67.5.16-aikido.27.4.3-aikido.117.5.13-aikido.37.4.3-aikido.12 |
@rootio/tarRoot:npm |
before 6.1.11-root.io.10 | 6.1.11-root.io.107.5.11-root.io.47.5.1-root.io.126.1.11-root.io.87.5.17-root.io.14.4.19-root.io.56.2.1-root.io.117.5.15-root.io.27.5.16-root.io.17.5.17-root.io.26.1.11-root.io.94.4.19-root.io.67.4.3-root.io.107.5.15-root.io.37.5.1-root.io.117.5.13-root.io.27.5.9-root.io.37.5.9-root.io.47.5.9-root.io.57.5.15-root.io.44.4.19-root.io.76.2.1-root.io.127.5.9-root.io.67.5.16-root.io.27.4.3-root.io.117.5.13-root.io.37.4.3-root.io.12 |
node-tarUbuntu:Pro:14.04:LTS |
All versions, plus listed versions 0.1.18-10.1.18-1ubuntu0.1~esm1 |
None known |
node-tarUbuntu:Pro:16.04:LTS |
All versions, plus listed versions 1.0.3-21.0.3-2ubuntu0.1~esm1 |
None known |
node-tarUbuntu:18.04:LTS |
All versions, plus listed versions 2.2.1-1 |
None known |
node-tarUbuntu:Pro:20.04:LTS |
All versions, plus listed versions 4.4.10+ds1-24.4.10+ds1-2ubuntu14.4.10+ds1-2ubuntu1+esm1 |
None known |
node-tarUbuntu:22.04:LTS |
All versions, plus listed versions 6.1.7+~cs11.3.10-16.1.11+~cs11.3.10-16.1.11+ds1+~cs6.0.6-1 |
None known |
node-tarUbuntu:24.04:LTS |
All versions, plus listed versions 6.1.13+~cs7.0.5-16.1.13+~cs7.0.5-3 |
None known |
node-tarUbuntu:25.10 |
All versions, plus listed versions 6.2.1+~cs7.0.8-1 |
None known |
node-tarUbuntu:26.10 |
All versions, plus listed versions 6.2.1+ds1+~cs6.1.13-107.5.22+~4.0.1-1 |
None known |
node-tarUbuntu:26.04:LTS |
All versions, plus listed versions 6.2.1+~cs7.0.8-16.2.1+ds1+~cs6.1.13-66.2.1+ds1+~cs6.1.13-76.2.1+ds1+~cs6.1.13-10 |
None known |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected, facts | ||
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-59871 is a medium vulnerability (CVSS 5.3) in Isaacs Node-tar, published July 8, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.64%, the 51st percentile. Fixed in tar 7.5.18.
References
github.com/isaacs/node-tar/security/advisories/GHSA-w8wr-v893-vjvp
github.com/isaacs/node-tar/commit/e02a4e9e013c4be95302e2eb2047a942b883c27b
github.com/isaacs/node-tar/releases/tag/v7.5.18
nvd.nist.gov/vuln/detail/CVE-2026-59871
github.com/advisories/GHSA-w8wr-v893-vjvp
github.com/CVEProject/cvelistV5/tree/main/cves/2026/59xxx/CVE-2026-59871.json