😈 Регистрация — оружие массового поражения
Недавно на финтех-проекте во время тестирования аутентификации обнаружился неожиданный вектор деградации сервиса.
API-эндпоинт /send_email отвечал за отправку писем на этапе регистрации для подтверждения электронной почты. Однако серия запросов подряд приводила к остановке личного кабинета: приложение переставало отвечать на 5-10 минут, сервис становился недоступен для всех пользователей.
Достаточно было 15-20 последовательных запросов с одного IP-адреса с минимальной задержкой, чтобы полностью нарушить доступность. Предположительно, письма отправлялись синхронно без очереди, что приводило к блокировке worker-пула и зависанию на SMTP. В результате обычный функционал отправки письма превратился в примитивный DoS всего сервиса.
▎ Риски
➡️Нарушение доступности сервиса
➡️Возможность эксплуатации любым неаутентифицированным пользователем
➡️Падение рейтинга домена и попадание писем в "спам"
➡️Репутационные потери
➡️Потенциальный финансовый ущерб
▎ Рекомендации по устранению уязвимости
✅Ввести лимиты на частоту запросов с адаптивной логикой и проверкой на ботов (IP, email, устройство)
✅Ограничить частоту вызова критичных эндпоинтов аутентификации (регистрация, подтверждение, сброс пароля)
✅Перевести отправку писем в асинхронную очередь с контролем нагрузки
✅Исключить синхронные SMTP-вызовы внутри HTTP-запроса
✅Изолировать сервис отправки писем от ядра аутентификации
✅Обеспечить контролируемую деградацию и корректные ошибки при перегрузке
✅Настроить мониторинг очередей и времени обработки email-запросов
Главное, чтобы письма не только отправлялись, но и не убивали сервер.
#кейс
Post #130
1.45K

- 👍 10
- 🫡 3
- 😁 1