Rostelecom Security Labs

SecureCode Review — Bulk Invite ReDoS

Массовая рассылка приглашений валидирует каждую почту тяжёлым регекспом, без ограничений на размер списка и длину строк. Найди уязвимость и предложи защиту.

📚 Теория: ReDoS в списках (раскрыть)

Сложные регекспы × большой объём

Регексп ^([\\w\\.-]+)+@[\\w\\.-]+$ содержит вложенные квантификаторы. При длинном email’е он работает экспоненциально долго.

⚠️ Умножь это на 1000 email’ов — DoS гарантирован.

Как защититься?

Выставь лимиты (@Size на списки/строки, hard cap в конфиге), используй @Email + простые whitelist-правила, добавь прогрев queue.

🔐 Категорически необходимо pre-валидация и идемпотентная очередь.

1. Batch

Нападающий отправляет 500 адресов с огромными строками.

2. Validation

Каждый email прогоняется через тяжёлый регексп → CPU 100%.

3. Outage

Очередь зависает, воркеры не отвечают, SLA падает.

Как надо: лимитируй входные данные, используй `@Email`, precompiled `Pattern`, ограничения на размер списка, а также стресс-тесты с ReDoS-пэйлоадами.

Контекст

CRM команда решила, что email должен быть «гибким», и вставила тяжёлый регексп. Rate-limitов и батч-лимитов нет, валидация синхронная. Одна атака — и очередь падает.

Сниппет

Загружаем сниппет…

Code Review

Проверка флага

После ревью зафиксируй флаг, чтобы дашборд засчитал лабораторию.