Skip to main content

x402 SIWX Extension CVE-2026-113603

| EUVDEUVD-2026-105169 MEDIUM
Authorization Bypass Through User-Controlled Key (CWE-639)
2026-10-20 VulnCheck GHSA-vxw2-vmfp-vrg3
6.9
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Pay for cheapest SIWX-protected route
  2. Delivery
    Set PaymentPayload.resource.url to expensive route
  3. Exploit
    Server records settlement against mismatched route
  4. Execution
    Replay SIGN-IN-WITH-X header
  5. Impact
    Repeatedly access unpaid premium route

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Object-level authorization, IDOR prevention
Exploitation Conditions

Exploitation requires that the x402 SIWX (Sign-In-With-X) server extension be enabled and that at least two SIWX-protected routes with differing prices exist (a cheap route and an expensive route). The attacker must be a genuine paying client who completes a real payment for the cheapest route and holds a valid SIGN-IN-WITH-X session, then supplies a mismatched PaymentPayload.resource.url pointing at the expensive route. Limiting factors that reduce real-world risk: the attack only affects routes guarded by this specific extension, it requires a legitimate authenticated SIWX session plus an initial payment (so it is not truly anonymous despite the CVSS PR:N), and it is confined to vulnerable versions - @x402/extensions 2.3.1 through 2.28.0, x402 PyPI 2.11.0 through 2.25.0, and the Go module 2.16.0 through 2.28.0.

Impact

