Vibe Security Radar
Back to Vulnerabilities

GHSA-3j63-5h8p-gf7c

coinbase/x402
Aug 20, 2025
TypeScript
Verified by gpt-5.4-high
Severity
HIGH
Verdict
CONFIRMED
0.95 confidence
AI Tool
Claude CodeClaude Code
Language
TypeScript

x402 SDK vulnerable in outdated versions in resource servers for builders

How AI Introduced This

Yes. The AI-assisted commit fe42994900a445155be7a697de060c5a34f36a2d created the SIWX settle hook and directly wrote the unsafe assumption that `paymentPayload.resource` is always present, then dereferenced `ctx.paymentPayload.resource.url` without a guard. That is the exact behavior fixed in 1ab1c86f016161f27593bf17c9a2333c2201ab10.

Attribution Chain
Advisory
description search
Fix Commit
1ab1c86— coinbase/x402
git blame
typescript/packages/extensions/src/sign-in-with-x/hooks.ts
Squash Merge
fe42994— 43 sub-commits
PR Decomposition
File overlap + AI signal analysis
Bug-Introducing Commit
Bug-Introducing Commits(1)

refactor(extensions/siwx): Migrate to supportedChains[] architecture

sragssFeb 2, 2026typescript/packages/extensions/src/sign-in-with-x/hooks.tsBlame: 90%

Extracted from squash merge fe42994

42 other sub-commits in this PR
bf03da7sragss

feat(extensions): add Sign-In-With-X (SIWX) extension

88bcdb6sragss

simplify; remove future looking code

64f2af2sragss

add integration test

792f1b1sragss

address own comments

8341789sragss

update readme, rm TODO.md

11e73e1sragss

add SIWS

f3d8ab9sragss

cleanup

6123e9csragss

further cleanup

81b77a1sragss

split code path btwn evm and solana

e42ed9csragss

mv solana constants

977e73fsragss

fmt

e4f7e9csragss

lint

dfb9464sragss

rm .claude

1355900sragss

smart wallet verifier

1348f36sragss

add domain param; support outside EVM verifier for contract wallets; Solana CAIP-2 compliant; rm clockskew slop

b9812f1sragss

fix missing type field; update lock file

159b6fcsragss

Add Sign-In-With-X extension spec

56cb905sragss

server & client siwx examples

dc6b2d3sragss

chore: update pnpm-lock.yaml for sign-in-with-x examples

Claude Code·Co-author trailer
3a05c20sragss

Add wrapFetchWithSIWx helper to @x402/extensions

Claude Code·Co-author trailer
03199d9sragss

feat(extensions/siwx): Add lifecycle hooks for simplified DevX

7e0379bsragss

fix(extensions/siwx): Improve hooks robustness and add tests

ad3a6cbsragss

fix(extensions/siwx): Only record payment if settlement succeeded

da4db9esragss

style: Fix JSDoc and lint errors

bb2472csragss

style: Fix formatting and JSDoc in examples

9a0a600sragss

fix(examples): Add getChainId() to signer for proper SIWX chain matching

6f548b7sragss

refactor(extensions/siwx): Extract duplicated getSignerChainId helper

215c477sragss

feat(examples/siwx): Add payment header logging to client

26b9c2esragss

fix(examples/siwx): Improve payment flow logging

818a93dsragss

fix(examples/siwx): Add 300ms delay to avoid facilitator race condition

415c13csragss

refactor(extensions/siwx): Use payment network instead of signer chain detection

4c79c3bsragss

refactor(extensions/siwx): Auto-derive network/domain/uri from context

52cf4c3sragss

refactor(extensions/siwx): Remove time-based fields from declareSIWxExtension

Claude Code·Co-author trailer
f7eb5a8sragss

docs(extensions/siwx): Add smart wallet docs, align signature schemes

Claude Code·Co-author trailer
239d395sragss

chore: regenerate pnpm lockfile

Claude Code·Co-author trailer
7cd74f1sragss

fix(examples/siwx): Add missing JSDoc to onEvent function

a281299sragssCulprit

fix(extensions/siwx): Use result.payer instead of extracting from payload

Claude Code·Co-author trailer
145c163sragssCulprit

feat(extensions/siwx): Add optional nonce tracking to prevent replay attacks

Claude Code·Co-author trailer
b5dcf99sragss

chore: Add changeset for SIWX extension

646031bsragss

fix(examples/siwx): Add missing JSDoc params for onEvent function

bd161beSam Ragsdale

Merge pull request #8 from sragss/siwx-solana-fix

63445e9sragss

fix(extensions/siwx): Require both nonce methods or neither

Deep Verification

by GPT-5.4
CONFIRMED0.95
52 tool calls
95%

The fix changes `createSIWxSettleHook` from `paymentPayload: { payload: unknown; resource: { url: string } }` to `resource?: { url: string }` and adds an early return before using `ctx.paymentPayload.resource.url`. Blame on the pre-fix file attributes those exact lines to fe429949, and pickaxe searches for both `ctx.paymentPayload.resource.url` and `createSIWxSettleHook` show that fe429949 first introduced this code. The screening hypothesis is only partially right: this commit did introduce the optional-resource bug, but there is no evidence in the fix or pickaxe results that missing protocol-version validation is part of this CVE.

AI Signals(1)
Commit8c15e97
Claude CodeCo-author trailerCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>95%
Fix Commits(1)
1ab1c86coinbase/x402description search
References(1)