Skip to content

fix: drop @profullstack/coinpay-onboard from the web app (zod CVE) (0.15.1) - #337

Merged
ralyodio merged 1 commit into
masterfrom
fix/drop-coinpay-onboard
Oct 26, 2026
Merged

ralyodio merged 1 commit into
masterfrom
fix/drop-coinpay-onboard

Conversation

@ralyodio

Copy link
Copy Markdown
Contributor

I merged #336 while Socket's Pull Request Alerts check was failing (my mistake). The flagged problem: @profullstack/coinpay-onboard pulled in zod@3.25.76 (GHSA-mrhx-c7xc-m3w5, high: memory exhaustion validating oversized constrained collections, fixed in 4.6.6), plus the MCP SDK and express, all for its CLI/MCP server.

The web app needs only three things from that package: create a checkout session, verify the webhook signature, read the webhook. They now live in src/lib/server/coinpay.js with the same behaviour: the same endpoint, an HMAC-SHA256 over t.body with a 5-minute window, and payment.confirmed/payment.forwarded counted as paid. The package is removed, and zod resolves to 4.6.7 again.

bun run test:ci passes 840/841 locally; the only failure is the known-flaky tests/cli/exit.test.js. The phone credit tests sign with the inlined signWebhook.

🤖 Generated with Claude Code

….15.1)

#336 was merged with Socket's "Pull Request Alerts" check failing: the package
pulled zod 3.25.76 (GHSA-mrhx-c7xc-m3w5, memory exhaustion validating oversized
constrained collections, fixed in 4.6.6) plus the MCP SDK and express, all for
its CLI/MCP. The app only needs three things from it, now in
src/lib/server/coinpay.js with the same behaviour: createCheckoutSession,
verifyWebhook (HMAC-SHA256 "t.body", 5 min), readWebhook. zod is back to 4.6.7.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

ThreatCrush Security Scan

17 finding(s)

MEDIUM: 13 | LOW: 4

Severity Rule Location
MEDIUM js-unescaped-html-sink src/app/blog/[slug]/page.jsx:38
MEDIUM js-unescaped-html-sink src/app/blog/[slug]/page.jsx:66
MEDIUM js-unescaped-html-sink src/app/faq/page.jsx:57
MEDIUM js-unescaped-html-sink src/app/layout.jsx:142
MEDIUM js-unescaped-html-sink src/app/layout.jsx:146
MEDIUM js-unescaped-html-sink src/app/page.jsx:50
MEDIUM js-open-redirect src/app/phone/page.jsx:70
MEDIUM redos-nested-quantifier src/lib/auth/dns-name.js:88
MEDIUM redos-nested-quantifier src/lib/chat/voice-mode.js:116
MEDIUM redos-nested-quantifier src/lib/chat/voice-mode.js:121
MEDIUM js-unescaped-html-sink src/lib/components/chat/MessageItem.jsx:85
MEDIUM js-unescaped-html-sink src/lib/components/chat/MessageItem.jsx:130
MEDIUM js-unescaped-html-sink src/lib/components/PitFooter.jsx:15
LOW secret-generic-credential src/app/api/auth/register-anon/route.test.js:32
LOW secret-jwt tests/debug-sms.js:10
LOW secret-generic-credential tests/private-key-import-export.test.js:252
LOW secret-generic-credential tests/private-key-import-export.test.js:264

Snippets are redacted; ThreatCrush never prints matched credential material.

@ralyodio
ralyodio merged commit 02998f9 into master Oct 26, 2026
11 checks passed
@ralyodio
ralyodio deleted the fix/drop-coinpay-onboard branch October 26, 2026 13:17
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