Остановка credential stuffing на границе сети
Как tracio.ai выявляет автоматизированные попытки входа до того, как они дойдут до вашей системы аутентификации, сочетая device fingerprint, проверки частоты и поведенческие сигналы.
Атаки
credential stuffing
используют автоматизированные инструменты для перебора украденных комбинаций логина и пароля на страницах входа. Масштаб таких атак огромен — один оператор может проверять миллионы учётных данных в день на сотнях целевых сайтов. Традиционные средства защиты вроде rate limiting и CAPTCHA недостаточны, потому что атакующие распределяют запросы по тысячам IP-адресов и пользуются сервисами по разгадыванию CAPTCHA. Вот как мы останавливаем credential stuffing на границе сети — до того, как запросы дойдут до вашей системы аутентификации.
Поверхность атаки
Типичная операция credential stuffing использует список украденных учётных данных (доступный на теневых маркетплейсах всего за $10 за миллион записей), инструмент автоматизации (обычно кастомный скрипт или инструмент вроде OpenBullet) и пул прокси-IP (резидентные прокси, которые прокручиваются на каждом запросе, чтобы обходить rate limiting по IP).
Атакующий настраивает свой инструмент отправлять запросы на вход с контролируемой скоростью — достаточно медленно, чтобы не срабатывали простые лимиты частоты, но достаточно быстро, чтобы проверять тысячи учётных данных в час. Каждый запрос приходит с другого IP-адреса, с другой строкой user agent, из-за чего всё выглядит как поток легитимных попыток входа от разных пользователей.
Почему rate limiting не срабатывает
Ограничение частоты по IP — первая линия обороны, которую разворачивает большинство команд, и она же первой не выдерживает. Сервисы резидентных прокси дают доступ к миллионам реальных IP-адресов — домашних роутеров, мобильных устройств и IoT-устройств, — которые прокручиваются на каждом запросе. С точки зрения сервера каждая попытка входа приходит с уникального резидентного IP без истории злоупотреблений.
Ограничение частоты по аккаунту (лимит попыток входа на один логин) эффективнее, но создаёт вектор отказа в обслуживании: атакующий может заблокировать легитимных пользователей, намеренно проваливая множество попыток входа под их логинами.
Device fingerprinting как основа
Device fingerprinting меняет расклад, потому что определяет устройство, с которого ведётся атака, а не используемый им IP. Инструмент credential stuffing, работающий на одной машине или ферме виртуальных машин, выдаёт неизменный device fingerprint на всех своих запросах, независимо от того, через какой прокси-IP он прокручивается.
Наш движок Bot Detection выявляет сами инструменты автоматизации. Selenium оставляет артефакты navigator.webdriver. Puppeteer и Playwright имеют характерные особенности JavaScript-рантайма. В Headless Chrome отсутствуют отдельные API браузера, которые есть в обычном Chrome. Даже кастомные HTTP-клиенты, не исполняющие JavaScript, обнаруживаются через TLS fingerprinting — их сообщения Client Hello выдают используемую HTTP-библиотеку.
Отслеживание частоты по устройству
Как только у нас есть стабильный идентификатор устройства (через Device Identification), мы можем применять проверки частоты на уровне устройства, а не IP. Если одно устройство совершает 50 попыток входа за 5 минут — независимо от того, со скольких разных IP пришли эти запросы, — паттерн однозначно указывает на credential stuffing.
Наш модуль IP Intelligence отслеживает частоту в трёх временных окнах: 5 минут, 1 час и 24 часа. Такой многооконный подход ловит и агрессивные атаки (сотни попыток в минуту), и медленные незаметные атаки (несколько попыток в час, растянутые на дни).
Анализ поведенческих сигналов
Помимо bot detection и отслеживания частоты, наш анализ Smart Signals изучает поведенческие сигналы, которые отличают автоматизированные атаки от легитимных входов. Реальные пользователи демонстрируют естественную вариативность в тайминге запросов, скорости набора и паттернах навигации. Автоматизированные инструменты, как правило, выдают механически ровный тайминг, идентичные заголовки запросов и полное отсутствие движений мыши и событий прокрутки.
Мы также проверяем несогласованность сигналов, указывающую на подмену окружения. Браузер, заявляющий, что это Chrome на macOS, но предъявляющий параметры WebGL, характерные для Linux-VM, помечается немедленно. Строка user agent, не совпадающая с TLS fingerprint, вызывает срабатывание оповещения о подделке.
Развёртывание на границе сети
Ключ к остановке credential stuffing — остановить его до того, как он дойдёт до вашей системы аутентификации. Наш агент загружается на странице входа и собирает сигналы во время загрузки страницы — до того, как пользователь (или бот) отправит учётные данные. Результаты fingerprint и bot detection готовы к моменту отправки формы входа, что позволяет вашему серверу мгновенно отклонять автоматизированные попытки.
Для целей с высоким трафиком мы рекомендуем разворачивать нашу интеграцию Cloudflare Worker или CloudFront Lambda@Edge, которая выполняет валидацию fingerprint на границе CDN. Это значит, что запросы credential stuffing блокируются на edge-узле, ближайшем к атакующему, и вовсе не доходят до ваших origin-серверов.
Результаты
Наши клиенты сообщают о снижении объёма credential stuffing на 99% после развёртывания tracio.ai на своих страницах входа. Оставшийся 1% составляют крайне изощрённые атаки с использованием полноценной автоматизации браузера и тщательно подделанных сигналов — их ловит наше многометодное обнаружение в пределах первых нескольких десятков запросов, когда проступают паттерны частоты.