Repository navigation
Sweep transitive npm CVEs: clear 39 of 75 Dependabot alerts - #1058
Merged
Merged
Conversation
The root resolutions bump in #1050 does not reach this package: it has its own package.json, its own resolutions block and its own yarn.lock, and Node resolves the nearest node_modules first. The client bundle was still built against lodash 4.17.21. The existing pin was itself inside the vulnerable range (<= 4.17.23), so it was holding lodash on a vulnerable version rather than protecting it. Clears 3 alerts: GHSA-r5fr-rjxr-66jc (High), GHSA-f23m-r3pf-42rh, GHSA-xxjr-mmjv-4gpg. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: bf666f99-8d30-4763-878d-b566c0ac2f2d
All 4 Dependabot alerts in this package come from one devDependency: api-extractor 7.47.0 pulls lodash ~4.17.5 and minimatch ~3.0.3. Bumping the direct dependency removes lodash from the tree entirely and moves minimatch from 3.0.8 to 10.2.3, fixing the cause instead of overriding the symptom. A resolutions override was rejected because ~3.0.3 (>= 3.0.3 < 3.1.0) cannot accept any patched version without violating api-extractor's declared range. Verified no runtime impact: dist/ output is byte-identical across all 44 emitted files before and after, and the project's own TypeScript stays at 5.9.3. The review/ change is pre-existing drift, reproducible on unmodified main at 7.47.0. Clears GHSA-r5fr-rjxr-66jc (High), GHSA-23c5-xmqv-rm74 (High), GHSA-f23m-r3pf-42rh, GHSA-xxjr-mmjv-4gpg. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: bf666f99-8d30-4763-878d-b566c0ac2f2d
#1050 added package.json, yarn.lock and build.yml to the trigger paths at the same time as the dorny/paths-filter refactor added them near the top, so each entry ended up listed twice in both the push and pull_request blocks. Deduplicated and kept the explanatory comment. Verified the resulting path set is identical (10 raw entries -> 7, same set), so trigger behaviour is unchanged. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: bf666f99-8d30-4763-878d-b566c0ac2f2d
- webpack 5.90.0 -> 5.104.1 (3 projects, 9 alerts) - express ~4.17.1 -> ^4.22.2 (4 socket.io examples, 8 alerts) - @azure/identity ^2.0.1 / ^3.3.0 -> ^4.13.2 (3 manifests, GHSA-m5vv-6r4h-3vj9) Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: bf666f99-8d30-4763-878d-b566c0ac2f2d
- passport ^0.4.1 -> ^0.7.0 (GHSA-v923-w3x8-wh69; sample never calls req.logout) - serialize-javascript -> 7.1.0 via resolutions (GHSA-qj8w-gfj5-8c6v + CVE-2020-7660); v7 only requires Node 20+, which CI already uses - @octokit/* -> 8.4.1 / 5.1.1 / 9.0.6 / 11.4.4-cjs.2 via plain lockfile refresh - nanoid 3.3.17 -> 3.3.18, picomatch 2.3.1 -> 2.3.2 (both already in range) Lockfile entries touched are written with canonical registry.yarnpkg.com URLs and sha512 integrity, since the internal proxy no longer returns dist.integrity. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: bf666f99-8d30-4763-878d-b566c0ac2f2d
Clears GHSA for esbuild 0.27.3-0.28.0. esbuild 0.28.0 is a breaking release only for its own install script (binary integrity checks); the bundler API is unchanged. Verified with the full chat-client CI sequence, including the extract-api review/ diff gate and 8/8 unit tests. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: bf666f99-8d30-4763-878d-b566c0ac2f2d
This was referenced Aug 28, 2026
bjqian
approved these changes
Aug 30, 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.
Why
Azure/azure-webpubsubhas 75 open Dependabot alerts (11 high, 50 moderate, 14 low). None of them can be fixed by Dependabot itself: every one is a transitive dependency inside a lockfile, so the scheduled version-update PRs never touch them.This PR sweeps everything that can be fixed safely today — 39 of the 75 alerts — in a single change, and documents concrete reasons for the 36 that are deliberately left alone.
What is fixed (39 alerts)
webpack-dev-serverdeps viawebpackexperimental/sdk/y-azure-webpubsub-client,samples/csharp/logstream/sdk/logstream,tools/vscode-azurewebpubsubexpress~4.17.1→^4.22.2lodashtools/awps-tunnel/client@azure/identity^2.0.1/^3.3.0→^4.13.2serialize-javascriptsamples/javascript/scoreboard,website/src/plugins/...@octokit/request/-error/endpoint/plugin-paginate-resteng/copilotminimatch(via@microsoft/api-extractor)sdk/webpubsub-socketio-extensionnanoidtools/azure-socketio-admin-uipicomatchsamples/javascript/scoreboardpassport^0.4.1→^0.7.0samples/javascript/githubchatesbuild^0.27.3→^0.28.2sdk/webpubsub-chat-clientPlus a small CI cleanup:
.github/workflows/build.ymlhad duplicatepush/pull_requestpath filters introduced when #1050 landed alongside thedorny/paths-filterrefactor. The filter set is verified set-identical before and after.Three traps worth knowing about
1. A stale pin can be the vulnerability. Both the root workspace and
tools/awps-tunnel/clientpinnedlodash: 4.17.21inresolutions. The advisory range is>= 4.0.0, <= 4.17.23, patched in 4.18.0 — so the pin was actively holding lodash on a vulnerable version. A sweep has to re-validate existing pins, not just look for missing ones.2.
@microsoft/api-extractor'slatestdist-tag points at 8.0.0, published 2019-02-18. The real newest release is 7.58.13 (2026-08-20).npm install @microsoft/api-extractor@latestsilently downgrades you six years. Bumping to 7.58.13 removeslodashfrom that dependency tree entirely and takesminimatchfrom 3.0.8 to 10.2.3, clearing 4 alerts from one devDependency change.3.
@octokit/plugin-paginate-rest@11.4.1(Dependabot's suggested fix) breaks the peer requirement. It declares@octokit/core >= 6, but@octokit/rest@20uses core 5. The correct fix is just refreshing the lockfile:@octokit/rest@20.1.2is already inside the declared^20.1.1range and pins@octokit/plugin-paginate-rest@11.4.4-cjs.2, which is patched and stays on core 5. Noresolutionsentry needed.A note on lockfile hygiene
The internal package proxy no longer returns
dist.integrity, only a SHA-1shasum. Regenerating any lockfile through it therefore downgrades new entries fromsha512-tosha1-and rewrites URLs to internal feed hosts.Every lockfile entry touched here is written back with the canonical
registry.yarnpkg.comURL and realsha512integrity, recomputed from the tarball bytes. Verified:npm ci(which validates integrity per package) passes intools/vscode-azurewebpubsub, andyarn install --frozen-lockfilepasses everywhere else.Net effect versus
main:sdk/webpubsub-socketio-extension/yarn.lock:sha1-entries 2 → 0, internal-feed URLs 734 → 714eng/copilot/yarn.lock: stays fully clean (0 internal URLs, 0sha1-)package-lock.jsonfiles: 0 → 0sha1-entriesDeliberately NOT included (36 alerts)
webpack-dev-server<= 5.2.5, so the only fix is 5.2.6.react-scripts@5.0.1declareswebpack-dev-server@^4.6.0and itsconfig/webpackDevServer.config.jsuseshttps:(L102),onBeforeSetupMiddleware(L112) andonAfterSetupMiddleware(L123) — all removed in v5. Forcing it would keep CI green (react-scripts buildnever loads the dev server) while silently breakingreact-scripts start.uuidv3()/v5()/v6()are called with a caller-supplied output buffer.image-size<= 2.0.2and 2.0.2 is the latest release. Nothing to upgrade to.react-router+react-router-domreact-router-dom@^6.30.4is a direct dependency oftools/awps-tunnel/clientandreact-router-domhas no patched version at all.vue,vuetify,echarts,element-plus,vue-template-compilervuetify2.7.2 → 3.0.0,element-plus→ 2.0.6,echarts5 → 6). That is a rewrite oftools/azure-socketio-admin-ui, not a dependency bump.@tootallnate/oncehttp-proxy-agent@^4.0.1declares@tootallnate/once@1; the fix is 2.0.1.Validation
Everything below was run locally, not inferred:
tools/vscode-azurewebpubsub—npm ciclean (906 packages), webpack resolves to 5.104.1sdk/webpubsub-socketio-extension— cleanyarn install --frozen-lockfile,yarn build,yarn extract-apiwith noreview/diffsdk/webpubsub-chat-client— the full CI job sequence:install --frozen-lockfile→build→build:bundle→extract-api→git diff --exit-code -- review/→test:unit(8/8 pass)samples/javascript/scoreboard—yarn build:clientsucceeds withserialize-javascript@7.1.0under webpack/tersersamples/javascript/chatapp-microsoft-entra-id—npm install+tsc: 180 pre-existing errors before and after, all inside the repo-root@types/react*, 0 referencing the sample's own sources.@azure/identityv4's only breaking change is dropping Node 16, and CI runs Node 20/22.eng/copilot—@octokit/reststill loads andoctokitFunctions.jsstill exports all 10 functionstools/awps-tunnel/client—yarn build,yarn test(1/1),yarn lintSupersedes
Closes #1054, #1055, #1056 — all three are folded into this branch.