2.1 KiB
wishlist — triage (group D)
Pin: ghcr.io/cmintey/wishlist:v0.67.1. Gates: setup_gate + signup_block (/signup) + app sign-up switch closed by command.
release:cmintey/wishlist@v0.69.0 — REAL, app security fixes + Node runtime
Read the PR diffs:
- PR #818 "remove reset token exposure": in v0.67.1
src/routes/forgot-password/+page.server.tsthe form action creates a reset token for ANY existing e-mail and RETURNS it in the action result (return { success: true, token }). The action runs whether or not SMTP is enabled (only the page UI hides the form). A stranger who knows/guesses a user's e-mail POSTs to /forgot-password and receives the token -> /reset-password -> account takeover (admin included). Severity: CRITICAL (my rating; no GHSA published yet). Login: none. Reachable: YES — after the setup gate opens the app is public; signup_block covers only /signup. (Read from source, not tested live.) - PR #817 "validate list ownership on modifying APIs": any logged-in user could PATCH other users' lists/items (IDOR). Medium; login: any user.
- PR #832 admin "clear sessions" action was not implemented. Low; admin.
- Node.js Oct 2026 CVEs (base node:24-slim re-pinned, PR #829). Runtime; SvelteKit node adapter does not inflate bodies.
release:cmintey/wishlist@v0.68.0 "nodemailer v10 [SECURITY]" — NOT-A-FINDING
GHSA-6vj9-mwq6-2f5v: process-global DNS cache leaks TLS servername across multiple SMTPS transports (multi-tenant). Wishlist uses one transport; our template sets no SMTP. Fixed anyway by the target.
Fix / target
Smallest fix = TARGET: ghcr.io/cmintey/wishlist:v0.69.0 (ghcr tag exists; v prefix matches pin). Same main: yes (0).
Breaking: none found (read v0.68.0, v0.69.0): entrypoint now exec node build (still runs migrate+seed+db:patch first);
pnpm 12 via corepack; prisma migrations auto; manager/owner permission semantics changed (#819). Our healthcheck/command
need only node + node:sqlite — still present (node:24-slim).
Lane: SECURITY_FIX — urgent.
Classifier note: the v0.69.0 summary is a URL fragment; it should quote the "## Security" paragraph. Hit itself is right.