Correct brace-expansion ranges in GHSA-mh99-v99m-4gvg: fix was backported to 1.x, 2.x and 3.x - #8878
Open
TechPro01 wants to merge 1 commit into
Conversation
…x and 3.x The single range (introduced 0, fixed 5.0.8) reports 1.1.17, 2.1.3, 3.0.3, 3.0.4 and 3.0.5 as vulnerable, but all five carry the fix. Split into per-branch ranges. 4.x has no patched release, so its range continues to 5.0.8.
github-actions
Bot
changed the base branch from
main
to
TechPro01/advisory-improvement-8878
July 29, 2026 21:47
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.
GHSA-mh99-v99m-4gvg/CVE-2026-14257currently uses a single range forbrace-expansion:{ "introduced": "0" }, { "fixed": "5.0.8" }Under npm/semver ordering that marks every version below
5.0.8as vulnerable. But the fix was backported to the 1.x, 2.x and 3.x maintenance branches, so five already-patched releases are currently reported as vulnerable:1.1.17,2.1.3,3.0.3,3.0.4,3.0.5.The package carries
maintenance-v1,maintenance-v2andmaintenance-v3dist-tags, which is consistent with the backports.Proposed ranges
{ "introduced": "0" }, { "fixed": "1.1.17" }, { "introduced": "2.0.0" }, { "fixed": "2.1.3" }, { "introduced": "3.0.0" }, { "fixed": "3.0.3" }, { "introduced": "4.0.0" }, { "fixed": "5.0.8" }Note the last pair is deliberate: 4.x has no patched release —
4.0.1(2025-06-11) is the newest 4.x and is still vulnerable — so the range from4.0.0correctly continues to5.0.8, i.e. a 4.x user's only fix is the 5.x major.First patched version per branch
1.1.172.1.33.0.34.0.1is the last 4.x5.0.8How this was determined
Behaviourally, per version, against the entry point npm actually resolves — not by grepping for a marker and not from advisory metadata. Each version was installed in an isolated project and exercised with an input whose unbounded expansion exceeds the new cap:
Results (all measured, not inferred):
1.0.0,1.1.161.1.172.0.0,2.1.22.1.33.0.0,3.0.1,3.0.23.0.3,3.0.4,3.0.54.0.0,4.0.15.0.75.0.8Cross-checking both ranges against those 16 measured versions with an OSV range evaluator: the current range mis-classifies 5 of 16; the proposed range mis-classifies 0 of 16.
Two notes for anyone verifying this themselves:
package.jsonismain: "index.js"with noexports. Some of those releases also ship a fixed build underdist/that nothing resolves to, so the presence of a patcheddist/(or of an advisory file in the tarball) does not mean the installed entry point is fixed —2.1.2is exactly this case. Check the filerequire.resolve()returns.default, 5.x exportsexpand.Not changed
database_specific.last_known_affected_version_rangeis left as<= 5.0.7. It's still defensible as an upper bound on the highest affected version, and I'd rather flag it than edit a field whose exact intended semantics I haven't confirmed — happy to update it if maintainers prefer.One advisory, ranges only; no other fields touched.