deploy.sh / export-pdf.sh: path traversal and network exposure
Author: lukesw55Created Jul 2, 2026Updated Jul 2, 2026
Found a few security issues in the helper scripts while reviewing them before installing the skill.
export-pdf.sh
- The static server binds all interfaces (
server.listen(0, ...)with no host). While an export runs, anyone on the same network can reach it. - The file server joins the request path onto the serve dir without normalization, so
GET /../../<anything>reads files outside the deck folder. - If the export throws, the Chromium processes and the server are left running.
deploy.sh
- The grep/sed asset-copy pipeline follows
../-style references, so files outside the deck folder can be copied into the Vercel upload, which is public. - The
npm install -g vercelfallback changes the user's global environment as a side effect of running a deploy. - Temp dirs leak when the script exits early.
I have fixes ready as two commits: localhost-only bind plus request-path containment for the export server, and safer asset parsing, EXIT-trap cleanup and npx-only invocation for deploy. Same CLI, same flow, same output messages. Root scripts and the plugins/ copies updated together.
Opening a PR with these shortly. I also have a couple of unrelated improvements (richer extract-pptx metadata, repo validation CI) that I'd propose separately so each stays reviewable.
Source: zarazhangrui/frontend-slides