Velocity-проверки: когда скорость действий выдаёт фродера
В антифроде есть простое правило: если что-то происходит слишком быстро или слишком часто, то это подозрительно. Обычный пользователь не делает десять транзакций за минуту, не пытается залогиниться 30 раз подряд и не создаёт пять аккаунтов с одного устройства за час. А вот фродер, бот или скомпрометированный скрипт, вполне.
Velocity checks (velocity rules, velocity controls) — это система, которая отслеживает частоту и скорость действий в заданном временном окне и сравнивает их с нормальным поведением. Если порог превышен, то транзакция блокируется, аккаунт помечается, сессия обрывается. Это один из самых эффективных методов обнаружения автоматизированных атак, card testing, account takeover, bonus abuse.
Как это работает
Технически velocity check это условное правило формата «если X произошло N раз за Y времени, сделать Z». Например:
- Если с одной карты за 10 минут было 5 неуспешных авторизаций — заблокировать карту.
- Если с одного IP за час создано 10+ аккаунтов — заблокировать IP и пометить все аккаунты как рискованные.
- Если пользователь за 5 минут совершил 3 транзакции на сумму выше $500 — добавить дополнительную аутентификацию.
Система постоянно смотрит на поток событий (логины, платежи, регистрации, изменения настроек аккаунта) и ведёт счётчики по ключевым признакам: IP-адрес, device fingerprint, user ID, номер карты, email, телефон. Как только счётчик превышает заданное значение, то срабатывает действие.
На практике это реализуется через хранилища в памяти (Redis, Memcached), где ключ это комбинация сущности + временной интервал, а значение это счётчик. Например: velocity:card:41111111:10min = 3. Если пришла четвёртая попытка, а лимит 3, то запрос отклоняется.
Типичные паттерны, которые ловят velocity rules Card testing — самый очевидный кейс. Фродер получает дамп украденных карт,(CVV часто нет, срок действия может быть неизвестен) и прогоняет их через платёжную форму, делая микротранзакции ($1–5). Его цель понять, какие карты всё ещё активны, чтобы потом использовать их для крупных покупок. Velocity check видит 50 попыток авторизации за 2 минуты с одного IP, из них 45 отклонены. Очевидная атака.
Account takeover (ATO) через credential stuffing — автоматический перебор украденных пар логин/пароль. Боты пытаются залогиниться в сотни аккаунтов за минуты.
Velocity rule: «Если с одного IP за минуту было 20+ неуспешных попыток логина — блокировать IP». Альтернативный вариант: «Если один user ID получил 5 неуспешных попыток входа за 30 секунд — временно заблокировать аккаунт и отправить оповещение».
Bonus abuse и мультиаккаунты — один человек или группа создают десятки аккаунтов для вывода приветственных бонусов, реферальных вознаграждений, промокодов. Device fingerprint один и тот же (или близкий при использовании anti-detect браузеров), IP может меняться через прокси, но паттерн регистраций остаётся подозрительным.
Velocity rule: «Если с одного device ID за сутки создано 5+ аккаунтов — пометить для ручной проверки». Или: «Если почтовый домен (временный email вроде tempmail.com) встречается в 10+ регистрациях за час — блокировать домен».
Chargeback fraud farming — серия мелких покупок для установления «легитимной истории», а потом одна крупная транзакция с последующим оспариванием.
Velocity помогает заметить: «Клиент никогда не делал больше одной покупки в день, а сегодня вдруг сделал 7». Такое изменение поведения — повод для дополнительной проверки.
Какие данные используются в velocity checks
Эффективность правил напрямую зависит от того, по каким признакам считать.
Основные: