Bump tar to 7.5.18 - #5202
Merged
Mike Harder (mikeharder) merged 7 commits intoAug 7, 2026
Merged
Conversation
Co-authored-by: mikeharder <9459391+mikeharder@users.noreply.github.com>
Copilot
AI
changed the title
[WIP] Fix node-tar process crash due to numeric path confusion
Pin node-tar to patched 7.5.18 release
Aug 5, 2026
Member
|
Copilot: do we need to add an override, or can we just update the lockfile? |
Co-authored-by: mikeharder <9459391+mikeharder@users.noreply.github.com>
Contributor
Author
The lockfile alone is sufficient: all transitive ranges accept |
Mike Harder (mikeharder)
marked this pull request as ready for review
August 6, 2026 00:09
Mike Harder (mikeharder)
requested a review
from Timothee Guerin (timotheeguerin)
as a code owner
August 6, 2026 00:09
Mike Harder (mikeharder)
enabled auto-merge (squash)
August 6, 2026 00:10
Timothee Guerin (timotheeguerin)
approved these changes
Aug 6, 2026
|
You may test this build by running Add the following CLI flags
Or with all autorest --version:https://tinyurl.com/22uo23nn --use:https://tinyurl.com/2239lltmor use the following in your autorest configuration: # For changes to autorest core
version: "https://tinyurl.com/22uo23nn"
# For changes to modelerfour
use-extension:
"@autorest/modelerfour": "https://tinyurl.com/2239lltm"If this build is good for you, give this comment a thumbs up. (👍) And you should run `autorest --reset` again once you're finished testing to remove it. |
|
You may test this build by running Add the following CLI flags
Or with all autorest --version:https://tinyurl.com/2dpwuabz --use:https://tinyurl.com/2ydxmmhxor use the following in your autorest configuration: # For changes to autorest core
version: "https://tinyurl.com/2dpwuabz"
# For changes to modelerfour
use-extension:
"@autorest/modelerfour": "https://tinyurl.com/2ydxmmhx"If this build is good for you, give this comment a thumbs up. (👍) And you should run `autorest --reset` again once you're finished testing to remove it. |
Mike Harder (mikeharder)
disabled auto-merge
August 6, 2026 23:45
Mike Harder (mikeharder)
enabled auto-merge (squash)
August 6, 2026 23:45
|
You may test this build by running Add the following CLI flags
Or with all autorest --version:https://tinyurl.com/276oydyn --use:https://tinyurl.com/2273jn4hor use the following in your autorest configuration: # For changes to autorest core
version: "https://tinyurl.com/276oydyn"
# For changes to modelerfour
use-extension:
"@autorest/modelerfour": "https://tinyurl.com/2273jn4h"If this build is good for you, give this comment a thumbs up. (👍) And you should run `autorest --reset` again once you're finished testing to remove it. |
Timothee Guerin (timotheeguerin)
approved these changes
Aug 7, 2026
|
You may test this build by running Add the following CLI flags
Or with all autorest --version:https://tinyurl.com/2845ox6s --use:https://tinyurl.com/2beubqfwor use the following in your autorest configuration: # For changes to autorest core
version: "https://tinyurl.com/2845ox6s"
# For changes to modelerfour
use-extension:
"@autorest/modelerfour": "https://tinyurl.com/2beubqfw"If this build is good for you, give this comment a thumbs up. (👍) And you should run `autorest --reset` again once you're finished testing to remove it. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
tar@7.5.16can crash Node.js while extracting crafted archives containing numeric PAX paths (CVE-2026-59871).Dependency update
tarresolutions to the lowest patched version,7.5.18.pnpm-lock.yaml, removing all7.5.16resolutions.Reachability assessment
pacote, used by@azure-tools/extensionand@chronus/chronusto extract package archives.tardirectly, but archives processed by these dependency flows can reach the affected PAX parser.Original prompt
This section details the Dependabot vulnerability alert you should resolve
<alert_title>node-tar: Process crash via PAX numeric path type confusion</alert_title>
<alert_description>### 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 andstrict: falsecannot intercept the crash.Details
In
pax.tsline 180,parseKVconverts PAX values matching/^[0-9]+$/to numbers via+v. This applies to all fields includingpathandlinkpath. When a PAX header setspathto an all-digit string like"12345", the value becomes the number12345.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 itDirectory, 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:
Extract it:
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.</alert_description>
moderate
https://github.com/isaacs/node-tar/security/advisories/GHSA-w8wr-v893-vjvp https://nvd.nist.gov/vuln/detail/CVE-2026-59871 https://github.com/isaacs/node-tar/commit/e02a4e9e013c4be95302e2eb2047a942b883c27b https://github.com/isaacs/node-tar/releases/tag/v7.5.18 https://github.com/advisories/GHSA-w8wr-v893-vjvpGHSA-w8wr-v893-vjvp, CVE-2026-59871
tar
npm
<vulnerable_versions>7.5.16</vulnerable_versions>
<patched_version>7.5.18</patched_version>
<manifest_path>pnpm-lock.yaml</manifest_path>
<task_instructions>Resolve this alert by updating the affected package to a non-vulnerable version. Prefer the lowest non-vulnerable version (see the patched_version field above) over the latest to minimize breaking changes. Include a Reachability Assessment section in the PR description. Review the alert_description field to understand which APIs, features, or configurations are affected, then search the codebase for usage of those specific items. If the vulnerable code path is reachable, explain how (which files, APIs, or call sites use the affected functionality) and note that the codebase is actively exposed to this vulnerability. If the vulnerable code path is not reachable, explain why (e.g. the affected API is never called, the vulnerable configuration is not used) and note that the update is primarily to satisfy vulnerability scanners rather than to address an active risk. If the advisory is too vague to determine reachability (e.g. 'improper input validation' with no specific API named), state that reachability could not be determined and explain why. Include a confidence level in the reachability assessment (e.g. high confidence if the advisory names a specific API and you confirmed it is or is not called, low confidence if the usage is indirect and hard to trace). If no patched version is available, check the alert_description field for a Workarounds section — the advisory may describe configuration changes or usage patterns that mitigate the vulnerability without a version update. If a workaround is available, apply it and leave a code comment referencing the advisory identifier explaining it is a temporary mitigation. If neither a patch nor a workaround is available, explain in the PR description why the alert cannot be resolved automatically so a human reviewer can take over. Inspect the repository to determine which package manager is used (e.g. lock files, config files, ...