Repository navigation
Conversation
…t advisory notes `Audit - All` (better-npm-audit) and `Qlty Check` (osv-scanner) fail on main because the accepted-risk entry for elliptic (GHSA-848j-6mx2-7j84, low) expired on 2026-10-17. No new advisory has been published: npm audit, osv-scanner 2.3.0/2.7.0, an OSV batch query of every locked package and the GitHub Advisory DB agree on the same three advisories for the root lockfile and none for the perf fixture lockfile. elliptic: renewed rather than remediated (ladder rung 5, as in #531). elliptic 6.6.1 (2024-11-13) is still the latest release, the advisory lists no patched version, and the upstream fix PRs (#345, #351, #354) are unmerged. The expiry moves to 2026-11-06 in both .nsprc and osv-scanner.toml, matching braces and sprintf-js (as #327 aligned all exceptions), so one renewal covers all three. The note is corrected: - the nonce k is truncated, producing an incorrect signature; only ECDSA signing with an EC key is affected; - out/extension.web.bundle.js does bundle elliptic (node:crypto -> crypto-browserify), but nothing calls createSign/createVerify/ createECDH; - "native browser crypto" is not a remediation, since @deepnote/convert needs a synchronous createHash; the verified alternative (empty-pkg override plus a web-test-only stub alias) is recorded instead. braces and sprintf-js: exceptions and expiries unchanged; stale or wrong claims in their notes are corrected: - both: "npm audit reports fixAvailable:false" was wrong; npm suggests semver-major downgrades (gulp@3.9.1 / @vscode/vsce@4.0.0, nyc@14.1.1) that leave the vulnerable package installed; - braces: mocha no longer reaches braces since #289 (mocha 11.8 uses chokidar 4); gulp's findup-sync chain and chokidar's ~3.0.2 range are recorded; the maintainer disputes the report (micromatch/braces#70); - sprintf-js: CVE-2026-97058 was rejected by its CNA on 2026-10-12 (NVD: Rejected), but the GHSA is not withdrawn yet. Verified locally: `better-npm-audit audit` exits 1 on main (advisory 1112030) and 0 with this change; `--production` exits 0 on both. osv-scanner 2.3.0 with the repo config exits 1 on main (elliptic 6.6.1) and 0 with this change; the perf fixture lockfile scans clean. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NMBxX24nF2qRaSRtmgH9mB
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info
📝 Walkthrough
Merge Risk: ⚪ Minimal · up to
|
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #574 +/- ##
=====================================
Coverage 38% 38%
=====================================
Files 822 822
Lines 41098 41098
Branches 9044 9044
=====================================
Hits 15622 15622
Misses 23404 23404
Partials 2072 2072 🚀 New features to boost your workflow:
|
npx better-npm-audit audit(Audit - All) andqlty check --filter=osv-scanner(Qlty Check) fail onmainfor one reason: the accepted-risk entry for elliptic (GHSA-848j-6mx2-7j84, low) expired on 2026-10-17. Audit - Production passes.No new advisory has been published. A fresh rescan found the same three advisories for the root
package-lock.json, and none forsrc/test/vscode-notebook-perf/package-lock.json. Sources:npm audit, better-npm-audit (all and--production), osv-scanner 2.3.0 (the version qlty pins) and 2.7.0, a direct OSVquerybatchover all 2,298 lockedname@versionpairs, and the GitHub Advisory DB.Each advisory was assessed separately against the decision ladder from #551: direct bump → lockfile-only → delete/bump a stale override → new override →
.nsprcexception only when no patched release exists. Each assessment was then challenged by two independent reviewers, one on facts and reachability, one on remediation and consistency.Decisions
None is a direct dependency, and no package has a patched release, so rungs 1–4 never apply in their usual form.
elliptic: renew (rung 5), expiry aligned to 2026-11-06
first_patched_version: null. Upstream has had no commit since 2024-11-13, and the fix PRs fix: preserve leading zeros in k-value during ECDSA signing (RFC 6979) indutny/elliptic#345, chore(deps): update dependency tar to v7.5.10 [security] #351 and chore(deps): bump dompurify from 3.3.1 to 3.3.2 #354 are open and unmerged. The parents are all at their latest releases and still require elliptic: crypto-browserify 3.12.1, create-ecdh 4.0.4, browserify-sign 4.2.6, node-stdlib-browser 1.3.1. Same shape as chore(deps): extend elliptic audit exception to 2026-10-17 #531.npm ls elliptic --omit=devis empty.dist/*.esbuild.meta.jsonhas 0 elliptic, browserify-sign or crypto-browserify inputs.out/**andnode_modules/**are excluded from the VSIX.Corrections to the note, after re-checking every claim as #531 did:
Options considered for elliptic and set aside (each tested in a clean copy of the repo)
"elliptic": "npm:empty-pkg@1.0.0"override, plus a 3-linemodule.exports = {}stub aliased in theisWebTestSourcebranch ofbuild/esbuild/build.ts, plus deleting both exception entries.dist/is unchanged. The lockfile loses 5 entries (elliptic, its nested bn.js, hash.js, hmac-drbg, minimalistic-crypto-utils).crypto-browserifybreaks every esbuild build, becausenode-stdlib-browsercallsrequire.resolve('crypto-browserify')when it loads.ellipticbreaks the web test bundle (Could not resolve "elliptic"×3).node-stdlib-browserchanges nothing: npm 10.9.4 leaves the lockfile as it is.cryptoto an empty or native shim in the polyfill plugin: elliptic stays in the lockfile, so neither gate clears. It also breaks@deepnote/convert(createHash is not a function).@mapped/elliptic,@soatok/elliptic-to-noble): a new crypto dependency from little-used publishers, for code that never runs here. Not adopted.braces: exception kept (expiry unchanged), note corrected
There is still no fix. The maintainer disputes the report (micromatch/braces#70), and fix PRs #72, #83, #86 and #89 were closed unmerged. Three claims in the note had gone stale or were wrong:
fixAvailable:false: wrong today. Neither suggested change removes braces, becausejest-message-utilandchokidarstill require it.~3.0.2range: recorded because it means a future 3.1.x fix would need the override raised, not deleted.sprintf-js: exception kept (expiry unchanged), note corrected
The
"argparse@1": "2.0.1"structural alternative already recorded in the note was re-verified and still works. It isn't needed while the exception holds.Verification
mainnpx better-npm-audit auditactiveuntil Fri, 06 Nov 2026npx better-npm-audit audit --production--config=osv-scanner.tomlonpackage-lock.json.nsprcparses as JSON. Its three IDs and expiries matchosv-scanner.tomlexactly.package.json,package-lock.jsonand the build are untouched, so no install, drift or bundle change.dayjs().isAfter(expiry)) and osv-scanner (ignoreUntil) both stop applying an exception at local midnight of the expiry date. CI runs in UTC, so these exceptions stop applying at 2026-11-06T00:00Z.Heads-up
All three exceptions expire on 2026-11-06. Unless upstream ships fixes (or GitHub withdraws the sprintf-js GHSA after the CVE rejection), both gates will go red again that day. The notes now record the fallback remediations: the elliptic empty-pkg + stub path, and the sprintf-js
argparse@1override.🤖 Generated with Claude Code
https://claude.ai/code/session_01NMBxX24nF2qRaSRtmgH9mB
Summary by CodeRabbit