[auto-sec] Consolidate aspire dependency security remediations (75 alerts) - #20032
Conversation
|
🚀 Dogfood this PR with:
curl -fsSL https://raw.githubusercontent.com/microsoft/aspire/main/eng/scripts/get-aspire-cli-pr.sh | bash -s -- 20032Or
iex "& { $(irm https://raw.githubusercontent.com/microsoft/aspire/main/eng/scripts/get-aspire-cli-pr.ps1) } 20032" |
This comment has been minimized.
This comment has been minimized.
There was a problem hiding this comment.
🟡 Changes recommended
Extension restore fails on an unavailable mirrored tarball, and the ESM override breaks a CommonJS dependency.
Once you've addressed the issues Copilot identified, you can request another Copilot review.
Pull request overview
Consolidates npm security remediations across extension, templates, tests, and playgrounds without application source changes.
Changes:
- Pins patched transitive dependencies through overrides/resolutions.
- Regenerates npm, pnpm, and Yarn lockfiles.
- Updates Next.js and Vitest to patched releases.
File summaries
| File | Description |
|---|---|
extension/package.json |
Adds security resolutions. |
extension/yarn.lock |
Refreshes resolved extension dependencies. |
playground/AspireWithJavaScript/AspireJavaScript.Angular/package-lock.json |
Locks patched Angular dependencies. |
playground/AspireWithJavaScript/AspireJavaScript.Angular/package.json |
Adds Angular dependency overrides. |
playground/AspireWithJavaScript/AspireJavaScript.NodeApp/package-lock.json |
Locks patched Node dependencies. |
playground/AspireWithJavaScript/AspireJavaScript.NodeApp/package.json |
Overrides qs. |
playground/AspireWithJavaScript/AspireJavaScript.React/package-lock.json |
Locks patched React dependencies. |
playground/AspireWithJavaScript/AspireJavaScript.React/package.json |
Adds React dependency overrides. |
playground/AspireWithJavaScript/AspireJavaScript.Vite/package-lock.json |
Locks patched Vite dependencies. |
playground/AspireWithJavaScript/AspireJavaScript.Vite/package.json |
Adds Vite dependency overrides. |
tests/Aspire.Cli.EndToEnd.Tests/Fixtures/JsPublish/npmscript/package.json |
Overrides qs. |
tests/Aspire.Hosting.CodeGeneration.TypeScript.JsTests/package-lock.json |
Locks patched Vitest dependencies. |
tests/Aspire.Hosting.CodeGeneration.TypeScript.JsTests/package.json |
Pins Vitest packages. |
playground/AspireWithJavaScript/AspireJavaScript.Vue/package-lock.json |
Locks patched Vue dependencies. |
playground/AspireWithJavaScript/AspireJavaScript.Vue/package.json |
Adds Vue dependency overrides. |
playground/AspireWithNode/NodeFrontend/package-lock.json |
Locks patched npm graph. |
playground/AspireWithNode/NodeFrontend/package.json |
Aligns npm and pnpm overrides. |
playground/AspireWithNode/NodeFrontend/pnpm-lock.yaml |
Locks patched pnpm graph. |
playground/BrowserTelemetry/BrowserTelemetry.Web/package-lock.json |
Locks patched browser dependencies. |
playground/BrowserTelemetry/BrowserTelemetry.Web/package.json |
Adds browser dependency overrides. |
playground/FoundryAgentEnterprise/frontend/package-lock.json |
Locks patched frontend dependencies. |
playground/FoundryAgentEnterprise/frontend/package.json |
Overrides @humanfs/node. |
playground/JavaAppHost/api/package-lock.json |
Locks patched API dependencies. |
playground/TypeScriptApps/AzureFunctionsSample/TypeScriptApiService/package.json |
Overrides qs. |
playground/TypeScriptApps/RpsArena/arena-frontend/package-lock.json |
Locks patched browser dependencies. |
playground/TypeScriptApps/RpsArena/arena-frontend/package.json |
Adds browser overrides. |
playground/TypeScriptApps/RpsArena/node-player/package-lock.json |
Locks patched qs graph. |
playground/TypeScriptApps/RpsArena/node-player/package.json |
Overrides qs. |
src/Aspire.Cli/Templating/Templates/java-starter/frontend/package-lock.json |
Updates Java starter lockfile. |
src/Aspire.Cli/Templating/Templates/java-starter/frontend/package.json |
Overrides @humanfs/node. |
src/Aspire.Cli/Templating/Templates/py-starter/frontend/package-lock.json |
Updates Python frontend lockfile. |
src/Aspire.Cli/Templating/Templates/py-starter/frontend/package.json |
Overrides @humanfs/node. |
src/Aspire.Cli/Templating/Templates/py-starter/package-lock.json |
Updates Python starter lockfile. |
playground/JavaAppHost/api/package.json |
Adds telemetry and qs overrides. |
playground/JavaAppHost/frontend/package-lock.json |
Updates Java frontend lockfile. |
playground/JavaAppHost/frontend/package.json |
Overrides @humanfs/node. |
playground/PostgresEndToEnd/PostgresEndToEnd.NodeService/package-lock.json |
Locks patched qs graph. |
playground/PostgresEndToEnd/PostgresEndToEnd.NodeService/package.json |
Overrides qs. |
playground/PythonAppHost/frontend/package-lock.json |
Updates Python playground lockfile. |
playground/PythonAppHost/frontend/package.json |
Overrides @humanfs/node. |
playground/TypeScriptAppHost/express-api/package-lock.json |
Locks patched qs graph. |
playground/TypeScriptAppHost/express-api/package.json |
Overrides qs. |
playground/TypeScriptApps/AzureFunctionsSample/TypeScriptApiService/package-lock.json |
Locks patched qs graph. |
src/Aspire.Cli/Templating/Templates/py-starter/package.json |
Overrides @humanfs/node. |
src/Aspire.Cli/Templating/Templates/ts-starter/frontend/package-lock.json |
Updates TypeScript frontend lockfile. |
src/Aspire.Cli/Templating/Templates/ts-starter/frontend/package.json |
Overrides @humanfs/node. |
src/Aspire.Cli/Templating/Templates/ts-starter/package-lock.json |
Updates TypeScript starter lockfile. |
src/Aspire.Cli/Templating/Templates/ts-starter/package.json |
Overrides @humanfs/node. |
src/Aspire.ProjectTemplates/templates/aspire-ts-cs-starter/frontend/package-lock.json |
Updates project-template lockfile. |
src/Aspire.ProjectTemplates/templates/aspire-ts-cs-starter/frontend/package.json |
Overrides @humanfs/node. |
tests/Aspire.Cli.EndToEnd.Tests/Fixtures/JsPublish/nextjs/package-lock.json |
Locks patched Next.js graph. |
tests/Aspire.Cli.EndToEnd.Tests/Fixtures/JsPublish/nextjs/package.json |
Updates Next.js and overrides. |
tests/Aspire.Cli.EndToEnd.Tests/Fixtures/JsPublish/npmscript/package-lock.json |
Locks patched qs graph. |
Review details
Files not reviewed (26)
- playground/AspireWithJavaScript/AspireJavaScript.Angular/package-lock.json: Generated file
- playground/AspireWithJavaScript/AspireJavaScript.NodeApp/package-lock.json: Generated file
- playground/AspireWithJavaScript/AspireJavaScript.React/package-lock.json: Generated file
- playground/AspireWithJavaScript/AspireJavaScript.Vite/package-lock.json: Generated file
- playground/AspireWithJavaScript/AspireJavaScript.Vue/package-lock.json: Generated file
- playground/AspireWithNode/NodeFrontend/package-lock.json: Generated file
- playground/AspireWithNode/NodeFrontend/pnpm-lock.yaml: Generated file
- playground/BrowserTelemetry/BrowserTelemetry.Web/package-lock.json: Generated file
- playground/FoundryAgentEnterprise/frontend/package-lock.json: Generated file
- playground/JavaAppHost/api/package-lock.json: Generated file
- playground/JavaAppHost/frontend/package-lock.json: Generated file
- playground/PostgresEndToEnd/PostgresEndToEnd.NodeService/package-lock.json: Generated file
- playground/PythonAppHost/frontend/package-lock.json: Generated file
- playground/TypeScriptAppHost/express-api/package-lock.json: Generated file
- playground/TypeScriptApps/AzureFunctionsSample/TypeScriptApiService/package-lock.json: Generated file
- playground/TypeScriptApps/RpsArena/arena-frontend/package-lock.json: Generated file
- playground/TypeScriptApps/RpsArena/node-player/package-lock.json: Generated file
- src/Aspire.Cli/Templating/Templates/java-starter/frontend/package-lock.json: Generated file
- src/Aspire.Cli/Templating/Templates/py-starter/frontend/package-lock.json: Generated file
- src/Aspire.Cli/Templating/Templates/py-starter/package-lock.json: Generated file
- src/Aspire.Cli/Templating/Templates/ts-starter/frontend/package-lock.json: Generated file
- src/Aspire.Cli/Templating/Templates/ts-starter/package-lock.json: Generated file
- src/Aspire.ProjectTemplates/templates/aspire-ts-cs-starter/frontend/package-lock.json: Generated file
- tests/Aspire.Cli.EndToEnd.Tests/Fixtures/JsPublish/nextjs/package-lock.json: Generated file
- tests/Aspire.Cli.EndToEnd.Tests/Fixtures/JsPublish/npmscript/package-lock.json: Generated file
- tests/Aspire.Hosting.CodeGeneration.TypeScript.JsTests/package-lock.json: Generated file
- Files reviewed: 26/53 changed files
- Comments generated: 1
- Review effort level: Balanced
💡 Add a code-review agent skill for context-aware, tailored reviews. Learn more in the docs.
…iations Clears 74 of 75 open Dependabot alerts (all npm ecosystem) across 27 manifests via targeted overrides/resolutions + lockfile regeneration. No application source changes. Ecosystem mechanism: - 25 package-lock.json: npm overrides + npm install --package-lock-only - 1 pnpm-lock.yaml (AspireWithNode/NodeFrontend): pnpm.overrides - 1 yarn.lock (extension): resolutions (dnceng public feed preserved) Key bumps: next 16.2.11->16.3.3 (critical), qs 6.16.0, fast-uri 3.1.6, @humanfs/node 0.16.8, browserslist 4.28.7, js-yaml 4.3.2, nanoid 3.3.18, hono 4.13.5, postcss-selector-parser 7.1.3, @opentelemetry/core 2.8.0, sharp 0.35.4, vitest 4.1.11. extension/yarn.lock: pinned browserslist's transitive data-deps to versions cached on the dnceng public feed (baseline-browser-mapping 2.11.20, electron-to-chromium 1.5.420, node-releases 2.0.54) so the anonymous --frozen-lockfile CI install resolves. Deferred (1 alert): decode-uri-component >=0.5.0 in extension/yarn.lock. The 0.5.0 tarball is not cached on the dnceng public feed (anonymous 401) and the CI feed access is anonymous, so pinning it would break the extension build. Kept at the current cached 0.2.2 pending a maintainer regenerating the lock through the authenticated internal feed to prime the cache. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
3f2ecfd to
1f91553
Compare
This comment has been minimized.
This comment has been minimized.
There was a problem hiding this comment.
🔵 Needs a closer look
The broad multi-manager lockfile refresh and feed-sensitive extension restore require final CI and human validation.
Review details
Files not reviewed (26)
- playground/AspireWithJavaScript/AspireJavaScript.Angular/package-lock.json: Generated file
- playground/AspireWithJavaScript/AspireJavaScript.NodeApp/package-lock.json: Generated file
- playground/AspireWithJavaScript/AspireJavaScript.React/package-lock.json: Generated file
- playground/AspireWithJavaScript/AspireJavaScript.Vite/package-lock.json: Generated file
- playground/AspireWithJavaScript/AspireJavaScript.Vue/package-lock.json: Generated file
- playground/AspireWithNode/NodeFrontend/package-lock.json: Generated file
- playground/AspireWithNode/NodeFrontend/pnpm-lock.yaml: Generated file
- playground/BrowserTelemetry/BrowserTelemetry.Web/package-lock.json: Generated file
- playground/FoundryAgentEnterprise/frontend/package-lock.json: Generated file
- playground/JavaAppHost/api/package-lock.json: Generated file
- playground/JavaAppHost/frontend/package-lock.json: Generated file
- playground/PostgresEndToEnd/PostgresEndToEnd.NodeService/package-lock.json: Generated file
- playground/PythonAppHost/frontend/package-lock.json: Generated file
- playground/TypeScriptAppHost/express-api/package-lock.json: Generated file
- playground/TypeScriptApps/AzureFunctionsSample/TypeScriptApiService/package-lock.json: Generated file
- playground/TypeScriptApps/RpsArena/arena-frontend/package-lock.json: Generated file
- playground/TypeScriptApps/RpsArena/node-player/package-lock.json: Generated file
- src/Aspire.Cli/Templating/Templates/java-starter/frontend/package-lock.json: Generated file
- src/Aspire.Cli/Templating/Templates/py-starter/frontend/package-lock.json: Generated file
- src/Aspire.Cli/Templating/Templates/py-starter/package-lock.json: Generated file
- src/Aspire.Cli/Templating/Templates/ts-starter/frontend/package-lock.json: Generated file
- src/Aspire.Cli/Templating/Templates/ts-starter/package-lock.json: Generated file
- src/Aspire.ProjectTemplates/templates/aspire-ts-cs-starter/frontend/package-lock.json: Generated file
- tests/Aspire.Cli.EndToEnd.Tests/Fixtures/JsPublish/nextjs/package-lock.json: Generated file
- tests/Aspire.Cli.EndToEnd.Tests/Fixtures/JsPublish/npmscript/package-lock.json: Generated file
- tests/Aspire.Hosting.CodeGeneration.TypeScript.JsTests/package-lock.json: Generated file
- Files reviewed: 26/53 changed files
- Comments generated: 0 new
- Review effort level: Balanced
|
Retrying the failed CI jobs for this pull request from the CI run attempt. The rerun is being tracked in the rerun attempt. |
|
Retrying the failed CI jobs for this pull request from the CI run attempt. The rerun is being tracked in the rerun attempt. |
|
Retrying the failed CI jobs for this pull request from the CI run attempt. The rerun is being tracked in the rerun attempt. |
Preserve newer upstream dependency versions and regenerate lockfiles for the security remediations still needed. Retain existing Yarn and pnpm fixes and platform-specific lockfile metadata. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
This comment has been minimized.
This comment has been minimized.
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
Both shipped starter lockfiles now use the dnceng feed, violating their public-registry test and customer restore contract.
Get a fresh assessment by requesting another Copilot review.
Review effort: Balanced
Findings: 2
Open (2)
Files not reviewed (13)
- playground/AspireWithJavaScript/AspireJavaScript.React/package-lock.json: Generated file
- playground/AspireWithNode/NodeFrontend/package-lock.json: Generated file
- playground/AspireWithNode/NodeFrontend/pnpm-lock.yaml: Generated file
- playground/BrowserTelemetry/BrowserTelemetry.Web/package-lock.json: Generated file
- playground/JavaAppHost/api/package-lock.json: Generated file
- playground/PostgresEndToEnd/PostgresEndToEnd.NodeService/package-lock.json: Generated file
- playground/TypeScriptAppHost/express-api/package-lock.json: Generated file
- playground/TypeScriptApps/AzureFunctionsSample/TypeScriptApiService/package-lock.json: Generated file
- playground/TypeScriptApps/RpsArena/node-player/package-lock.json: Generated file
- src/Aspire.Cli/Templating/Templates/py-starter/package-lock.json: Generated file
- src/Aspire.Cli/Templating/Templates/ts-starter/package-lock.json: Generated file
- tests/Aspire.Cli.EndToEnd.Tests/Fixtures/JsPublish/nextjs/package-lock.json: Generated file
- tests/Aspire.Cli.EndToEnd.Tests/Fixtures/JsPublish/npmscript/package-lock.json: Generated file
|
Retrying the failed CI jobs for this pull request from the CI run attempt. The rerun is being tracked in the rerun attempt. |
|
Retrying the failed CI jobs for this pull request from the CI run attempt. The rerun is being tracked in the rerun attempt. |
|
Retrying the failed CI jobs for this pull request from the CI run attempt. The rerun is being tracked in the rerun attempt. |
Regenerate the Python and TypeScript AppHost lockfiles against registry.npmjs.org. Retain the security-patched dependency versions and graph while removing repository feed URLs introduced during merge conflict resolution. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Tests selector3 / 99 PR test projects · 6 PR jobs, from 27 changed files. Selected PR test projects (3 / 99)
Selected PR jobs (6)
How these were chosen — grouped by what changed📦 affected project 📄 📄 📄 📄 📄 📄 📄 📄 📄 📄 📄 📄 📄 📄 📄 📄 📄 🔧 🧪 🧪 🧪 🧪 Job reasons
Selection computed for commit |
There was a problem hiding this comment.
Copilot review overview
🟢 Approval recommended
The dependency overrides and regenerated lockfiles are consistent, with no unresolved code issue found beyond the documented deferred alert.
Review effort: Balanced
Findings: None
Resolved since last review (2)
Files not reviewed (13)
- playground/AspireWithJavaScript/AspireJavaScript.React/package-lock.json: Generated file
- playground/AspireWithNode/NodeFrontend/package-lock.json: Generated file
- playground/AspireWithNode/NodeFrontend/pnpm-lock.yaml: Generated file
- playground/BrowserTelemetry/BrowserTelemetry.Web/package-lock.json: Generated file
- playground/JavaAppHost/api/package-lock.json: Generated file
- playground/PostgresEndToEnd/PostgresEndToEnd.NodeService/package-lock.json: Generated file
- playground/TypeScriptAppHost/express-api/package-lock.json: Generated file
- playground/TypeScriptApps/AzureFunctionsSample/TypeScriptApiService/package-lock.json: Generated file
- playground/TypeScriptApps/RpsArena/node-player/package-lock.json: Generated file
- src/Aspire.Cli/Templating/Templates/py-starter/package-lock.json: Generated file
- src/Aspire.Cli/Templating/Templates/ts-starter/package-lock.json: Generated file
- tests/Aspire.Cli.EndToEnd.Tests/Fixtures/JsPublish/nextjs/package-lock.json: Generated file
- tests/Aspire.Cli.EndToEnd.Tests/Fixtures/JsPublish/npmscript/package-lock.json: Generated file
|
Retrying the failed CI jobs for this pull request from the CI run attempt. The rerun is being tracked in the rerun attempt. |
|
Retrying the failed CI jobs for this pull request from the CI run attempt. The rerun is being tracked in the rerun attempt. |
|
✅ No documentation update needed. Step 5 branch taken: Although Triggered signals (2):
Verification performed: searched Nature of the change: The PR body explicitly states "No application source changes — only lockfiles plus minimal, same-major (summary truncated) |
|
The CI build failed due to test failure(s) that appear unrelated to the PR changes. These may be flaky tests. Suspected flaky test(s):
Suggested actions:
You can re-run the failed jobs from the workflow run page. |

