
От чего защищает WAF (Web application firewall)? Самый очевидный ответ – от взлома веб-приложения. Однако не все веб-атаки предполагают эксплуатацию уязвимостей – иногда злоумышленники совершают и легитимные технически корректные действия, которые могут навредить организации. Так один из наших клиентов столкнулся с проблемой SMS-бомбинга. Для массовой рассылки SMS киберпреступники использовали открытый API. Решить проблему удалось с помощью WAF. Какие настройки для этого потребовались – расскажем в этой статье.
Суть атаки
Итак, к нам обратился заказчик – агропромышленная компания. Для регистрации новых пользователей в приложении использовалась верификация через SMS. Отправка сообщений с уникальными кодами подтверждения запрашивалась приложением через API-вызов. Этим и воспользовались злоумышленники, реализовав атаку SMS-бомбинг.
Они использовали открытый API сервиса для массовой отправки SMS-кодов. Это действие не было квалифицировано как атака, ведь несмотря на злоупотребление доступным без регистрации API-методом, он использовался предусмотренным и корректным, с точки зрения API способом. Запросы могут отправляться вручную, однако чаще всего хакеры используют боты, которые позволяют генерировать тысячи запросов в короткий промежуток времени.
Что в этом плохого, если все легально? Во-первых, каждое SMS, отправленное в ответ на запрос злоумышленников, стоит денег, а значит, компания понесет финансовые потери за счет оплаты услуг SMS-агрегатора. Во-вторых, пользователи ресурса начинают получать спам, что формирует негатив в сторону компании.
Как мы определили несанкционированный запрос?
Генерируемые нежелательные запросы отличаются от валидных и ожидаемых. Различными будут следующие параметры: User-Agent, ID генерации, частота запроса и номер телефона.
Параметр |
Легитимный запрос |
Запрос атакующего |
User-Agent |
Android App v2.1 / iOS App v3.0 |
Python-Requests/2.28 (скрипт) |
ID генерации |
Последовательные, уникальные |
Случайные, дублирующиеся |
Частота запроса |
1-2 в минуту |
Более 100 в секунду |
Номер телефона |
+79ХХХХХХХ |
+1111ХХХХХХХ |
Злоупотребление API – это не классическая хакерская атака со взломом (нет SQL-инъекций, XSS, RCE и т. д.). Однако современные WAF могут защитить сайт от подобной угрозы, хоть это и не является профильной для них задачей (т.к. злоумышленники используют валидные и корректные методы). Указанных в таблице параметров достаточно для применения сразу нескольких вариантов контроля обращений и блокировки нежелательной активности.
Давайте рассмотрим, какие правила, виртуальный патчинг и настройки возможно выполнить для такого случая (на примере ПроWAF платформы «Вебмониторэкс»).
Итак, «правильный» запрос имеет формат номера +7 (123) 456-78-90, обращение c уникальным ID возможно не чаще чем 1 раз в 40 секунд и в качестве User-Agent используется Dart.io.
User-Agent
Для контроля доступа по User-Agent можно использовать, например, следующее правило:

Так как иные клиенты для взаимодействия не предусмотрены в принципе, то ограничение применяется для любых API-вызовов.
Формат номера
Далее опишем правильный формат номера и будем блокировать все несовпадающие варианты указания этих данных:

Количество запросов
Помимо этого, зная, насколько часто реальный пользователь может отправлять подобные запросы, создадим правило RateLimit для каждого уникального ID, указанного в запросе:

Дополнительно, при необходимости можно установить триггер на количество обращений с неверным значением User-Agent, с добавлением источника в черный список на какой-то промежуток времени:

Заключение
API-злоупотребление – это не взлом сайта, однако от этого компании не легче. Финансовые потери, недовольство клиентов – это все влияет на бизнес и репутацию. Все усложняется тем, что технически запросы, которые отправляют злоумышленники являются «валидными». Тем не менее гибкие системы мониторинга трафика к веб-приложениям могут выявлять аномалии и блокировать подобную атаку.
Автор: Андрей Асиновский, pre-sale инженер компании Вебмониторэкс
DennisP
Это защита от каких-то мамкиных хакеров, без отдельных ограничений для айпи датацентров, запрета тора, открытых и публичных прокси всё это остаётся решетом