Модель угроз: приём платежей и вебхуки
Вопрос
Смоделируйте угрозы для сервиса приёма платежей интернет-магазина: клиент оформляет заказ, переходит на страницу платёжного провайдера, провайдер присылает вебхук об оплате, магазин отмечает заказ оплаченным. Нарисуйте DFD с границами доверия и разберите угрозы.
Коротко
Что должно быть в решении
- 1Схема: клиент, сайт магазина, сервис заказов, платёжный провайдер, вебхук, база заказов; границы доверия на входе из интернета и от провайдера
- 2Spoofing вебхука: проверка подписи HMAC или сертификата, сверка статуса через API провайдера
- 3Tampering суммы и заказа: сумма считается на сервере, сверка суммы и валюты из вебхука с заказом
- 4Повтор вебхука и гонки: идемпотентность по id платежа, атомарное изменение статуса
- 5Repudiation: журнал платёжных событий, сверка с реестром провайдера
- 6Information disclosure: данные карт не касаются магазина (страница провайдера), минимум ПДн в логах
- 7DoS и злоупотребления: лимиты на создание заказов и платежей, мониторинг аномалий
- 8Задачи: требования к коду обработчика вебхука, тесты на подделку и повтор, алерты
Что спросит интервьюер
- Что будет, если провайдер недоступен и вебхук не пришёл?
- Как защититься, если секрет подписи вебхука утёк?
- Что изменится, если добавить возвраты?
Разбор
Эталонный разбор. Главные активы: деньги и статус заказа. Границы доверия: браузер клиента и интернет, входящие вебхуки от провайдера, вызовы API провайдера. Самые опасные угрозы: поддельный вебхук «оплачено» (Spoofing), оплата меньшей суммы за дорогой заказ (Tampering), повтор вебхука или параллельная обработка, дающая двойное начисление бонусов (Tampering и логика). Меры: проверка подписи вебхука и сверка статуса запросом к API провайдера, сравнение суммы, валюты и id заказа, идемпотентная обработка по id платежа с уникальным ключом в базе, журнал событий. Данные карт магазин не обрабатывает, поэтому зона PCI DSS минимальна. Всё превращается в требования к обработчику и в автотесты.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.