Skip to content

Security: bundled Dependabot bumps + axios supply-chain pin#12

Merged
sbaker merged 1 commit into
mainfrom
security/dependabot-bundle-bumps
Apr 20, 2026
Merged

Security: bundled Dependabot bumps + axios supply-chain pin#12
sbaker merged 1 commit into
mainfrom
security/dependabot-bundle-bumps

Conversation

@sbaker
Copy link
Copy Markdown
Member

@sbaker sbaker commented Apr 20, 2026

Summary

Closes 28 of 29 open Dependabot alerts on the TypeScript CLI in one bundled bump.

The remaining alert is xlsx — SheetJS no longer publishes patches to npm. Tracking that as a separate effort (library swap or CDN install).

Direct dependency bumps

Package From To Notes
axios ^1.6.2 1.15.1 (exact pin) Skips compromised 1.14.1 released 2026-03-31 (UNC1069 supply-chain attack). Also closes GHSA-fvcv-3m26-pcqx, GHSA-3p68-rc4w-qgx5.
yaml ^2.3.4 ^2.8.3 Closes GHSA-48c2-rrv3-qjmp
mammoth ^1.11.0 ^1.12.0
@modelcontextprotocol/sdk ^1.27.1 ^1.29.0
ts-jest ^29.1.1 ^29.4.9 Closes critical GHSA-2w6w-674q-4c4q and 6 other dev-scope handlebars advisories

npm overrides for stuck transitives

  • @xmldom/xmldom ^0.8.12, brace-expansion ^2.0.3, picomatch ^2.3.2
  • follow-redirects ^1.16.0 (axios transitive)
  • hono ^4.12.14, @hono/node-server ^1.19.13 (MCP SDK transitives)
  • express > path-to-regexp ^0.1.13 (RPC server in dist/server.js)
  • router > path-to-regexp ^8.4.0 (MCP SDK express 5 router)

Why exact-pin axios?

Versions 1.14.1 and 0.30.4 were published with a malicious plain-crypto-js@4.2.1 post-install dropper (cross-platform RAT) during a maintainer-account compromise on 2026-03-31. We're on the 1.x line, target 1.15.1 (latest, clean), and pin exact so a ^ range can never resolve back to 1.14.1 if anything weird happens with the registry.

Test plan

  • npm install — clean install, no plain-crypto-js in lockfile (grep -ic plain-crypto-js package-lock.json0)
  • npm ls axiosaxios@1.15.1 exact
  • npm audit — down from 29 alerts to 1 (xlsx only)
  • npm run build — passes
  • npm test — 20/20 suites, 331 tests pass
  • Reviewer: confirm Docker build (prompd-cli/typescript/Dockerfile) still works for the RPC server

Out of scope

Test fix included

tests/version.test.ts updated two mockExecSync.mockReturnValue(... as unknown as Buffer) casts to as unknown as ReturnType<typeof execSync> because the transitive @types/node minor bump (20.19.11 → 20.19.39) tightened Buffer typing. Pre-existing test brittleness, surfaced by the bump.

🤖 Generated with Claude Code

Closes 28 of 29 open Dependabot alerts on the TypeScript CLI (xlsx
remains; no patch available on npm — separate effort).

Direct dependency bumps:
- axios: ^1.6.2 -> 1.15.1 (exact pin to skip compromised 1.14.1
  released 2026-03-31; closes GHSA-fvcv-3m26-pcqx, GHSA-3p68-rc4w-qgx5)
- yaml: ^2.3.4 -> ^2.8.3 (closes GHSA-48c2-rrv3-qjmp)
- mammoth: ^1.11.0 -> ^1.12.0
- @modelcontextprotocol/sdk: ^1.27.1 -> ^1.29.0
- ts-jest: ^29.1.1 -> ^29.4.9 (closes critical GHSA-2w6w-674q-4c4q
  and 6 other dev-scope handlebars advisories)

npm overrides for stuck transitives:
- @xmldom/xmldom ^0.8.12, brace-expansion ^2.0.3, picomatch ^2.3.2
- follow-redirects ^1.16.0 (axios transitive)
- hono ^4.12.14, @hono/node-server ^1.19.13 (MCP SDK transitives)
- express > path-to-regexp ^0.1.13 (RPC server)
- router > path-to-regexp ^8.4.0 (MCP SDK express 5)

Verified after install:
- No plain-crypto-js in lockfile (compromised axios payload)
- axios resolves to 1.15.1 exact
- npm audit reports 1 remaining alert (xlsx, no fix available)
- npm test: 20/20 suites pass, 331 tests pass

Test fix: tests/version.test.ts mockExecSync casts updated to
`as unknown as ReturnType<typeof execSync>` because @types/node
20.19.39 (pulled by transitive minor bump) tightened Buffer typing.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@chatgpt-codex-connector
Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@sbaker sbaker merged commit 7f215ff into main Apr 20, 2026
12 checks passed
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.

1 participant