Сканер 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]