Front End

28 mai, 2018

Cheque a segurança dos seus projetos com o npm audit

Publicidade

No dia 24 do mês passado, a versão 6 do npm saiu e trouxe uma grande variedade de funcionalidades, tais como: melhoria de performance, resolução automática de conflitos, otimização para CI com o comando npm ci, etc. Uma das novidades mais interessantes é o comando npm audit.

Em resumo, esse comando nos permite fazer verificações de segurança diretamente do console utilizando npm. Como o ecossistema npm é muito vasto, e cada dependência possui várias outras dependências, muitas vezes acabamos utilizando alguma dependência que possui falhas de segurança e não sabemos. É exatamente para evitar este problema que esse tipo de ferramenta é fundamental.

Quer ver como isso funciona? Então continue lendo o artigo.

De onde vem o audit

Em 11 de abril deste ano, a npm adquiriu uma empresa chamada Lift. Esta empresa, por sua vez, era responsável pelo desenvolvimento de uma plataforma chamada Node Security Platform (NSP). Como o nome já indica, esta plataforma tinha a capacidade de descobrir vulnerabilidades em códigos feitos com Node. Com esta aquisição, o npm incorporou essa ferramenta para dentro do seu CLI nativo, o que nos permite fazer essa verificação nativamente.

Atualizando o npm

Por se tratar de uma nova funcionalidade, é importante que você tenha a última versão do npm instalada na sua máquina. Para verificar isso é muito simples, basta executar o comando npm -v.

Caso sua versão seja inferior a 6.0.0, basta executar o comando npm i -g npm. Isso fará com que as últimas funcionalidades sejam instaladas no seu computador.

Verificando a segurança do seu projeto

O comando audit é muito fácil de usar e não é necessário nenhuma configuração extra para começar a utilizá-lo. Para a nossa segurança, ele já é executado por padrão a cada vez que executamos um npm install.

No entanto, podemos fazer esta verificação a qualquer momento, bastando executar o comando npm audit na raiz do projeto que você quer verificar. Para demonstrar a saída de um projeto identificado com falhas de segurança, executei o comando em um projeto que eu sabia que havia vulnerabilidades. Note a saída:

Vulnerabilidades encontradas pelo npm audit

Repare só na abundância de informações apresentadas. Primeiramente, ele nos diz que o projeto tem 50 vulnerabilidades, sendo 18 baixas (low), 26 moderadas (moderate) e 6 altas (high) dentro de uma árvore de 1558 pacotes. Além disso — apesar de não ser possível ver tudo dentro desta imagem — o npm mostra pra gente, para cada uma das vulnerabilidades, qual o pacote, qual versão possui a correção, de qual pacote ele é dependência e qual o seu caminho na árvore. Impressionante, não é mesmo?

Uma vez encontrada uma vulnerabilidade temos três caminhos possíveis:

  1. Ignorar: Não recomendo fazer isso, principalmente se o seu projeto estiver em produção. Ao fazer isso, estará negligenciando a segurança dos dados dos seus usuários.
  2. Atualizar os pacotes: Quando uma atualização para corrigir a vulnerabilidade já foi lançada, o próprio npm já te indica e faz a troca automaticamente, somente executando o comando npm audit fix. No entanto, precisamos ter cuidado, pois a atualização pode conter várias outras coisas que podem quebrar o seu projeto.
  3. Trocar a solução: Esta é uma solução dolorosa, mas que por vezes pode ser necessária. Se o mantenedor de um projeto se recusar a subir uma correção para o projeto, você poderá ficar refém desta situação e seu projeto ficará vulnerável. Nestes casos, só mudando a solução.

Não há mais desculpas para não proteger a sua aplicação!

Referências