[auto-sec] aspire dependency security consolidation
Canonical
automated-securityremediation PR for microsoft/aspire. Converges the repo's open Dependabot alerts into a single change set. No application source changes — only lockfiles plus minimal, same-majoroverrides/resolutions.Alerts addressed
Clears 74 of 75 open Dependabot alerts (all npm ecosystem): 2 critical, 28 high, 44 moderate, 1 low. 1 deferred (see below).
Mechanism by manifest kind
package-lock.jsonoverrides+npm install --package-lock-onlypnpm-lock.yaml(AspireWithNode/NodeFrontend)pnpm.overrides+pnpm installyarn.lock(extension)resolutions+yarn install(dnceng public feed)Key version bumps
extension/yarn.lock feed handling
The VS Code
extensionresolves yarn deps from the dnceng public Azure Artifacts feed, and CI runsyarn install --frozen-lockfileagainst it anonymously. Only versions already cached on that feed are anonymously downloadable. To keep the frozen install green, browserslist's transitive data-deps are pinned to the feed's cached versions (all satisfy browserslist@4.28.7's caret ranges):Deferred alert (1)
decode-uri-component ≥ 0.5.0 in
extension/yarn.lock(moderate). The0.5.0tarball is not cached on the dnceng public feed (anonymous request returns401); since CI accesses the feed anonymously, pinning it would break the extension build. Left at the current cached0.2.2. Unblock: a maintainer with authenticated access to the internal feed regeneratesextension/yarn.lock(which primes the cache), after which0.5.0becomes anonymously available and this alert clears. Every other extension alert (qs, fast-uri, js-yaml, @humanfs/node, browserslist) is remediated.Verification
Static check of every alert's installed version in the regenerated lockfiles vs first-patched: 74/75 cleared, 1 deferred as above. No private-feed URLs leaked; local
yarn install --frozen-lockfileagainst dnceng passes.Superseded / tracked Dependabot PRs
Closed once this canonical PR is green and merged (closure gate): #19513, #19844, #19845, #19863.
Out of scope (non-npm): #19852 (GitHub Actions), #19075 (Maven).
Idempotency
Branch
dapire/security-deps/aspire-npm-lockfilesfrom latestupstream/main. Labelautomated-security. Prefix[auto-sec].