CVE-2026-113603
La extensión del servidor SIWX de x402 presente en @x402/extensions desde la 2.3.1 hasta la 2.28.0, en x402 de PyPI desde la 2.11.0 hasta la 2.25.0, y en el módulo de Go desde la 2.16.0 hasta la 2.28.0, contiene una vulnerabilidad de elusión de autorización que permite a los clientes que pagan desbloquear rutas no pagadas al proporcionar una URL de PaymentPayload.resource que no coincide. Los atacantes pueden pagar por la ruta protegida con SIWX más barata y, al mismo tiempo, establecer resource.url en una ruta más cara; después, pueden acceder repetidamente a ella usando únicamente una cabecera SIGN-IN-WITH-X, sin realizar ningún pago adicional.
Traducción automática del texto original de NVD (en inglés).
CVSS
- Puntuación base
- 6.9
- Versión
- 4.0
- Vector
- 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/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Probabilidad de explotación (EPSS)
FIRST aún no ha puntuado esta CVE (habitual en CVEs muy recientes o rechazadas).
EPSS (Exploit Prediction Scoring System, de FIRST) estima la probabilidad de que una vulnerabilidad sea explotada en 30 días. Complementa a CVSS (impacto) y a CISA KEV (explotación confirmada).
Técnicas ATT&CK
Cómo se explota esta vulnerabilidad y qué consigue el atacante, en el lenguaje de MITRE ATT&CK.
- Explotación
T1190Exploit Public-Facing Applicationinitial access90 %
Vector AV:N/PR:N/UI:N (explotación remota sin autenticación) y CWE-639: el bypass de autorización permite acceder a rutas no pagadas; no hay impacto ATT&CK explícito en el texto.
Inferido por nuestro agente de análisis a partir de la descripción oficial, el vector CVSS y la CWE, y comprobado por un supervisor. Puede contener errores.
Mitigaciones ATT&CK que cubren estas técnicas
Tecnologías afectadas (2)
⚠ Inferidas por IA a partir de la descripción — NVD aún no ha analizado esta CVE; no son CPE verificados.
CWE
- CWE-639
Referencias
Mostrar las 6 referencias
- https://github.com/x402-foundation/x402/blob/go/v2.28.0/go/extensions/signinwithx/server.go
- https://github.com/x402-foundation/x402/blob/npm-@x402/extensions@v2.28.0/typescript/packages/extensions/src/sign-in-with-x/hooks.ts
- https://github.com/x402-foundation/x402/blob/pypi-x402@v2.25.0/python/x402/extensions/sign_in_with_x/hooks.py
- https://github.com/x402-foundation/x402/issues/3838
- https://github.com/x402-foundation/x402/pull/3840
- https://www.vulncheck.com/advisories/x402-x402-extensions-2.3.1-through-2.28.0-siwx-payment-bypass-via-paymentpayload-resource
JSON original (NVD)
Mostrar
{
"id": "CVE-2026-113603",
"cveTags": [],
"metrics": {
"cvssMetricV31": [
{
"type": "Primary",
"source": "disclosure@vulncheck.com",
"cvssData": {
"scope": "UNCHANGED",
"version": "3.1",
"baseScore": 6.5,
"attackVector": "NETWORK",
"baseSeverity": "MEDIUM",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N",
"integrityImpact": "LOW",
"userInteraction": "NONE",
"attackComplexity": "LOW",
"availabilityImpact": "NONE",
"privilegesRequired": "NONE",
"confidentialityImpact": "LOW"
},
"impactScore": 2.5,
"exploitabilityScore": 3.9
}
],
"cvssMetricV40": [
{
"type": "Secondary",
"source": "disclosure@vulncheck.com",
"cvssData": {
"Safety": "NOT_DEFINED",
"version": "4.0",
"Recovery": "NOT_DEFINED",
"baseScore": 6.9,
"Automatable": "NOT_DEFINED",
"attackVector": "NETWORK",
"baseSeverity": "MEDIUM",
"valueDensity": "NOT_DEFINED",
"vectorString": "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/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X",
"exploitMaturity": "NOT_DEFINED",
"providerUrgency": "NOT_DEFINED",
"userInteraction": "NONE",
"attackComplexity": "LOW",
"attackRequirements": "NONE",
"privilegesRequired": "NONE",
"subIntegrityImpact": "NONE",
"vulnIntegrityImpact": "LOW",
"integrityRequirement": "NOT_DEFINED",
"modifiedAttackVector": "NOT_DEFINED",
"subAvailabilityImpact": "NONE",
"vulnAvailabilityImpact": "NONE",
"availabilityRequirement": "NOT_DEFINED",
"modifiedUserInteraction": "NOT_DEFINED",
"modifiedAttackComplexity": "NOT_DEFINED",
"subConfidentialityImpact": "NONE",
"vulnConfidentialityImpact": "LOW",
"confidentialityRequirement": "NOT_DEFINED",
"modifiedAttackRequirements": "NOT_DEFINED",
"modifiedPrivilegesRequired": "NOT_DEFINED",
"modifiedSubIntegrityImpact": "NOT_DEFINED",
"modifiedVulnIntegrityImpact": "NOT_DEFINED",
"vulnerabilityResponseEffort": "NOT_DEFINED",
"modifiedSubAvailabilityImpact": "NOT_DEFINED",
"modifiedVulnAvailabilityImpact": "NOT_DEFINED",
"modifiedSubConfidentialityImpact": "NOT_DEFINED",
"modifiedVulnConfidentialityImpact": "NOT_DEFINED"
}
}
]
},
"affected": [
{
"source": "disclosure@vulncheck.com",
"affectedData": [
{
"repo": "https://github.com/x402-foundation/x402",
"vendor": "x402-foundation",
"product": "@x402/extensions",
"versions": [
{
"status": "affected",
"version": "2.3.1",
"versionType": "semver",
"lessThanOrEqual": "2.28.0"
}
],
"packageURL": "pkg:npm/%40x402/extensions",
"defaultStatus": "unaffected"
},
{
"repo": "https://github.com/x402-foundation/x402",
"vendor": "x402-foundation",
"product": "x402",
"versions": [
{
"status": "affected",
"version": "2.11.0",
"versionType": "semver",
"lessThanOrEqual": "2.25.0"
}
],
"packageURL": "pkg:pypi/x402",
"defaultStatus": "unaffected"
},
{
"repo": "https://github.com/x402-foundation/x402",
"vendor": "x402-foundation",
"product": "github.com/x402-foundation/x402/go/v2",
"versions": [
{
"status": "affected",
"version": "2.16.0",
"versionType": "semver",
"lessThanOrEqual": "2.28.0"
}
],
"packageURL": "pkg:golang/github.com/x402-foundation/x402/go/v2",
"defaultStatus": "unaffected"
}
]
}
],
"published": "2026-10-20T16:17:10.087",
"references": [
{
"url": "https://github.com/x402-foundation/x402/blob/go/v2.28.0/go/extensions/signinwithx/server.go",
"source": "disclosure@vulncheck.com"
},
{
"url": "https://github.com/x402-foundation/x402/blob/npm-@x402/extensions@v2.28.0/typescript/packages/extensions/src/sign-in-with-x/hooks.ts",
"source": "disclosure@vulncheck.com"
},
{
"url": "https://github.com/x402-foundation/x402/blob/pypi-x402@v2.25.0/python/x402/extensions/sign_in_with_x/hooks.py",
"source": "disclosure@vulncheck.com"
},
{
"url": "https://github.com/x402-foundation/x402/issues/3838",
"source": "disclosure@vulncheck.com"
},
{
"url": "https://github.com/x402-foundation/x402/pull/3840",
"source": "disclosure@vulncheck.com"
},
{
"url": "https://www.vulncheck.com/advisories/x402-x402-extensions-2.3.1-through-2.28.0-siwx-payment-bypass-via-paymentpayload-resource",
"source": "disclosure@vulncheck.com"
}
],
"vulnStatus": "Received",
"weaknesses": [
{
"type": "Primary",
"source": "disclosure@vulncheck.com",
"description": [
{
"lang": "en",
"value": "CWE-639"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "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."
}
],
"lastModified": "2026-10-20T16:17:10.087",
"sourceIdentifier": "disclosure@vulncheck.com"
}