Rostelecom Security Labs

SecureCode Review — Search ReDoS

Запрос поиска ограничен через @Pattern с тяжёлым выражением, а контроллер забыли пометить @Validated. Узнай, где уязвимость, и предложи безопасную обработку.

📚 Теория: @Validated + Regex DoS (раскрыть)

Без @Validated проверки не работают

Bean Validation для @RequestParam включается только при аннотации контроллера @Validated. Здесь её нет — опасный ввод добирается до сервиса.

⚠️ Да даже если бы была, регексп всё равно ReDoS.

Сложные регекспы

Выражение ([\\w\\s]+\\.?)+ имеет вложенные квантификаторы. Длинная строка приводит к экспоненциальному времени.

🔐 Используй простые whitelist-выражения или предикаты.

1. Ввод

Хакер отправляет q=aaaaaaaa....!, где 50k символов.

2. Валидация

Регексп зависает, блокируя event-loop/пул потоков.

3. DoS

Сервис поиска недоступен, Alertmanager молчит (HTTP 200).

Как надо: включи @Validated, проверь длину через @Size, перепиши фильтрацию на precompiled DFA-дружелюбный шаблон, добавь circuit breaker и тесты.

Контекст

Поиск клиентов — критичный API. Для «гибкости» взяли сложный регексп из StackOverflow. Ограничения длины не добавили, а @Validated забыли. Теперь у злоумышленника есть стабильный DoS.

Сниппет

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

Code Review

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

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