Skip to content

chore(deps): override tar-fs and ws to clear transitive CVEs#35

Merged
JohnRDOrazio merged 1 commit intomainfrom
chore/dependabot-security-overrides
May 2, 2026
Merged

chore(deps): override tar-fs and ws to clear transitive CVEs#35
JohnRDOrazio merged 1 commit intomainfrom
chore/dependabot-security-overrides

Conversation

@JohnRDOrazio
Copy link
Copy Markdown
Member

Summary

Resolves all four open Dependabot security alerts (3× tar-fs, 1× ws) by adding npm overrides that force patched versions of transitive deps that pagedjs-cli@0.4.3 → puppeteer@^20.9.0 → @puppeteer/browsers@1.4.6 would otherwise hold back.

Package Before After Why
tar-fs 3.0.4 3.1.2 Clears 3 CVEs (symlink bypass, extraction escape, link-following) — all patched at 3.1.1+
ws 8.13.0 8.20.0 Clears DoS-via-many-headers — patched at 8.17.1+

npm install reports 0 vulnerabilities post-override.

Why an upstream bump won't fix this

  • pagedjs-cli@0.4.3 is the latest stable. 0.5.0-beta.2 would pull in puppeteer@22.x (which uses safe tar-fs), and 1.0.0-alpha.2 is abandoned with even older puppeteer.
  • pagedjs-cli's GitHub repo has zero releases tagged — the project is in maintenance mode.
  • Dependabot can only nudge top-level deps; it can't move tar-fs past what puppeteer@20.x permits.

Practical exploitability

Low across the board, but worth fixing anyway:

  • Deploy and Build Test both use PUPPETEER_SKIP_DOWNLOAD: 'true', so tar-fs (the Chrome-tarball extractor used at install time by @puppeteer/browsers) is never invoked — we use system Chrome via PUPPETEER_EXECUTABLE_PATH.
  • ws is used as a client to local Chrome's DevTools port; the DoS vuln is on the WebSocket server side. Not externally reachable.

Test plan

  • Build governance docs passes on this PR (validates the PDF build still renders correctly with overridden tar-fs/ws)
  • After merge, confirm Dependabot alert dashboard goes to 0 open alerts

Future

Once pagedjs-cli ships a stable on puppeteer@22.x or newer, drop the overrides — they'll be redundant.

Dependabot opened four high-severity alerts on transitive dependencies
of pagedjs-cli@0.4.3 → puppeteer@^20.9.0 → @puppeteer/browsers@1.4.6:

- tar-fs@3.0.4: three vulnerabilities (CVE chain — symlink validation
  bypass, extraction outside target dir, link following / path
  traversal). All resolved in tar-fs 3.1.1+.
- ws@8.13.0: DoS when handling a request with many HTTP headers.
  Resolved in ws 8.17.1+.

pagedjs-cli has no stable release past 0.4.3 (only 0.5.0-beta.x and
abandoned 1.0.0-alpha.x), and its puppeteer 20.x pin is end-of-life,
so dependabot can't bump these transitively. Until pagedjs-cli ships a
new stable on a current puppeteer, npm overrides force the patched
versions across the tree:

  "overrides": {
    "tar-fs": "^3.1.2",
    "ws":     "^8.18.0"
  }

Verified post-override:
- npm install reports 0 vulnerabilities
- npm ls tar-fs:  3.0.4 → 3.1.2
- npm ls ws:      8.13.0 → 8.20.0
- pandoc + standalone HTML build succeeds locally
- PDF build will be validated by the Build Test workflow on this PR

Practical exploitability for our setup is low regardless: deploy uses
PUPPETEER_SKIP_DOWNLOAD=true, so tar-fs (the Chrome-tarball extractor)
is never invoked, and ws is used as a client to local Chrome's
DevTools port, not a server accepting external traffic. This change
is hygiene — silence the alerts, and don't ship a known-vulnerable
lockfile.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@JohnRDOrazio JohnRDOrazio merged commit a8cdddf into main May 2, 2026
2 checks passed
@JohnRDOrazio JohnRDOrazio deleted the chore/dependabot-security-overrides branch May 2, 2026 03:25
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