Repository navigation
fix: refresh vulnerable transitive dependencies in lockfile - #999
Open
yotatameguchi-boop wants to merge 1 commit into
Open
yotatameguchi-boop wants to merge 1 commit into
yotatameguchi-boop wants to merge 1 commit into
Conversation
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.
The committed lockfile resolves three dependencies with published security advisories. Refresh their resolutions within the existing dependency ranges so repository installs using
npm cino longer select those versions:bn.js: 4.12.0 → 4.12.5 (production dependency viaasn1.js; GHSA-378v-28hj-76wf, infinite loop).brace-expansion: 5.0.9 → 5.0.12 (development dependency via ESLint/minimatch; GHSA-q2hr-2g5m-vwhr, GHSA-qhr7-859c-m2p7, GHSA-6j4f-fj2g-mc7p, denial of service).serialize-javascript: 7.1.1 → 7.1.2 (development dependency via Mocha; GHSA-gfhx-hw2g-v5hg, XSS).These are dependency-audit findings; this change does not claim an exploitable path through web-push. It updates only
package-lock.json, with no dependency range or application code changes. Published-library consumers resolve dependencies frompackage.json, so this refresh primarily protects repository/CI installations that use the lockfile.Validation on Node.js 24.18.1:
npm ci --ignore-scripts: audit reports 0 vulnerabilities (previously 3).npm run lint: passed.npx mocha --ui tdd 'test/test-*.js' test/testSetGCMAPIKey.js test/testSendNotification.js: 131 passing, including encryption/decryption, VAPID, CLI and HTTPS send/receive tests.git diff --check: passed.Browser integration tests were not run locally.
Reachability follow-up
Local checks distinguish the vulnerable dependencies from exploitation through web-push:
bn.js@4.12.0hangs onnew BN(1).maskn(0).toString(10); the isolated child process was terminated after 1.5 seconds. The updated version returns0. There are nomaskn/imaskncalls in web-push or its ASN.1 use. Injecting the old BN export and trapping those methods during both VAPID encodings and both request-generation encodings completed with zero calls. No remote trigger through the checked web-push paths was identified.brace-expansion@5.0.9throws a stack-overflow RangeError for deeply nested brace input; 5.0.12 returns normally. This is a development dependency and no notification-input path imports it.serialize-javascript@7.1.1emits an unescaped closing script tag for the advisory's crafted function; 7.1.2 does not. The notification API does not import this package, and Mocha's relevant use serializes worker options rather than generating HTML. Browser execution was not tested.These results support treating this PR as dependency hygiene for repository installations, not a demonstrated remote-exploitation fix for the notification API. The checks are scoped and do not establish that all possible downstream integrations are safe.