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

Hackers sequestram pacotes NPM com mais de 2 bilhões de downloads semanais

Um ataque considerado o maior já registrado contra a cadeia de suprimentos de software comprometeu pacotes do NPM que somam mais de 2,6 bilhões de downloads semanais.

O incidente ocorreu após criminosos obterem acesso à conta de um mantenedor por meio de phishing. Com o controle da conta, os pacotes foram atualizados e tiveram código malicioso injetado nos arquivos index.js.

O malware funciona como um interceptador em navegadores, capaz de monitorar tráfego de rede e APIs de aplicações. O ataque afeta apenas usuários que acessam aplicações comprometidas pela web.

Uma vez ativo, o código malicioso monitora endereços e transações em carteiras de Ethereum, Bitcoin, Solana, Tron, Litecoin e Bitcoin Cash. Sempre que identificava uma operação, substituía o endereço de destino por outro controlado pelos criminosos, sequestrando a transação antes da assinatura.

Até o momento da publicação, os pacotes comprometidos identificados foram:

  • backslash (0,26 milhão por semana)
  • chalk-template (3,9 milhões por semana)
  • supports-hyperlinks (19,2 milhões por semana)
  • has-ansi (12,1 milhões por semana)
  • simple-swizzle (26,26 milhões por semana)
  • color-string (27,48 milhões por semana)
  • error-ex (47,17 milhões por semana)
  • color-name (191,71 milhões por semana)
  • is-arrayish (73,8 milhões por semana)
  • slice-ansi (59,8 milhões por semana)
  • color-convert (193,5 milhões por semana)
  • wrap-ansi (197,99 milhões por semana)
  • ansi-regex (243,64 milhões por semana)
  • supports-color (287,1 milhões por semana)
  • strip-ansi (261,17 milhões por semana)
  • chalk (299,99 milhões por semana)
  • debug (357,6 milhões por semana)
  • ansi-styles (371,41 milhões por semana)
Carregando publicação patrocinada...
24

Comando para verificar se o seu projeto possui alguma dependência comprometida (mesmo que seja de uma sub-dependência):

npm ls [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected]

Se o comando acima listar qualquer coisa, um pacote malicioso foi instalado.

Em paralelo a isso, você pode rodar um audit geral no projeto, mas que vai daí avaliar qualquer falha, inclusive falsos positivos, pois esse comando é conhecido por fazer isso, então até prefiro primeiro rodar o npm ls ali de cima:

npm audit
4
1
1

Filipe, eu sei que você fez a verificação dessas versões específicas, mas as versões abaixo dessas também não estariam comprometidas?
Nenhuma das minhas dependencias usa o anti-styles na 6.2.2 por exemplo, mas tenho uma que usa na 6.2.1.

2
2
4

O mantenedor escreveu um comentário no Hacker News:

Hi, yep I got pwned. Sorry everyone, very embarrassing.

More info:

Affected packages (at least the ones I know of):

It looks and feels a bit like a targeted attack.

Will try to keep this comment updated as long as I can before the edit expires.


Chalk has been published over. The others remain compromised (8 Sep 17:50 CEST).

NPM has yet to get back to me. My NPM account is entirely unreachable; forgot password system does not work. I have no recourse right now but to wait.

Email came from support at npmjs dot help.

Looked legitimate at first glance. Not making excuses, just had a long week and a panicky morning and was just trying to knock something off my list of to-dos. Made the mistake of clicking the link instead of going directly to the site like I normally would (since I was mobile).

Just NPM is affected. Updates to be posted to the /debug-js link above.

Again, I'm so sorry.

E acredito que o comentário do GitHub que ele queria linkar era este.

2
1
5

Simples, imagina quantos deploys são feitos por semana que irão executar um npm i, quando CI/CD são feitos, quando projetos novos são iniciados, isso falando no mundo todo, é totalmente possível.

2
0
1

Como o ataque foi voltado principalmente para criptomoedas, ao infectarem vários pacotes isso pode virar um backdoor enorme, já que milhares de projetos usam essas bibliotecas

1

coloquei um overrides no package.json para garantir o uso das versões corretas. Verifique cada uma individualmente no site npm para garantir a versão mais recente e segura.

"overrides": {
  "ansi-regex": "6.2.2",
  "strip-ansi": "7.1.0",
  "string-width": "8.1.0",
  "ansi-styles": "6.2.1",
  "chalk": "5.4.1",
  "supports-color": "10.2.1",
  "color-convert": "3.1.1",
  "color-name": "2.0.1",
  "is-arrayish": "0.3.3",
  "slice-ansi": "7.1.1",
  "wrap-ansi": "9.0.1",
  "debug": "4.4.2",
  "color": "5.0.1",
  "color-string": "2.1.1",
  "simple-swizzle": "0.2.3",
  "supports-hyperlinks": "4.1.1",
  "has-ansi": "6.0.1",
  "chalk-template": "1.1.1",
  "backslash": "0.2.1",
  "error-ex": "1.3.3",
  "proto-tinker-wc": "1.8.7"
}

1