This is a moderate-severity authorization/payment bypass (CVSS 4.0 base 6.9, Medium) rather than a critical infrastructure flaw. The vendor vector (AV:N/AC:L/AT:N/PR:N/UI:N) describes network-reachable, low-complexity exploitation with no user interaction, but impact is deliberately scoped to Low confidentiality and Low integrity with no availability impact (VC:L/VI:L/VA:N) - consistent with unauthorized access to paid content and revenue loss, not code execution or data compromise. A key signal conflict must be flagged: the vector asserts PR:N (unauthenticated), yet the description makes clear the attacker must already be a legitimate PAYING client who completes a genuine payment for the cheapest SIWX route and presents a valid SIGN-IN-WITH-X header - this is effectively an authenticated, economically-gated abuse, so PR:N overstates ease of mass exploitation. No EPSS score, KEV listing, or public exploit was provided in the input, so there is no evidence of active or widespread exploitation; the realistic threat model is targeted abuse by paying customers of a specific x402-monetized API rather than opportunistic internet-wide attacks. A vendor patch (PR #3840) is available and the root cause is confirmed by source diff, so this is a patch-now item for the small population actually running the affected SIWX extension, but it is not a high-urgency emergency for the broader ecosystem.

Exploit ScenarioDerived

An attacker who is a paying client of an x402 SIWX-protected API pays once for the cheapest protected route while setting PaymentPayload.resource.url to point at an expensive premium route. Because settlement is incorrectly recorded against the client-supplied resource URL rather than the actual server request path, the server treats the premium route as paid, letting the attacker repeatedly access it using only a replayed SIGN-IN-WITH-X header without any further payment. No public weaponized exploit was identified, though the vendor fix ships a regression test demonstrating the flow.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 20, 2026

Payment bypass in the x402 Sign-In-With-X (SIWX) server extension lets a client that has paid for one cheap protected route unlock a more expensive route by supplying a mismatched PaymentPayload.resource URL and then reusing only its SIGN-IN-WITH-X header for repeat access. The flaw spans three implementations of the same extension - the npm package @x402/extensions 2.3.1 through 2.28.0, the x402 PyPI package 2.11.0 through 2.25.0, and the Go module github.com/x402-foundation/x402/go/v2 2.16.0 through 2.28.0 - and only manifests when at least two SIWX-protected routes exist at different price points. Exploitation is not anonymous: the attacker must complete a genuine payment for the cheapest route and hold a valid SIWX session, and no public exploit code or confirmed active exploitation was identified at time of analysis; an upstream fix exists in pull request #3840.

RemediationAI

Upstream fix available (PR/commit); released patched version not independently confirmed - the remediation is carried in https://github.com/x402-foundation/x402/pull/3840, which changes SIWX to record settlements against the server request path and to use a client-supplied resource URL only when the settlement has no HTTP request, while passing HTTP transport into settle hooks. Because 2.28.0 (npm and Go) and 2.25.0 (PyPI) are the last versions listed as affected, you must move to a release newer than those that actually contains PR #3840 and confirm the fixed tag with the vendor before treating the deployment as remediated; also re-run integration tests that exercise SIWX across multiple price tiers, since the fix changes settle-hook behavior. If an immediate upgrade is not possible, add a compensating control in front of the SIWX extension that rejects any PaymentPayload.resource URL whose path does not exactly match the server-side request path being served, and verify that settlement records are keyed on the request path rather than on client-asserted values - the trade-off is a bespoke middleware patch that must be maintained and re-validated against each upstream release. As a lower-effort containment, collapse SIWX protection to a single price tier (or one protected route per price) so that a mismatched resource URL cannot yield anything more valuable than the route already paid for; this reduces monetization granularity and does not fix the underlying trust of client-supplied resource identifiers. Monitor settlement logs for recorded resources that differ from the request path observed at the HTTP layer, which is the direct signature of this bypass. See https://github.com/x402-foundation/x402/issues/3838 and https://www.vulncheck.com/advisories/x402-x402-extensions-2.3.1-through-2.28.0-siwx-payment-bypass-via-paymentpayload-resource for vendor status.

Affected VersionsENISA

x402 2.11.0 ≤2.25.0
github.com/x402-foundation/x402/go/v2 2.16.0 ≤2.28.0
@x402/extensions 2.3.1 ≤2.28.0

Affected Packages

euvd github_com_x402_foundation_x402_go_v2 no fix
euvd x402 no fix
euvd x402_extensions no fix

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 3 packages in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

x402 is an HTTP-native payment protocol in which resources return 402 Payment Required and clients satisfy the challenge with a PaymentPayload containing payment requirements and a resource URL. The Sign-In-With-X (SIWX) extension adds a post-payment session layer: after a successful settlement the server issues a SIGN-IN-WITH-X header (a SIWE-style signed payload with domain, address, nonce, chain ID, and resource list) that the client replays to reach the resource without paying again. The root cause is CWE-639, Authorization Bypass Through User-Controlled Key: the settle hooks recorded a successful settlement keyed on the client-supplied PaymentPayload.resource.url rather than on the server-side request path actually being served. Because the paid-session record was stored against whatever resource URL the client claimed, a client could pay for the cheapest SIWX route and then assert the expensive route's URL in the payload, with the server subsequently treating the expensive route as already settled. The affected code lives in typescript/packages/extensions/src/sign-in-with-x/hooks.ts, python/x402/extensions/sign_in_with_x/hooks.py, and go/extensions/signinwithx/server.go, so the same logic defect is replicated across the three language SDKs. Pull request #3840 corrects the design by having Sign-In-With-X record settlement against the server request path, honoring a client-supplied resource URL only when the settlement has no associated HTTP request, and by passing HTTP transport information into settle hooks so that settlement and route identity cannot diverge.

Know when X402 gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (VulnCheck) PRIMARY 6.9 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N
vuln.today AI 5.4 MEDIUM

Network-reachable and low-complexity, but the attacker must hold a valid SIWX session and make a legitimate payment, so PR:L not PR:N; impact is limited to paid-content access and payment-integrity bypass with no availability effect.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
Low
Vulnerable system: Integrity
Low
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

DescriptionCVE.org

The x402 SIWX server extension in @x402/extensions 2.3.1 through 2.28.0, x402 PyPI 2.11.0 through 2.25.0, and Go module 2.16.0 through 2.28.0 contains an authorization bypass vulnerability that allows paying clients to unlock unpaid routes by supplying a mismatched PaymentPayload.resource URL. Attackers can pay for the cheapest SIWX-protected route while setting resource.url to an expensive route, then repeatedly access it using only a SIGN-IN-WITH-X header without further payment.

Threat Intelligence Overview

EPSS Score
0.3%
Top 80% exploitable
Prevalence
Low
niche crypto micropayment middleware, limited production deployment footprint
Data Quality
5 sources
Confidence: Medium

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
Yes
Human Impact· derived
Medium

Priority Score

34
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +34
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy