Foi identificada uma ataque de phishing direcionado a bibliotecas JavaScript, onde uma mensagem foi enviada em nome do serviço NPM, solicitando a confirmação do e-mail. O ataque permitiu que os criminosos conseguissem tokens NPM de um dos grandes projetos JavaScript e lançassem atualizações com código malicioso para cinco pacotes NPM, totalizando cerca de 100 milhões de downloads por semana.
A mensagem enviada parecia com os avisos padrão do NPM, enviadas do endereço "support@npmjs.org", mas o link direcionava para o domínio "npnjs.com" em vez de "npmjs.com" (a terceira letra "n" em vez de "m"). Os atacantes aproveitaram o efeito psicológico que leva o cérebro, ao antecipar um resultado esperado, a não perceber distorções insignificantes, como a substituição de letras semelhantes ou a mudança na ordem das letras de uma palavra. Ao clicar no link, abria-se uma cópia completa do site npmjs.com (provavelmente um proxy foi configurado para interceptar o token de acesso).

Durante o ataque, novas versões dos pacotes foram criadas:
- eslint-config-prettier: 8.10.1, 9.1.1, 10.1.6, 10.1.7.
- eslint-plugin-prettier: 4.2.2, 4.2.3.
- synckit: 0.11.9.
- @pkgr/core: 0.2.8.
- napi-postinstall: 0.3.1.
As versões criadas continham código malicioso projetado para atacar usuários da plataforma Windows. As alterações feitas carregavam a biblioteca node-gyp.dll, que possui funcionalidade para execução remota de comandos no sistema.
O responsável percebeu que havia sido vítima de phishing cerca de uma hora após receber a primeira reclamação sobre a publicação de versões suspeitas. Ele imediatamente revogou o token de acesso, alterou senhas e marcou as versões problemáticas como obsoletas para evitar downloads por sistemas de compilação automatizados, além de ter enviado um pedido para remoção das versões problemáticas do repositório ao suporte do NPM.
Não está claro quantos usuários conseguiram baixar as versões maliciosas (por exemplo, a versão maliciosa do pacote eslint-plugin-prettier permaneceu no repositório por cerca de dois dias). Na semana passada, o pacote eslint-config-prettier teve 30 milhões de downloads e foi utilizado como dependência em 11.762 pacotes, o pacote eslint-plugin-prettier teve 21 milhões de downloads (8.468 pacotes dependentes), synckit teve 18 milhões, @pkgr/core teve 16 milhões e napi-postinstall teve 10 milhões.
Fonte: opennet.ru
