chore(deps): Resolve dependency vulnerabilities (2026-06-19)#423
Conversation
Remediate all non-ignored npm audit advisories reported by better-npm-audit. Fixable advisories are pinned to patched versions (overrides / direct-dep bumps, matching repo convention); the unfixable rest are documented as accepted-risk exceptions in .nsprc. Pinned to patched versions: - ws [GHSA-96hv-2xvq-fx4p, high]: scoped overrides 8.20.1 -> 8.21.0 (@deepnote/runtime-core, @jupyterlab/filebrowser) and 7.5.10 -> 7.5.11 (@jupyterlab/services); direct dep ^6.2.3 -> ^6.2.4; new @deepnote/sql-language-server scoped override 7.5.11 (jsdom@16, test-only). Each consumer's major is preserved. - form-data [GHSA-hmw2-7cc7-3qxx, high]: >=3.0.0 <3.0.5 -> 3.0.5 and >=4.0.0 <4.0.6 -> 4.0.6 (non-overlapping selectors so both copies resolve). - tmp [GHSA-7c78-jf6q-g5cm, high]: direct dep ^0.2.6 -> ^0.2.7. - dompurify (8 advisories): override ^3.4.2 -> pinned 3.4.11 (within mermaid's ^3.3.1; the unpinned caret was leaving 3.4.2 in the lockfile). - tar [GHSA-vmf3-w455-68vh]: override 7.5.13 -> 7.5.16. - js-yaml [GHSA-h67p-54hq-rp68], 4.x copy: direct dep ^4.1.1 -> ^4.2.0. - @babel/core [GHSA-4x5r-pxfx-6jf8, dev-only]: override <7.29.6 -> 7.29.6. Accepted-risk exceptions added to .nsprc (fix needs an unsafe major upgrade or has no backport, and the path is not reachable): - @opentelemetry/core [GHSA-8988-4f7v-96qf]: telemetry is permanently disabled (isTelemetryDisabled() returns true); forcing otel core to 2.x breaks applicationinsights@2.5.0 at runtime. Real fix is the deferred @vscode/extension-telemetry >=1.5.2 major upgrade. - js-yaml 3.x copies [GHSA-h67p-54hq-rp68]: tslint / @istanbuljs/load-nyc-config (dev-only), no 3.x backport exists, and v4 is a breaking API change. Verified: `npx better-npm-audit audit` passes; `tsc --noEmit` passes. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013cwVbCEwTcSYA1kWHy9ggQ
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (1)
🚧 Files skipped from review as they are similar to previous changes (1)
📝 WalkthroughWalkthroughTwo GHSA advisories are added to Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes Possibly related PRs
Suggested reviewers
🚥 Pre-merge checks | ✅ 6✅ Passed checks (6 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. Comment |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #423 +/- ##
===========================
===========================
🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Actionable comments posted: 1
Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In @.nsprc:
- Around line 19-20: The "notes" field in the `.nsprc` file references a
`js-yaml@4` override in package.json that does not actually exist. Either add
the missing `js-yaml@4` override to the overrides section of package.json to
match the security note's rationale, or revise the "notes" text to accurately
reflect the actual dependency configuration without referencing the non-existent
override. Ensure the security rationale in the notes aligns with the real
dependency management setup.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
Review info
Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: d01bdfaf-54a9-4443-a62f-cd18fd02f94e
Files ignored due to path filters (1)
package-lock.jsonis excluded by!**/package-lock.json
Files selected for processing (2)
.nsprcpackage.json
Address CodeRabbit review on #423: the GHSA-h67p-54hq-rp68 note referenced a `js-yaml@4` override that does not exist. The 4.x copy is pinned via the direct-dependency bump to ^4.2.0 (an explicit override is rejected by npm since js-yaml is also a direct dependency). Note text corrected accordingly. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013cwVbCEwTcSYA1kWHy9ggQ
A new undici advisory set covers undici <=6.26.0 (GHSA-vxpw-j846-p89q high WebSocket DoS via fragment count bypass, plus GHSA-p88m-4jfj-68fv, GHSA-35p6-xmwp-9g52, GHSA-g8m3-5g58-fq7m), so the existing `undici@<6.24.0` -> 6.24.1 override no longer remediates the lockfile (6.24.1 is now vulnerable) and the audit-all CI step fails. undici is a dev-only transitive dependency reached via @actions/github and @actions/http-client (both declaring ^6.23.0). Widen the override to `undici@<6.27.0` -> 6.27.0, the patched 6.x release that stays within the consumers' range, preserving their major. Verified: `npx better-npm-audit audit` and `--production` both pass. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LQk7n13UfmeDo2ujy8X4LX
Summary
Resolves all 18 non-ignored npm audit advisories reported by
npx better-npm-audit audit. After this change the audit is clean (🤝 All good!), with only the documented.nsprcaccepted-risk exceptions remaining.Each advisory was researched independently (one subagent per package) to determine the recommended remediation, whether a patched version exists, and whether any upgrade is breaking. Fixable advisories are pinned to patched versions following the repo's existing override/
.nsprcconventions. Major upgrades were avoided; where the only fix is a major bump, the risk is documented as an exception instead.Pinned to patched versions
ws8.20.1 → 8.21.0(@deepnote/runtime-core,@jupyterlab/filebrowser),7.5.10 → 7.5.11(@jupyterlab/services); direct dep^6.2.3 → ^6.2.4; new@deepnote/sql-language-serverscoped override7.5.11(jsdom@16, test-only)form-data>=3.0.0 <3.0.5 → 3.0.5and>=4.0.0 <4.0.6 → 4.0.6tmp^0.2.6 → ^0.2.7dompurify<=3.4.10)^3.4.2 → 3.4.11tar7.5.13 → 7.5.16js-yaml(4.x)^4.1.1 → ^4.2.0@babel/core<7.29.6 → 7.29.6(dev-only)All bumps stay within the major each consumer already accepts, so no breaking changes are expected.
Notes on the trickier cases
ws— the existing scoped overrides (7.5.10/8.20.1) had drifted into the newly-vulnerable range and are bumped to the patched releases. Each consumer is kept on the major it currently resolves to.@jupyterlab/services@7.5.1actually declaresws ^8.11.0but is force-pinned to 7.x by an override inherited from upstream vscode-jupyter; this PR keeps it on the patched 7.x (7.5.11) to stay minimal — aligning it to 8.x is a separate, larger change worth its own PR.form-data— the two selectors must be non-overlapping (>=3.0.0 <3.0.5/>=4.0.0 <4.0.6). An earlier attempt with<3.0.5/<4.0.6leftjsdom@16'sform-data@3.0.4unpatched because3.0.4matched both selectors and npm skips ambiguous overrides.dompurify— the prior override was an unpinned^3.4.2, which let the lockfile keep3.4.2; pinning to3.4.11forces the patched release (within mermaid's^3.3.1).Accepted-risk exceptions added to
.nsprc@opentelemetry/coreisTelemetryDisabled()returnstrue), so the W3C Baggage path is never exercised. The only override fix (otel core2.x) removes symbols still called byapplicationinsights@2.5.0and breaks it at runtime. Real fix = the deferred@vscode/extension-telemetry ≥1.5.2major upgrade.js-yaml3.x copiestslint/@istanbuljs/load-nyc-config(dev-only). No 3.x backport exists and v4 is a breaking API change (safeLoad/safeDumpremoved). The 4.x copy is patched above.These join the 3 pre-existing exceptions (
elliptic,@tootallnate/once,uuid), all with2026-08-15expiry.Verification
npx better-npm-audit audit→🤝 All good!tsc --noEmit(typecheck) → passesnpm run format-fix→ no changes🤖 Generated with Claude Code
https://claude.ai/code/session_013cwVbCEwTcSYA1kWHy9ggQ
Summary by CodeRabbit