Уязвимости оплаты: проверка цены, заказа и статуса на сервере
Как защитить интернет-магазин от ошибок бизнес-логики: серверный расчёт суммы, проверка валюты и подтверждение оплаты через доверенный канал.
Коротко о главном
- Чем опасно
- Выдача товара без подтверждённой оплаты.
- С чего начать защиту
- Рассчитывайте сумму и допустимые скидки на сервере по актуальным правилам.
- Как подтвердить
- Нужны ручной аудит и проверка реализации. Отсутствие находок во внешнем скане не подтверждает безопасность.
В этой статье
- Продукт
- Веб-приложения
- Оценка риска
- Уровень зависит от конфигурации
Как проверить и что учитывать
Нужна ручная проверка
Для подтверждения нужны анализ реализации и проверки на согласованном тестовом контуре. Публикация не означает автоматическое обнаружение этого сценария FindRisk. Не делайте вывод о наличии уязвимости только по одному внешнему признаку: подтвердите результат в настройках и версии компонента.
Что нужно для подтверждения
Используйте sandbox провайдера и тестовые заказы. Проверьте несоответствие суммы и валюты, повтор callback и возврат без подтверждения: товар выдаётся только после проверенного события и не более одного раза.
Ограничения вывода
- Внешний ответ не раскрывает все роли, обработчики и настройки внутренних компонентов.
- Используйте только свои системы или письменное разрешение владельца; нагрузочные проверки согласуйте отдельно.
Что это за уязвимость
Браузер показывает цену и результат перехода, но не является источником истины об оплате. Ошибка возникает, когда сервер принимает сумму или статус заказа без проверки бизнес-правил.
Когда возникает риск
Нужно сопоставлять платёж с конкретным заказом, суммой, валютой и допустимым переходом состояния. Возвращение пользователя на success URL не доказывает получение денег.
Возможные последствия
Как защитить интернет-магазин от ошибок бизнес-логики: серверный расчёт суммы, проверка валюты и подтверждение оплаты через доверенный канал.
- Выдача товара без подтверждённой оплаты.
- Неверная сумма, повторная выдача или применение несовместимых скидок.
Как защитить приложение
Исправляйте причину в обработчике, а не только внешний симптом.
- Рассчитывайте сумму и допустимые скидки на сервере по актуальным правилам.
- Подтверждайте платёж через проверенный callback или API провайдера, сверяя идентификатор, сумму и валюту.
- Сделайте переход заказа в оплаченный статус атомарным и устойчивым к повторной доставке.
Как безопасно проверить исправление
Используйте sandbox провайдера и тестовые заказы. Проверьте несоответствие суммы и валюты, повтор callback и возврат без подтверждения: товар выдаётся только после проверенного события и не более одного раза.
Оценка риска и границы сканирования
Средний уровень — ориентировочная редакционная оценка, не CVSS подтверждённой находки. Для конкретной системы приоритет зависит от доступных данных, полномочий и компенсирующих мер; последствия могут быть значительно серьёзнее.
Отсутствие находки во внешнем скане не доказывает безопасность реализации. Проверяйте сценарии после входа, альтернативные маршруты и внутренние сервисы.
Как проходит проверка
Для подтверждения нужны анализ реализации и проверки на согласованном тестовом контуре. Публикация не означает автоматическое обнаружение этого сценария FindRisk. Автоматический результат показывает внешний признак риска и требует проверки специалистом с учётом конкретной конфигурации.
Проверить другие внешние рискиЧто делать после обнаружения
- Зафиксируйте затронутый сценарий и сохраните журналы без токенов и персональных данных.
- Ограничьте проблемный обработчик, оцените доступные данные и назначьте владельца исправления.
- Устраните первопричину и добавьте регрессионную проверку на тестовых данных.
Частые вопросы
Что означает риск «Уязвимости оплаты»?
Как защитить интернет-магазин от ошибок бизнес-логики: серверный расчёт суммы, проверка валюты и подтверждение оплаты через доверенный канал.
Можно ли подтвердить проблему только внешней проверкой?
Для подтверждения нужны анализ реализации и проверки на согласованном тестовом контуре. Публикация не означает автоматическое обнаружение этого сценария FindRisk. Итог нужно сопоставить с конфигурацией, версиями и правами доступа на вашем сайте.
Что сделать в первую очередь?
Рассчитывайте сумму и допустимые скидки на сервере по актуальным правилам.