LTS-4981 / LTS-5094: bump fast-uri + js-yaml security overrides - #23
Merged
Merged
Conversation
- fast-uri: override floor 3.1.5 -> 3.1.6 (GHSA-5jgf-p345-68v8, CVE-2026-75931). 3.1.5 was itself still inside the vulnerable range (>=3.1.3, <3.1.6) for a host-confusion bug in resolve() on scheme-relative references; patched floors per advisory are 2.4.5 / 3.1.6 / 4.1.3, resolves to 3.1.8 in-tree. - js-yaml: version-scoped override floors bumped for both installed majors (GHSA-2883-xcg3-v3hh, CVE-2026-84375) - maxTotalMergeKeys doesn't count empty merge-source mappings, allowing O(N*K) CPU blowup: - js-yaml@3: ^3.15.1 -> ^3.15.2 (consumed by js-yaml-cloudformation-schema) - js-yaml@4: ^4.3.1 -> ^4.3.2 (direct + other transitive consumers) Kept the version-scoped override split from LTS-4699/4700 so the 3.x consumer isn't force-upgraded onto 4.x (safeLoad was removed in 4.x). Also converted the remaining exact-pinned overrides (qs, jws, fast-xml-builder, path-expression-matcher) to caret ranges - exact pins are exactly how fast-uri's prior override re-aged into a vulnerable range. Left `tmp` alone since it's covered by an unrelated open dependabot PR. Verified via `npm ci` from a clean install + `npm ls fast-uri/js-yaml --all`: the js-yaml 3.x consumer stays on 3.15.2 (not forced to 4.x), fast-uri resolves to 3.1.8, and `npm audit` no longer flags either package. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Central YAML (base), Organization UI (inherited), Workspace UI (inherited) Review profile: ASSERTIVE Plan: Enterprise Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Comment |
MohitSinghBS
approved these changes
Sep 22, 2026
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.
Summary
Fixes two open security tickets by extending this repo's existing
overridesblock inpackage.json. No new packages added, nodependencies/devDependenciesversion bumps — only the override floors moved.LTS-4981 — fast-uri host confusion (GHSA-5jgf-p345-68v8, CVE-2026-75931, CVSS 7.5)
fast-uriskips IDN host canonicalization whenresolve()resolves a scheme-relative reference (//host/) against a scheme-bearing base, so a re-parse of the resolved URI can yield a different host thanresolve()returned — host-confusion / policy-bypass risk for any code that resolves untrusted references and then makes a decision on the resulting host.>=3.1.3, <3.1.6.^3.1.5— already inside the vulnerable range. Bumped the floor to^3.1.6(patched). Resolves to3.1.8in the lockfile.LTS-5094 — js-yaml maxTotalMergeKeys CPU DoS (GHSA-2883-xcg3-v3hh, CVE-2026-84375, CVSS 7.5)
maxTotalMergeKeysdoesn't count empty merge-source mappings, so a small YAML document with a large array of empty mappings merged repeatedly causesO(N*K)CPU work without tripping the configured limit (PoC in the advisory: ~500KB YAML -> ~13s).3.15.2(3.x) /4.3.2(4.x).js-yaml@4direct/transitive, andjs-yaml@3pulled in transitively viajs-yaml-cloudformation-schema(4.x removedsafeLoad, so a bare bump would break that 3.x consumer). Kept the version-scoped override split from LTS-4699/4700 and bumped both floors:"js-yaml@3": "^3.15.1"->"^3.15.2""js-yaml@4": "^4.3.1"->"^4.3.2"Housekeeping while in the overrides block
Converted the remaining exact-pinned override entries (
qs,jws,fast-xml-builder,path-expression-matcher) to caret ranges. Exact pins are exactly how thefast-urioverride above re-aged into a vulnerable range in the first place (3.1.4-> pinned again at3.1.5, itself later vulnerable) — same pattern already applied toip-address/brace-expansionin prior PRs. Lefttmpas an exact pin since it's covered by the separate opentmp+@wdio/clidependabot PR and out of scope here.Why this repo gets a real fix, not a dismissal
browserstack-webdriverio-load-testing-sampledeclares zero runtimedependencies— every entry, including both vulnerable packages, is adevDependency. This is nonetheless a public, customer-facing repo that customers clone andnpm installdirectly, so the team's standing call (consistent with ~10 prior security PRs on this repo, e.g. LTS-4657, LTS-4699/4700, LTS-4750) is to still ship theoverridesfix rather than dismiss the advisory as dev-only.Verification
npm install --package-lock-only— lockfile diff is scoped to exactly the 3 changed package entries (fast-uri,js-yamltop-level,js-yamlunderjs-yaml-cloudformation-schema) pluspackage.json; no incidental peer-marker churn.npm cifrom a clean install (867 packages, nonode_modulescarried over).npm ls fast-uri --all/npm ls js-yaml --allagainst the real installed tree:fast-uri@3.1.8 overridden(single copy, viabrowserstack-node-sdk -> table -> ajv)js-yaml@4.3.2 overridden/dedupedfor every 4.x consumer,js-yaml@3.15.2 overriddenforjs-yaml-cloudformation-schema— confirms the 3.x consumer was not force-upgraded onto 4.x.npm auditno longer flagsjs-yamlorfast-uri.fast-uri@3.1.8,js-yaml@4.3.2,js-yaml@3.15.2cross-checked againstnpm view <pkg>@<ver> dist.integrity..npmrc'smin-release-age=7cooldown: all three target versions published2026-08-23/2026-08-26, well clear of the 7-day gate as of today.Note on existing dependabot PR #4 ("Bump js-yaml")
PR #4 (
dependabot/npm_and_yarn/multi-75e6bc5210, opened 2025-11-18) predates the LTS-4699/4700 version-scoped-override fix and bumps the two installed copies only tojs-yaml@4.1.1/js-yaml-cloudformation-schema'sjs-yaml@3.14.2— both still inside LTS-5094's vulnerable ranges (<4.3.2/<3.15.2) even if merged. It's superseded by this PR; not force-closing it here, leaving it for dependabot to auto-close (or for a maintainer to close) once this merges.Out of scope
Other open dependabot PRs (
lodash,glob,qs,tmp+@wdio/cli,ws+@wdio/*,jws) are untouched.Refs: LTS-4981, LTS-5094
🤖 Generated with Claude Code