Fatos principais
- Categoria
- Segurança e validação
- Tipos de entrada
- textarea, text, number
- Tipo de saída
- json
- Cobertura de amostras
- 4
- API disponível
- Yes
Visão geral
O Scanner ReDoS para regex é uma ferramenta de segurança projetada para analisar expressões regulares e identificar riscos de backtracking catastrófico. Ao combinar heurísticas estáticas com simulações de entradas maliciosas (near-miss inputs), ele avalia a vulnerabilidade do seu código a ataques de Negação de Serviço por Expressão Regular (ReDoS) e sugere reescritas mais seguras para otimizar o desempenho e a estabilidade da sua aplicação.
Quando usar
- •Durante revisões de código de segurança para validar expressões regulares antes de enviá-las para o ambiente de produção.
- •Ao auditar bibliotecas de terceiros ou códigos legados em busca de vulnerabilidades ocultas de ReDoS.
- •Para testar e otimizar padrões complexos de regex que processam entradas não confiáveis fornecidas por usuários.
Como funciona
- •Cole uma ou mais expressões regulares na área de texto principal, inserindo um padrão por linha sem as barras delimitadoras.
- •Opcionalmente, defina as flags (como 'i' ou 'm'), o tamanho máximo da entrada maliciosa e o número de execuções da simulação.
- •A ferramenta executa uma análise estática para encontrar antipadrões e realiza um benchmark simulando entradas quase correspondentes.
- •O resultado é gerado em formato JSON, detalhando o nível de risco, o tempo de execução no pior cenário e sugestões de reescrita.
Casos de uso
Exemplos
1. Auditoria de Regex de Validação de E-mail
Engenheiro de Segurança- Contexto
- A equipe de desenvolvimento criou um regex complexo para validar e-mails, mas há suspeitas de que ele possa causar lentidão no servidor se receber entradas maliciosas.
- Problema
- Verificar se o regex de e-mail possui quantificadores aninhados vulneráveis a ReDoS.
- Como usar
- Insira o regex de e-mail no campo 'Lista de regex', defina o tamanho da entrada maliciosa para 64 e execute a simulação.
- Configuração de exemplo
-
{ "regexList": "^([a-zA-Z0-9_\\-\\.]+)@([a-zA-Z0-9_\\-\\.]+)\\.([a-zA-Z]{2,5})$", "maxEvilInputLength": 64, "simulationRuns": 500 } - Resultado
- O scanner identifica o nível de risco e sugere a remoção de agrupamentos redundantes para evitar backtracking excessivo.
2. Teste de Regex de Login Legado
Desenvolvedor Backend- Contexto
- Um sistema antigo usa um regex com múltiplos quantificadores '+' e '*' para validar nomes de usuário com espaços.
- Problema
- Identificar se o padrão de login pode travar a API de autenticação sob ataque.
- Como usar
- Cole o padrão na lista, adicione a flag 'i' e mantenha as configurações padrão de 32 caracteres e 200 simulações.
- Configuração de exemplo
-
{ "regexList": "^(\\w+\\s?)*$", "flags": "i", "maxEvilInputLength": 32, "simulationRuns": 200 } - Resultado
- O relatório JSON classifica o risco como 'crítico', mostrando o tempo de execução exponencial e sugerindo uma alternativa segura sem quantificadores aninhados.
Testar com amostras
regexFAQ
O que é ReDoS?
ReDoS (Regular Expression Denial of Service) é um ataque onde uma expressão regular mal construída consome recursos excessivos da CPU ao tentar processar uma entrada específica, causando lentidão ou travamento do sistema.
Como a ferramenta detecta o backtracking catastrófico?
Ela utiliza uma combinação de análise estática para identificar quantificadores aninhados e simulações dinâmicas com entradas maliciosas geradas para medir o tempo de execução no pior cenário.
Posso testar várias expressões regulares de uma vez?
Sim, basta colar uma expressão regular por linha no campo 'Lista de regex' para que a ferramenta analise todas em lote.
O que significa o tamanho máximo da entrada maliciosa?
É o limite de caracteres da string de ataque gerada pela ferramenta para testar o desempenho do seu regex. O valor padrão é 32, podendo chegar a 256.
A ferramenta corrige o meu regex automaticamente?
Ela não altera seu código diretamente, mas o relatório JSON de saída inclui sugestões de reescrita mais seguras para mitigar o risco encontrado.