Skip to content

chore(deps): bump axios, express, cors, dotenv, mime-types - #5

Merged
chicks-net merged 1 commit into
deployfrom
deps/update-axios-express
Aug 30, 2026
Merged

chicks-net merged 1 commit into
deployfrom
deps/update-axios-express

Conversation

@chicks-net

Copy link
Copy Markdown
Member

Summary

Resolves 9 of 18 npm audit findings from the earlier security review, without any breaking-change downgrades.

  • axios 1.11.0 → 1.20.0 — clears its whole list of fixed advisories (SSRF via NO_PROXY bypass, prototype-pollution-based header/config injection, ReDoS, etc.)
  • express 5.1.0 → 5.2.1 — pulls in an updated router/path-to-regexp (fixes the ReDoS in path-to-regexp 8.0.0–8.3.0)
  • cors 2.8.5 → 2.8.6, dotenv 17.2.1 → 17.4.2, mime-types ^3.0.1 → ^3.0.2 — trivial patch/minor bumps
  • package-lock.json refresh also picked up already-available non-breaking fixes for minimatch/picomatch (dev-tooling ReDoS, not shipped to runtime)

What's left (and why it's not in this PR)

9 vulnerabilities remain (2 critical, 3 high, 4 moderate), all rooted in one chain: node-chartist@1.0.5 (the latest release that exists) depends on jsdom@^9.0.0 (2016-era), which bundles the long-deprecated request package and its old form-data/qs/tough-cookie/uuid.

npm audit fix --force offers to "fix" this by downgrading to node-chartist@0.2.9 — I checked, and that's not a real fix: 0.2.9 depends on an even older jsdom@^7.2.2 that also bundles request. There's no non-vulnerable node-chartist version to move to.

Practical exploitability is low today: this app never passes attacker-controlled URLs through jsdom/request — src/createChart.ts only ever feeds it a static local HTML string for chart rendering, so request's SSRF and friends aren't reachable through anything this service does. Actually eliminating the chain means replacing node-chartist with an actively maintained charting approach, which is a bigger effort — tracking as follow-up, not bundling into this dependency-bump PR.

Test plan

  • npx tsc --noEmit — clean
  • npx jest — all pass except the same pre-existing network-dependent test that needs a real GitHub TOKEN (fails identically on deploy without this change)
  • npm run build succeeds; smoke-tested the built server (GET /, GET /graph without a TOKEN returns the graceful error SVG) against the bumped express/axios
  • Diffed the lockfile package-name set against deploy — only the expected transitive shifts (e.g. axios pulling in agent-base/https-proxy-agent for proxy support), nothing unexpected

🤖 Generated with Claude Code

Resolves 9 of the project's 18 npm-audit findings, including axios's
long list of fixed advisories (SSRF via NO_PROXY bypass, prototype-
pollution-based header/config injection, ReDoS) and express's
transitive path-to-regexp ReDoS (via router's updated dependency).

- axios 1.11.0 -> 1.20.0
- express 5.1.0 -> 5.2.1
- cors 2.8.5 -> 2.8.6
- dotenv 17.2.1 -> 17.4.2
- mime-types ^3.0.1 -> ^3.0.2
- package-lock.json refreshed accordingly (also picks up the
  non-breaking minimatch/picomatch/path-to-regexp fixes already
  available within existing semver ranges)

Remaining 9 vulnerabilities (2 critical, 3 high, 4 moderate) all
trace back to a single unfixable chain: node-chartist@1.0.5 (latest
available) depends on jsdom@^9.0.0 (2016-era), which bundles the
deprecated `request` package and its old form-data/qs/tough-cookie/
uuid. `npm audit fix --force` "fixes" this by downgrading to
node-chartist@0.2.9, which is not a real fix — it depends on an even
older jsdom@^7.2.2 that still bundles `request`. There is no
non-vulnerable node-chartist release to move to.

Practical exploitability here is low: this app never passes
attacker-controlled URLs through jsdom/request (createChart.ts only
feeds it a static local HTML string), so the request-package SSRF
and friends aren't reachable through this app's usage. Eliminating
this chain for real requires replacing node-chartist with an
actively maintained charting approach — tracked as follow-up work,
out of scope for this dependency-bump PR.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Copilot AI lite review requested due to automatic review settings August 30, 2026 21:48

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates several npm dependencies to remediate a subset of existing npm audit findings, primarily by bumping axios and Express-related packages, and refreshing the lockfile to pick up non-breaking transitive fixes.

Changes:

  • Bump direct runtime dependencies: axios → 1.20.0, express → 5.2.1, plus cors, dotenv, mime-types.
  • Refresh package-lock.json to align with the new direct versions and pick up updated transitive packages.

Reviewed changes

Copilot reviewed 1 out of 2 changed files in this pull request and generated no comments.

File Description
package.json Updates direct dependency versions for axios/express and related runtime packages.
package-lock.json Regenerates the resolved dependency tree and integrity metadata to match updated deps.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@chicks-net

chicks-net commented Aug 30, 2026 •

Copy link
Copy Markdown
Member Author

Heads up: the bumped `dotenv` (17.4.2) prints a console line on every startup like:

◇ injected env (0) from .env // tip: ⌁ auth for agents [www.vestauth.com]

I double-checked this isn't a supply-chain compromise — it's genuine code in dotenv's own lib/main.js (a _getRandomTip() self-promo the maintainer added, advertising their other project). Verified against the real npm registry tarball for 17.4.2 and confirmed no unexpected install scripts. Just a heads-up since it's spammy in prod logs (varies per run — saw both the vestauth tip and a dotenvx.com one) and worth knowing about before someone mistakes it for something malicious.

If it bugs you, dotenv supports quieting it (e.g. DOTENV_CONFIG_QUIET=true / { quiet: true } in newer versions) — happy to wire that up if wanted, but leaving it out of this PR since it's cosmetic, not a security or correctness issue.

@chicks-net
chicks-net merged commit 18584b4 into deploy Aug 30, 2026
2 checks passed
@chicks-net
chicks-net deleted the deps/update-axios-express branch August 30, 2026 21:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants