:::: MENU ::::

Npm audit, checagem de segurança agora por padrão no cli

Dia 24 de Abril, talvez, para alguns, apenas um dia qualquer, mas não para nós! Nesse dia a npm inc anunciou a versão 6 do nosso estimado npm, dentre as muitas novidades, tais como: melhoria de performance, otimização para ci com o comando “npm ci”, resolução automática de conflitos;

O que mais me chamou a atenção foi o novo comando “npm audit”, quem já atualizou o npm para a versão 5.10.0 (mesmo sendo adicionado para a versão 6 eles adicionaram um update na versão 5 adicionando essa melhoria)  já têm acesso a esse nova funcionalidade que traz uma grande melhoria para o ambiente Node possibilitando verificações de segurança direto no console do npm.

De onde vem o audit

A Node Security Platform, também conhecida como NSP, é uma plataforma responsável por descobrir vulnerabilidades em códigos, assim como a Snyk que é outra ferramenta muito conhecida para esse fim.

Em 11 de Abril desse ano (2018) a npm inc adquiriu uma empresa chamada Lift. A Lift é responsável por manter a Node Security Platform.

A aquisição da NSP possibilitou ao npm o lançamento do audit permitindo verificar e corrigir falhas de segurança diretamente pelo npm cli (menos um módulo para instalar!!!).

Quem quiser testar direto o nsp cli fora do npm pode ir lá no site da NSP, adicionar um repositório do github ou baixar o nsp cli via npm e rodar dentro de um projeto, o que ele faz é passar o código por uma bateria de testes baseada nas ameaças atuais e reportar essas ameaças, inclusive nas dependências.
Às vezes utilizamos alguma dependência que possui falhas de segurança e não sabemos, por isso esse tipo de ferramenta é indispensável para nossos projetos.

Como o audit funciona

O audit é um novo comando que vem por padrão na versão do npm  5.10.0 ou superior que abstrai o nsp dentro do npm, não é necessário nenhuma configuração extra para começar a utilizá-lo, ele executa automaticamente a cada npm install. Mas, se você quiser rodar a ferramenta de forma isolada basta executar o seguinte comando na raiz do seu projeto:


$ npm audit

Se o seu projeto possuir alguma falha de segurança, a saída será similar a esta:

A saída também mostrará as ameaças uma a uma, incluindo sua severidade e a possível correção:

 

(Coloquei só uma porque ia ficar gigante colocar todo o output, mas vocês pegaram a ideia né?)

No exemplo acima o npm audit informa que o pacote randomatic, dependência do fill-range que é dependência do nodemon, tem uma falha: “Cryptographically Weak PRNG” (nem ideia do que é isso, mas pelo nome já dá medo).

A resposta também inclui a severidade da ameaça, que nesse caso é Low, mas poderia ser  Moderate, High ou Critical.

O próprio audit já sugere um update nessa dependência, pois ele verificou internamente e essa dependência tem um patch pra isso.

Após executar o fix ele ainda informa que tenho 12 problemas mas que aquele foi corrigido.

O que fazer quando não tem um patch para a ameaça?

Caso não exista ainda um fix, é um bom momento para abrir uma issue ou pull request para o pacote que você está usando,provavelmente mais gente está sendo afetada.

Valeu galera!

Share this content