Инфобез
Как злоумышленники используют бизнес-логику API против бизнеса и почему классический WAF больше не спасает
Еще пару лет назад ИБ-специалисты в основном ловили технические баги в веб-приложениях. Искали дыры в авторизации, косяки в настройках или ошибки контроля доступа, которые позволяли стащить данные или положить сервис.
Сами эти угрозы никуда не делись, но логика нападающих сильно изменилась.
Сегодня хакеры бьют по бизнес-логике. Особенно сильно это заметно по API, через которые сейчас работает буквально всё: регистрации, каталоги товаров, бронирование, платежи и мобильные приложения.
По разным оценкам, на API приходится до 70% всего веб-трафика, а за последние два года аналитики насчитали больше 100 миллиардов атак на интерфейсы программирования.
При этом нормально отслеживать и блокировать такие вещи умеют от силы 15% компаний.
Главная фишка современных атак в том, что они не похожи на взлом в привычном понимании.
Запросы идут правильные, токены валидные, структура данных четко соответствует спецификации.
Но если развернуть всю цепочку действий, посмотреть на частоту обращений и конечную цель, становится ясно: систему просто грабят или ломают изнутри, пользуясь ее же правилами.
Поэтому стандартного поиска уязвимостей сегодня уже мало.
Большинство безопасников отлично знают список OWASP API Security Top 10. Там собраны классические вещи: проблемы с аутентификацией, инъекции, SSRF и прочие баги, ломающие логику приложения.
Против них есть понятное оружие — WAF, сигнатурный анализ и строгий контроль входящих запросов. Это работает.
Но на практике всё чаще приходится сталкиваться с историями вроде Unrestricted Resource Consumption (когда у сервера просто выжирают ресурсы) или Business Logic Abuse (злоупотребление логикой).
Хакер берет абсолютно легитимные методы API, не коверкает форматы, не ищет дыры, но делает то, что бизнесу обходится очень дорого.
Выловить это по одному запросу невозможно — надо смотреть, как именно клиент общается с системой в целом.
Вот несколько реальных схем.
Burst: сломать бэкенд за пару секунд
Burst-атака — это короткий, но максимально мощный шквал запросов на конкретную функцию. Хакеру не нужно ронять весь сайт, ему достаточно нагрузить тяжелую операцию.
Например, запустить сложный поиск, который заставит бэкенд шерстить огромную базу данных, дергать кучу внутренних микросервисов и забивать память. Всего несколько сотен таких запросов в секунду — и процессор уходит в сотку, память кончается, а реальные клиенты видят ошибку 504.
Поскольку этот всплеск длится считанные секунды, обычный мониторинг часто его даже не замечает.
Атака заканчивается быстрее, чем система успевает пересчитать метрики и выдать алерт.
Обычно от этого защищаются лимитами (rate limiting), но тут легко перегнуть палку.
- Поставишь слишком мягкие ограничения — пропустишь удар.
- Закрутишь гайки — начнешь блокировать нормальных пользователей.
Из-за этого сейчас переходят на механизмы скользящих окон (Sliding Window).
Они оценивают трафик не за фиксированные отрезки времени, а в непрерывном режиме. Это позволяет гасить резкие всплески, не мешая жить обычным людям.
Правда, одними лимитами сыт не будешь.
Shortwave: игра со временем
Если в burst давят массой, то в shortwave ставку делают на тайминги.
Это серия коротких импульсов с четко выверенными паузами.
Средний объем трафика выглядит абсолютно нормально. Злоумышленник специально подбирает интервалы так, чтобы не триггерить настроенные лимиты.
Отдельные всплески остаются ниже порогов, но их частота подобрана так, чтобы поймать приложение на состоянии гонки (race condition).
Это момент, когда сервер параллельно обрабатывает несколько запросов, но еще не успел обновить общие данные в базе.
Итог зависит от фантазии хакера и устройства бизнеса. Так обходят лимиты, оформляют двойные списания, по десять раз активируют один и тот же промокод, повторно забирают бонусы или бронируют одну вещь сразу на несколько аккаунтов. И ведь каждый запрос по отдельности — чистый, авторизованный и правильный.
Проблема только в том, когда и в какой последовательности их прислали.
Защищаться от этого тяжело, ведь атака направлена не на код, а на синхронизацию процессов. К тому же такими импульсами хакеры прощупывают почву: смотрят, как система реагирует на нагрузку, когда запускаются фоновые задачи и как бэкенд переваривает данные, чтобы потом ударить точнее.
«Ковровые бомбардировки»: размазать трафик по всем эндпоинтам
При «ковровой бомбардировке» (carpet bombing) злоумышленники не долбят в одну точку и не выжидают идеальный момент.
Они распределяют свои запросы по огромному количеству разных методов API, чтобы размыть общую картину и остаться незамеченными для стандартных систем защиты.
Что же делать бизнесу?
Подключайте опытных devops-инженеров для выявления опасных ситуаций и разработки плана спасения.