Одна ошибка в клиентской части приложения позволяла обойти доверенную систему подтверждения операций
Где была настоящая сложность
Системы двухфакторной аутентификации и SMS-подтверждения обычно воспринимаются как дополнительный уровень защиты.
Задача заключалась не в поиске очевидных уязвимостей, а в проверке того, насколько безопасно реализовано взаимодействие приложения с внешними сервисами и можно ли использовать это доверие против самой системы.
Что обнаружили
Во время анализа веб-приложения был обнаружен API-токен SMS-сервиса, доступный в клиентской части приложения.
Используя полученный токен, команда смогла отправлять и перехватывать SMS-сообщения через сервис, а затем использовать их для получения доступа к личному кабинету тестового пользователя.
Проект показал, что компрометация одного служебного токена способна нарушить безопасность всей цепочки подтверждения действий пользователя.
Что это означало для бизнеса
При эксплуатации подобной уязвимости злоумышленник мог получить доступ к содержимому SMS-сообщений и использовать их для обхода механизмов подтверждения, предусмотренных приложением.
Это создавало риск компрометации пользовательских учетных записей и снижало надежность одного из ключевых элементов защиты – доверенного канала подтверждения операций.
Результат
По итогам проекта заказчик исключил хранение API-токена в клиентской части приложения и настроил ограничения доступа к API SMS-сервиса по доверенным IP-адресам.
Это позволило существенно снизить риск несанкционированного использования сервиса и повысить защищенность механизма SMS-подтверждения.
Что показал этот проект
Безопасность приложения определяется не только отсутствием критических уязвимостей в коде, но и тем, как реализовано взаимодействие с внешними сервисами.
Даже надежный механизм подтверждения может стать слабым звеном, если его служебные данные оказываются доступны клиентской части приложения. Именно поэтому пентест должен оценивать не только отдельные компоненты системы, но и всю цепочку доверия между ними.