CVE-2026-13603
Full vulnerability record from the local CVENow database.
Description
The payment integration pretix-oppwa provides support for the payment providers VR Payment, Hobex, and potentially others based on Oppwa's technology. The integration of Oppwa, following their official documentation, includes a step where the user is redirected from the payment provider back to our system with a query parameter like ?resourcePath=/v1/checkouts/{checkoutId}/payment in the URL. Our system is then supposed to fetch the status of the transaction from the URL given by baseUrl + resourcePath. Our plugin pretix-oppwa did so insecurely by concatenating the parameter form the URL to the base domain of the API without further validation and, critically, without a / at the end of the baseUrl. Therefore, an attacker could inject a resourcePath argument in a way that causes pretix to call a different server instead. Since the request includes the access token (API key) of the Oppwa account, this would leak the access token, giving access to data contained in the payment provider's system. This is fixed with the release today by strictly validating the given API URL. After installing the update, we recommend asking your payment provider for a new access token and updating it in pretix.
View original CVE JSON
{
"id": "CVE-2026-13603",
"sourceIdentifier": "655498c3-6ec5-4f0b-aea6-853b334d05a6",
"published": "2026-07-01T14:16:31.910",
"lastModified": "2026-10-25T17:10:00.197",
"vulnStatus": "Deferred",
"cveTags": [],
"descriptions": [
{
"lang": "en",
"value": "The payment integration pretix-oppwa provides support \nfor the payment providers VR Payment, Hobex, and potentially others \nbased on Oppwa's technology. The integration of Oppwa, following their \nofficial documentation, includes a step where the user is redirected \nfrom the payment provider back to our system with a query parameter like\n ?resourcePath=/v1/checkouts/{checkoutId}/payment in the URL. Our system is then supposed to fetch the status of the transaction from the URL given by baseUrl + resourcePath.\n\n\n\nOur plugin pretix-oppwa did so insecurely by \nconcatenating the parameter form the URL to the base domain of the API \nwithout further validation and, critically, without a / at the end of the baseUrl. Therefore, an attacker could inject a resourcePath argument in a way that causes pretix to call a different\n server instead. Since the request includes the access token (API key) \nof the Oppwa account, this would leak the access token, giving access to\n data contained in the payment provider's system. This is fixed with the\n release today by strictly validating the given API URL.\n\n\n\n\n\n\n\n\n\nAfter installing the update, we recommend asking your payment provider for a new access token and updating it in pretix."
},
{
"lang": "es",
"value": "La integración de pagos pretix-oppwa proporciona soporte para los proveedores de pago VR Payment, Hobex y, potencialmente, otros basados en la tecnología de Oppwa. La integración de Oppwa, siguiendo su documentación oficial, incluye un paso en el que el usuario es redirigido desde el proveedor de pago de vuelta a nuestro sistema con un parámetro de consulta como ?resourcePath=/v1/checkouts/{checkoutId}/payment en la URL. Nuestro sistema debe entonces obtener el estado de la transacción de la URL dada por baseUrl + resourcePath.\n\nNuestro plugin pretix-oppwa lo hizo de forma insegura al concatenar el parámetro de la URL al dominio base de la API sin validación adicional y, críticamente, sin una / al final de la baseUrl. Por lo tanto, un atacante podría inyectar un argumento resourcePath de tal manera que pretix llamara a un servidor diferente en su lugar. Dado que la solicitud incluye el token de acceso (clave API) de la cuenta de Oppwa, esto filtraría el token de acceso, dando acceso a los datos contenidos en el sistema del proveedor de pago. Esto se ha solucionado con la versión de hoy mediante la validación estricta de la URL de la API proporcionada.\n\nDespués de instalar la actualización, recomendamos solicitar a su proveedor de pago un nuevo token de acceso y actualizarlo en pretix."
}
],
"affected": [
{
"source": "655498c3-6ec5-4f0b-aea6-853b334d05a6",
"affectedData": [
{
"vendor": "pretix",
"product": "pretix-oppwa",
"defaultStatus": "unaffected",
"collectionURL": "https://pypi.python.org",
"packageName": "pretix-oppwa",
"repo": "https://github.com/pretix/pretix-oppwa",
"versions": [
{
"version": "0",
"lessThan": "1.4.4",
"versionType": "python",
"status": "affected"
}
]
}
]
}
],
"metrics": {
"cvssMetricV40": [
{
"source": "655498c3-6ec5-4f0b-aea6-853b334d05a6",
"type": "Secondary",
"cvssData": {
"version": "4.0",
"vectorString": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:L/SC:H/SI:H/SA:L/E:U/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",
"baseScore": 9.0,
"baseSeverity": "CRITICAL",
"attackVector": "NETWORK",
"attackComplexity": "LOW",
"attackRequirements": "NONE",
"privilegesRequired": "NONE",
"userInteraction": "NONE",
"vulnConfidentialityImpact": "HIGH",
"vulnIntegrityImpact": "HIGH",
"vulnAvailabilityImpact": "LOW",
"subConfidentialityImpact": "HIGH",
"subIntegrityImpact": "HIGH",
"subAvailabilityImpact": "LOW",
"exploitMaturity": "UNREPORTED",
"confidentialityRequirement": "NOT_DEFINED",
"integrityRequirement": "NOT_DEFINED",
"availabilityRequirement": "NOT_DEFINED",
"modifiedAttackVector": "NOT_DEFINED",
"modifiedAttackComplexity": "NOT_DEFINED",
"modifiedAttackRequirements": "NOT_DEFINED",
"modifiedPrivilegesRequired": "NOT_DEFINED",
"modifiedUserInteraction": "NOT_DEFINED",
"modifiedVulnConfidentialityImpact": "NOT_DEFINED",
"modifiedVulnIntegrityImpact": "NOT_DEFINED",
"modifiedVulnAvailabilityImpact": "NOT_DEFINED",
"modifiedSubConfidentialityImpact": "NOT_DEFINED",
"modifiedSubIntegrityImpact": "NOT_DEFINED",
"modifiedSubAvailabilityImpact": "NOT_DEFINED",
"Safety": "NOT_DEFINED",
"Automatable": "NOT_DEFINED",
"Recovery": "NOT_DEFINED",
"valueDensity": "NOT_DEFINED",
"vulnerabilityResponseEffort": "NOT_DEFINED",
"providerUrgency": "NOT_DEFINED"
}
}
],
"ssvcV203": [
{
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"ssvcData": {
"timestamp": "2026-07-01T14:07:27.700177Z",
"id": "CVE-2026-13603",
"options": [
{
"exploitation": "none"
},
{
"automatable": "yes"
},
{
"technicalImpact": "total"
}
],
"role": "CISA Coordinator",
"version": "2.0.3"
}
}
]
},
"weaknesses": [
{
"source": "655498c3-6ec5-4f0b-aea6-853b334d05a6",
"type": "Secondary",
"description": [
{
"lang": "en",
"value": "CWE-20"
},
{
"lang": "en",
"value": "CWE-918"
}
]
}
],
"references": [
{
"url": "https://pretix.eu/about/en/blog/20260701-release-2026-5-3/",
"source": "655498c3-6ec5-4f0b-aea6-853b334d05a6"
}
]
}