Security: update Express 4.x stack and clear critical/high advisories #13
No reviewers
Labels
No labels
bug
dependencies
duplicate
enhancement
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
backmeupplz/voicy-payments!13
Loading…
Reference in a new issue
No description provided.
Delete branch "security/express-4.21"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Security update for pay.voicybot.com. It replaces the 2016-era Express stack and clears the rest of the critical/high advisories. osv-scanner: 106 vulnerabilities → 7 (6 moderate, 1 low), with no critical or high left.
Changes
Express stack (first commit, prepared with a subagent):
serve-favicon: it was never required, and it was the last source of the vulnerable fresh@0.3.0. fresh is now 0.5.2.qs^6.16.1 (a single deduped copy)Remaining critical/high (second commit):
Advisories closed include fresh ReDoS GHSA-9qj9-36jm-prpv, qs GHSA-hrpp-h998-j3pp (CVE-2022-24999) plus the newer qs DoS advisories, body-parser, express, send, serve-static, path-to-regexp, morgan, debug, form-data, json-schema and semver.
Deploy path
Easypanel builds this with railpack +
npm ci, so package-lock.json is what ships (nixpacks.toml is no longer used).npm ci --omit=devsucceeds on this branch.Testing
I tested against a throwaway MongoDB 8.0, which is what voicy-db runs since today's migration, on Node 22:
node ./bin/wwwstarts ("Server is up and running", "New stats were generated!")GET /statsforashmanov→ 200,GET /statsfornikita→ 200 (res.json)If-None-Match→ 304 (exercises fresh 0.5.2)GET /→ 404, same as before (there is no route for/)There is no server-side Stripe webhook or raw-body signature check anywhere (payments are retired), so the body-parser bump has nothing of that kind to break.
🤖 Generated with Claude Code