Сканер ReDoS для regex

Проверяет regex на риск катастрофического backtracking, моделирует вредоносный ввод и предлагает более безопасные замены

Вставьте по одному regex на строку и при необходимости задайте флаги, максимальную длину злого ввода и число прогонов. Инструмент сочетает статический анализ и симуляцию near-miss входов.

Примеры результатов

1 Примеры

Проверить regex логина на катастрофический backtracking

Оценивает вложенные квантификаторы, моделирует вредоносный ввод и предлагает замену.

{
  "summary": {
    "patterns": 2,
    "critical": 1
  },
  "results": [
    {
      "pattern": "(a+)+$",
      "riskLevel": "critical"
    }
  ]
}
Показать параметры ввода
{ "regexList": "(a+)+$\n^(\\w+\\s?)*$", "flags": "", "maxEvilInputLength": 32, "simulationRuns": 200 }

Ключевые факты

Категория
Безопасность и валидация
Типы входных данных
textarea, text, number
Тип результата
json
Покрытие примерами
4
API доступен
Yes

Обзор

Сканер ReDoS — это специализированный инструмент для проверки регулярных выражений на уязвимость к катастрофическому возврату (catastrophic backtracking). Он сочетает статический анализ с симуляцией вредоносного ввода (near-miss), позволяя разработчикам и специалистам по безопасности оценивать риски отказа в обслуживании (ReDoS), измерять время выполнения при стресс-тестировании и получать рекомендации по безопасному переписыванию паттернов.

Когда использовать

  • Перед развертыванием новых регулярных выражений для валидации данных в production-окружении.
  • При аудите безопасности существующей кодовой базы на наличие скрытых уязвимостей ReDoS.
  • Во время ревью кода для проверки сложных паттернов с вложенными квантификаторами.

Как это работает

  • Вставьте одно или несколько регулярных выражений (по одному на строку) в основное текстовое поле без обрамляющих слешей.
  • При необходимости укажите флаги (например, i или m), максимальную длину генерируемого вредоносного ввода и количество прогонов симуляции.
  • Инструмент проведет статический анализ структуры паттерна и сгенерирует строки, которые почти совпадают с выражением, для стресс-тестирования.
  • Получите подробный JSON-отчет с оценкой уровня риска, худшим временем выполнения и вариантами безопасной замены уязвимых выражений.

Сценарии использования

Проверка паттернов валидации пользовательского ввода (email, пароли, телефоны) на бэкенде для предотвращения атак на отказ в обслуживании.
Интеграция этапа проверки регулярных выражений в процессы DevSecOps и пайплайны CI/CD.
Оптимизация медленных регулярных выражений, вызывающих непредсказуемые скачки нагрузки на CPU.

Примеры

1. Проверка валидатора логина

Backend-разработчик
Контекст
Разработчик написал регулярное выражение для проверки сложных логинов, но подозревает, что оно может быть уязвимо к атакам.
Проблема
Убедиться, что паттерн не вызовет зависание сервера при передаче длинной некорректной строки.
Как использовать
Вставить паттерн в поле списка regex, установить длину злого ввода на 32 и запустить проверку.
Пример конфигурации
{
  "regexList": "^(\\w+\\s?)*$",
  "maxEvilInputLength": 32,
  "simulationRuns": 200
}
Результат
Сканер выявляет критический риск из-за вложенных квантификаторов и предлагает заменить паттерн на более строгий без пересекающихся групп.

2. Массовый аудит регулярных выражений

Специалист по информационной безопасности
Контекст
Команда ИБ проводит аудит старого проекта и собрала список из десятков регулярных выражений, используемых в маршрутизации и валидации.
Проблема
Быстро отфильтровать безопасные паттерны от тех, которые подвержены ReDoS-атакам.
Как использовать
Скопировать весь список регулярных выражений (по одному на строку) в сканер и увеличить количество прогонов до 500 для повышения точности бенчмарка.
Пример конфигурации
{
  "regexList": "(a+)+$\n^[0-9]+$\n<([a-z]+)([^<]+)*(?:>(.*)<\\/\\1>|\\s+\\/>)",
  "simulationRuns": 500
}
Результат
Инструмент выдает JSON-отчет, где каждому паттерну присвоен уровень риска, что позволяет сфокусироваться на исправлении только уязвимых выражений.

Проверить на примерах

regex

Связанные хабы

FAQ

Что такое катастрофический возврат (catastrophic backtracking)?

Это ситуация, когда регулярное выражение с вложенными или пересекающимися квантификаторами тратит экспоненциальное время на проверку несовпадающей строки, что может привести к зависанию сервера.

Как инструмент генерирует вредоносный ввод?

Сканер анализирует структуру регулярного выражения и создает строки (near-miss), которые заставляют движок regex перебирать максимальное количество вариантов перед тем, как выдать ошибку совпадения.

Зачем настраивать количество прогонов симуляции?

Увеличение числа прогонов (до 5000) позволяет получить более точные данные о времени выполнения при стресс-тестировании, сглаживая случайные колебания производительности.

Какие флаги поддерживаются?

Поддерживаются стандартные флаги регулярных выражений JavaScript, такие как i (регистронезависимость), m (многострочность) или u (поддержка Unicode).

Предлагает ли сканер исправления для уязвимых паттернов?

Да, в результатах анализа для паттернов с высоким уровнем риска предоставляются рекомендации и примеры более безопасного написания.

Документация API

Конечная точка запроса

POST /ru/api/tools/redos-regex-scanner

Параметры запроса

Имя параметра Тип Обязательно Описание
regexList textarea Да -
flags text Нет -
maxEvilInputLength number Нет -
simulationRuns number Нет -

Формат ответа

{
  "key": {...},
  "metadata": {
    "key": "value"
  },
  "error": "Error message (optional)",
  "message": "Notification message (optional)"
}
Данные JSON: Данные JSON

Документация MCP

Добавьте этот инструмент к конфигурации сервера MCP:

{
  "mcpServers": {
    "elysiatools-redos-regex-scanner": {
      "name": "redos-regex-scanner",
      "description": "Проверяет regex на риск катастрофического backtracking, моделирует вредоносный ввод и предлагает более безопасные замены",
      "baseUrl": "https://elysiatools.com/mcp/sse?toolId=redos-regex-scanner",
      "command": "",
      "args": [],
      "env": {},
      "isActive": true,
      "type": "sse"
    }
  }
}

Вы можете объединять несколько инструментов, например: `https://elysiatools.com/mcp/sse?toolId=png-to-webp,jpg-to-webp,gif-to-webp`, максимум 20 инструментов.

Если вы столкнулись с проблемами, пожалуйста, свяжитесь с нами по адресу [email protected]