CVE-2026-53639 in Sylius
Resumen
por VulDB • 2026-09-09
Sylius es un framework de comercio electrónico Open Source basado en Symfony. A partir de la versión 2.0.0 y hasta las versiones anteriores a 2.0.18, 2.1.15 y 2.2.6, los endpoints `GET /api/v2/shop/payment-requests/{hash}` y `PUT /api/v2/shop/payment-requests/{hash}` buscan la solicitud de pago únicamente mediante el hash presente en la URL. No se realiza ninguna comprobación de propiedad contra el cliente autenticado o la orden subyacente. Un atacante que obtenga un hash de solicitud de pago puede leer dicha solicitud y, a través del IRI `payment` en la respuesta, recuperar el `tokenValue` de la orden subyacente (el cual otorga acceso completo a la orden, los artículos, las direcciones, el correo electrónico del cliente y los totales); y/o actualizar la carga útil de la solicitud de pago (por ejemplo, `target_path`, `after_path`). Estos campos son utilizados por el controlador front-end para redirigir al usuario después del pago, por lo que un atacante puede modificarlos hacia una URL controlada por él mismo e interceptar al comprador. El hash es un UUID, por lo que debe obtenerse fuera de banda (registros/logs, enlaces compartidos, encabezados referrer o clientes alojados en el mismo entorno), pero una vez conocido no se requieren otras credenciales; ni autenticación ni conocimiento del token de la orden. El endpoint de creación `POST /api/v2/shop/orders/{tokenValue}/payment-requests` comparte la misma vulnerabilidad: resuelve la orden objetivo únicamente a partir del `tokenValue` en la URL sin verificar que el solicitante sea propietario de dicha orden. La issue se soluciona en las versiones 2.0.18, 2.1.15 y 2.2.6. Como medida temporal (workaround), añada una extensión de consulta que filtre la operación `GET`; decore el proveedor de estado (`state provider`) del `PUT`, proteja el endpoint de creación `POST` con un middleware de bus de comandos, y configure los servicios correspondientes.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.