Проектирование Senior Моделирование угроз обновлено

Модель угроз: приём платежей и вебхуки

Вопрос

Смоделируйте угрозы для сервиса приёма платежей интернет-магазина: клиент оформляет заказ, переходит на страницу платёжного провайдера, провайдер присылает вебхук об оплате, магазин отмечает заказ оплаченным. Нарисуйте DFD с границами доверия и разберите угрозы.

Коротко

Эталонный разбор. Главные активы: деньги и статус заказа.

Что должно быть в решении

  1. 1
    Схема: клиент, сайт магазина, сервис заказов, платёжный провайдер, вебхук, база заказов; границы доверия на входе из интернета и от провайдера
  2. 2
    Spoofing вебхука: проверка подписи HMAC или сертификата, сверка статуса через API провайдера
  3. 3
    Tampering суммы и заказа: сумма считается на сервере, сверка суммы и валюты из вебхука с заказом
  4. 4
    Повтор вебхука и гонки: идемпотентность по id платежа, атомарное изменение статуса
  5. 5
    Repudiation: журнал платёжных событий, сверка с реестром провайдера
  6. 6
    Information disclosure: данные карт не касаются магазина (страница провайдера), минимум ПДн в логах
  7. 7
    DoS и злоупотребления: лимиты на создание заказов и платежей, мониторинг аномалий
  8. 8
    Задачи: требования к коду обработчика вебхука, тесты на подделку и повтор, алерты

Что спросит интервьюер

  • Что будет, если провайдер недоступен и вебхук не пришёл?
  • Как защититься, если секрет подписи вебхука утёк?
  • Что изменится, если добавить возвраты?

Разбор

Эталонный разбор. Главные активы: деньги и статус заказа. Границы доверия: браузер клиента и интернет, входящие вебхуки от провайдера, вызовы API провайдера. Самые опасные угрозы: поддельный вебхук «оплачено» (Spoofing), оплата меньшей суммы за дорогой заказ (Tampering), повтор вебхука или параллельная обработка, дающая двойное начисление бонусов (Tampering и логика). Меры: проверка подписи вебхука и сверка статуса запросом к API провайдера, сравнение суммы, валюты и id заказа, идемпотентная обработка по id платежа с уникальным ключом в базе, журнал событий. Данные карт магазин не обрабатывает, поэтому зона PCI DSS минимальна. Всё превращается в требования к обработчику и в автотесты.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.