Sylius — это платформа электронной коммерции с открытым исходным кодом на Symfony. Во многих компонентах LiveComponent магазина существует аутентифицированная уязвимость небезопасной прямой ссылки на объект (IDOR) из-за непроверенных идентификаторов ресурсов, принятых через параметры #[LiveArg]. В отличие от реквизитов, которые защищены @checksum LiveComponent, аргументы полностью контролируются пользователем — любое действие, которое принимает идентификатор ресурса через #[LiveArg] и загружает его с помощью ->find() без проверки владения, уязвимо.
Адрес оформления заказа FormComponent (действиеaddressFieldUpdated): принимает адрес с помощью #[LiveArg] и загружает его без проверки владения, раскрывая имя, фамилию, компанию, номер телефона, улицу, город, почтовый индекс и страну другого пользователя. Cart WidgetComponent (действие RefreshCart): принимает идентификатор корзину через #[LiveArg] и загружает любой заказ непосредственно из репозитория, отображая общую сумму заказа и количество товаров. Cart SummaryComponent (действие RefreshCart): принимает идентификатор корзину через #[LiveArg] и загружает любой заказ непосредственно из репозитория, отображая промежуточный итог, скидку, стоимость доставки, налоги (исключенные и включенные) и общую сумму заказа.
Поскольку sylius_order содержит как активные корзины (state=cart), так и завершенные заказы (state=new/fulfilled) в одном и том же пространстве идентификаторов, IDOR корзины предоставляет данные всех заказов, а не только активных корзин. Проблема исправлена в версиях: 2.0.16, 2.1.12, 2.2.3 и выше.
Показать оригинальное описание (EN)
Sylius is an Open Source eCommerce Framework on Symfony. An authenticated Insecure Direct Object Reference (IDOR) vulnerability exists in multiple shop LiveComponents due to unvalidated resource IDs accepted via #[LiveArg] parameters. Unlike props, which are protected by LiveComponent's @checksum, args are fully user-controlled - any action that accepts a resource ID via #[LiveArg] and loads it with ->find() without ownership validation is vulnerable. Checkout address FormComponent (addressFieldUpdated action): Accepts an addressId via #[LiveArg] and loads it without verifying ownership, exposing another user's first name, last name, company, phone number, street, city, postcode, and country. Cart WidgetComponent (refreshCart action): Accepts a cartId via #[LiveArg] and loads any order directly from the repository, exposing order total and item count. Cart SummaryComponent (refreshCart action): Accepts a cartId via #[LiveArg] and loads any order directly from the repository, exposing subtotal, discount, shipping cost, taxes (excluded and included), and order total. Since sylius_order contains both active carts (state=cart) and completed orders (state=new/fulfilled) in the same ID space, the cart IDOR exposes data from all orders, not just active carts. The issue is fixed in versions: 2.0.16, 2.1.12, 2.2.3 and above.
Характеристики атаки
Последствия
Строка CVSS v4.0