Executando verificação de segurança...
19

Atenção! Você pode estar instalando um pacote npm malicioso.

Há alguns dias, exatamente 4 dias atrás, criei um pacote NPM bobo apenas para testar algumas configurações do Rollup. O pacote transforma um número para o padrão da moeda brasileira.

Esse o pacote:

import { moneyFormatBR } from 'money-format-br'
const value = moneyFormatBR(10)
// R$ 10,00

Já foi baixado 181 vezes, pode-se conferir aqui:
https://www.npmjs.com/package/money-format-br

Isso tudo me levantou uma preocupação (que até então eu tinha negligenciado), é algo tão simples, juntando ao fato de ninguém me conhecer e já ir colocando meu código em seus respectivos projetos.

O que impede de pacotes de terceiros possuírem algo malicioso? Nada!

Neste caso, eu sou o único contribuidor, e igual ao meu caso, existem vários outros pacotes que devs instalam sem nem olhar o código.
Caso tivessem olhado meu código, iriam ver que a função faz apenas isso:

value.toLocaleString('pt-BR', { style: 'currency', currency: 'BRL' })

E ai, como vocês se protegem de pacotes de terceiros?

8

Em empresas aonde a preocupação existe, seja por aderência de políticas de segurança, seja porque a empresa é grande o bastante para que a segurança e confiabilidade represente parte de sua imagem enquanto marca, os projetos fazem uso de ferramentas que fazem dependency-check das vulnerabilidades em seus pipelines de CI/CD.
Muito comum usarem base de dados como a NIST, por exemplo.
Nesse ínterim, posso citar algumas que fazem esse tipo de verificação:

  • Snyk;
  • Dynatrace;
  • OWASP Dependency-check.
3

Nada impede, mas se você ficar no escopo dos mais populares dificilmente vai passar por isso. Se tiver algo descobrem rapidinho. Agora quem baixa dependência até pra declarar variável, tá sujeiro a esse tipo de coisa mesmo, infelizmente.

2

Tento sempre baixar pacotes conhecidos do npm, porém, se acabo não conseguindo encontrar nenhum pacote que tenha um número alto de downloads, tento resolver o problema na mão uitlizando o que tenho ao meu alcance dentro do Nodejs.

Caso alguém tenha outra sugestão, gostaria muito de saber!!

0