Case · DiggingBeagle record

x402 Solana facilitator parsed token approval as a paid transfer

The TypeScript Solana facilitator did not verify the token-instruction discriminator before accepting a parseable instruction as a transfer, enabling local payment-verification bypass.

Scope

Solana token-program x402 TypeScript facilitator; exact schemes v1 and v2.

Assessment profile

Assessment method
Setting
research demonstration
Exploitation
demonstrated
Evidence
Grade B
Remediation
fixed reported
AI role
AGAINST AI
Basis and provenance

CASE-2026-X402-SOLANA-APPROVAL-AS-PAYMENT: A locally constructed ApproveChecked instruction was parsed as TransferChecked, allowing verification to pass without a token transfer in V12 testing. Evidence comes from SRC-2026-V12-X402-25-FINDINGS. Published technical statements or controlled results are not verified production-loss counts. No impact band is assigned because the observed outcome and its denominator do not establish a comparable severity measure.

Assessed Oct 24, 2026 using diggingbeagle.assessment/1.

At a glance

Mechanism and trust boundary

  1. 01

    Prepare a Solana payment-proof instruction

    A malicious buyer constructs an instruction whose data fields resemble the expected checked token transfer.

    Boundary: Buyer transaction data / facilitator verification

  2. 02

    Substitute ApproveChecked for TransferChecked

    The v1/v2 exact facilitator parsed the third token instruction without validating the opcode; token approval and token transfer shared the relevant data layout.

    Boundary: Instruction discriminator / payment semantics

  3. 03

    Pass a local check without moving funds

    The verifier can treat approval as payment even though no merchant token transfer occurred in the researcher’s local reproduction.

    Boundary: Syntactic transaction parse / economically settled transfer

Timeline

  1. Aug 12, 2026
    Event type unspecified

    Researchers privately report the critical x402 issue

    V12 says this vulnerability was reported to maintainers with two other critical findings.

  2. Aug 20, 2026
    Event type unspecified

    Critical-finding fixes completed

    V12 dates completion of fixes for the three critical findings by August 20, ahead of their public report.

  3. Oct 22, 2026
    Event type unspecified

    Solana proof-validation bypass publicly described

    V12 separated this merchant-side verification defect from buyer-side payment authorization and wallet login defects.

  4. Oct 22, 2026
    disclosure

    Public disclosure

Claims & evidence

CLM-X402-SOLANA-01A locally constructed ApproveChecked instruction was parsed as TransferChecked, allowing verification to pass without a token transfer in V12 testing.supported

Basis: reported finding

Link to claim
CLM-X402-SOLANA-ENRICH-OPCODEApproveChecked (0x0d) and TransferChecked (0x0c) share compatible layouts; the vulnerable parser skipped the discriminator, and V12 locally obtained an accepted payment result without a transfer.supported

Basis: reported finding

Link to claim

Implications

The vulnerability harms a seller or resource provider by accepting an unpaid request, rather than draining an agent wallet. V12’s reproduction was local and did not prove fraudulent resource delivery on-chain or in a production facilitator.

Controls and mitigations

  • Use x402 Solana components with the instruction-type validation fix; verify token-program ID, instruction discriminator, actual account debits and credited destination rather than interpreting parseable fields as settlement.

Unknowns and contradictions

  • No chain transaction or service-access fraud in production is documented.

Sources and citation

Material revision history

  1. Oct 24, 2026 · Canonical change recorded · new in release · revision 188