Moment: Expressão regular vulnerável

Criado em 8 set. 2017  ·  24Comentários  ·  Fonte: moment/moment

A seguinte expressão regular usada para analisar datas especificadas como strings é vulnerável a ReDoS:

/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i

A lentidão é moderadamente baixa: para 50.000 caracteres em torno de 2 segundos de tempo correspondente. No entanto, ainda sugiro um dos seguintes:

  • remova o regex,
  • ancorar o regex,
  • limitar o número de caracteres que podem ser correspondidos pela repetição,
  • limitar o tamanho da entrada.

Se necessário, posso fornecer um exemplo real mostrando a desaceleração.

Bug Up-For-Grabs

Comentários muito úteis

Agradeceríamos se a correção para isso pudesse ser acelerada, agora que foi registrado no nsp, está falhando em nossas compilações.

Todos 24 comentários

Para esclarecimento, isso está no matchWord regex, em /src/lib/parse/regex.js aqui .

Aqui está um diagrama de ferrovia da expressão regular . A partir disso, podemos ver que o agrupamento com repetição está relacionado à análise de caracteres árabes. Seria útil se alguém que entende tanto as expressões regulares quanto a língua árabe pudesse dar uma olhada nisso.

Uma visão geral do ReDoS também é útil.

Vou presumir que ninguém já começou

@hamiltondanielb todo seu :)

@cristianstaicu
Se necessário, posso fornecer um exemplo real mostrando a desaceleração.

Eu gostaria de ver um exemplo, se possível :)

@ Drag0s enviou em seu e-mail privado.

Para sua informação, isso foi adicionado ao NSP (veja aqui ), então provavelmente vai começar a quebrar as compilações das pessoas em breve.

@hamiltondanielb - Você chegou a algum lugar ao investigar isso?

Acabamos de fazer nosso intervalo de construção 👯

É triste que o problema tenha se tornado público antes de ser corrigido. A edição começou em 8 de setembro, o comunicado da NSP foi publicado hoje. @cristianstaicu talvez você devesse ter lembrado os mantenedores sobre o prazo de divulgação para dar algum impulso a isso.

@mattgrande, há uma meta nisso: acontece que a versão do nsp em que fomos fixados (2.8.1) depende do momento (via joi), portanto, estava relatando uma vulnerabilidade em sua própria dependência:

1__bash

Atualizar para o nsp 3.1.0 resolveu isso porque a dependência não existe mais - portanto, tome cuidado se você não depender diretamente do momento.

Já existe algum concerto pra isso aqui?

Por favor, informe alguma correção disponível?

Nenhuma correção foi publicada ainda.

Por favor, se você estiver interessado em receber atualizações dos mantenedores, inscreva-se para receber notificações de atualizações deste problema clicando em "Inscrever-se" na coluna à direita.

Para adicionar uma exceção nsp para isso, adicione um arquivo .nsprc :

{
  "exceptions": [
     "https://nodesecurity.io/advisories/532"
  ]
}

Obrigado @ westy92 ! Salvei minha construção.

Olá, @ westy92 e @ jacob-go. Eu tenho o seguinte código.
var tasksMethods = require ('gulpfile-ninecms');
gulp.task ('nsp', tasksMethods.nsp);
Não está pegando a exceção do arquivo .nsprc. Ele continua me dando o erro de vulnerabilidade por um momento.
Adicionei o arquivo na raiz do projeto. Há algo que estou perdendo para fazer?

@Dexterslab estamos usando gulp-nsp , que funciona bem quando .nsprc está no diretório do projeto (mesmo nível de package.json ). Talvez tente usar gulp-nsp diretamente?

@cristianstaicu @mattgrande isso está acontecendo em Luxon também?

Agradeceríamos se a correção para isso pudesse ser acelerada, agora que foi registrado no nsp, está falhando em nossas compilações.

Posso sugerir aos mantenedores que bloqueiem esta conversa?
Para todos que estão esperando por uma solução, basta clicar no botão de inscrição e você será notificado.

Se alguém quiser fazer a correção, sinta-se à vontade para abrir um PR.

Já existe um PR para isso https://github.com/moment/moment/pull/4326

Alguém precisa notificar nsp que o patch foi corrigido? https://nodesecurity.io/advisories/532

Isso foi corrigido na versão 2.19.3. Atualize de acordo.

Não tenho certeza de como notificar o NSP - @cristianstaicu você ou outras pessoas poderiam ajudar aqui?

Mandei um e-mail para

Olá,

A vulnerabilidade moment.js atualmente pendente (https://nodesecurity.io/advisories/532) foi recentemente corrigida e a correção lançada na v.2.19.3.

Qual é o processo para relatar atualizações de status em avisos? Este endereço de e-mail é a melhor via que consegui encontrar.

Obrigado!

Acabei de receber uma resposta de que o banco de dados NSP deve ser atualizado com 2.19.3 como a versão corrigida.

Verificado no meu lado que 2.19.3 não alerta mais.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

danieljsinclair picture danieljsinclair  ·  3Comentários

M-Zuber picture M-Zuber  ·  3Comentários

ninigix picture ninigix  ·  3Comentários

alvarotrigo picture alvarotrigo  ·  3Comentários

Delgan picture Delgan  ·  3Comentários