Маршрут обновления клиента в EverShop объявлен с «access»: «public» в packages/evershop/src/modules/customer/api/updateCustomer/route.json, что приводит к тому, что промежуточное программное обеспечение аутентификации администратора вызывает next() без проверки вызывающего абонента, и никакое промежуточное программное обеспечение сеанса клиента не защищает маршрут; единственное промежуточное программное обеспечение в цепочке анализирует тело JSON. Затем обработчик в updateCustomer.js загружает клиента по uuid, взятому из URL-пути, и записывает предоставленные поля обратно в эту запись, хешируя пароль, если он указан, без проверки того, что вызывающая сторона владеет записью. Таким образом, неаутентифицированный запрос, содержащий известный uuid клиента, может перезаписать адрес электронной почты и пароль этого клиента и прочитать обновленную запись из ответа 200, захватив учетную запись и заблокировав ее владельца. UUID клиента доступны через ссылки электронной почты с подтверждением заказа и административные URL-адреса.
Версия 2.2.1 меняет маршрут на «доступ»: «частный».
Показать оригинальное описание (EN)
The customer update route in EverShop is declared with "access": "public" in packages/evershop/src/modules/customer/api/updateCustomer/route.json, which causes the admin authentication middleware to call next() without checking the caller, and no customer-session middleware guards the route; the only middleware in the chain parses the JSON body. The handler in updateCustomer.js then loads the customer by the uuid taken from the URL path and writes the supplied fields back to that record, hashing a password if one is provided, without verifying that the caller owns the record. An unauthenticated request carrying a known customer uuid can therefore overwrite that customer's email address and password and read back the updated record from the 200 response, taking over the account and locking out its owner. Customer uuids are exposed through order confirmation email links and administrative URLs. Version 2.2.1 changes the route to "access": "private".
Характеристики атаки
Последствия
Строка CVSS v4.0