O ataque a pacotes acompanhantes no repositório NPM alcançou um novo nível. Além do uso de malware para interceptar pagamentos e informações confidenciais, os atacantes passaram a implantar um verme em pacotes comprometidos para automatizar a injeção de malware em dependências. O uso do verme foi registrado após a comprometimento do pacote NPM @ctrl/tinycolor, que possui 2,2 milhões de downloads semanais e é uma dependência direta de 964 pacotes. Como resultado da atividade do verme, o ataque afetou 187 pacotes, para os quais foram criadas versões maliciosas (477 versões maliciosas).
Durante um novo ataque, após obter informações da conta do acompanhante por meio de phishing, os atacantes publicam uma versão de pacote com um verme que é ativado ao instalar o pacote comprometido entre as dependências. Após a ativação, o verme busca credenciais no ambiente atual, carregando e executando a ferramenta TruffleHog. Se um token de conexão ao diretório NPM for encontrado, o verme publica automaticamente uma nova versão maliciosa e compromete em cadeia a árvore de dependências. Além do token de acesso ao NPM, o verme captura chaves de acesso ao GitHub e a serviços de nuvem como AWS, Azure e GCP (Google Cloud Platform), juntamente com outros dados confidenciais que o scanner TruffleHog pode descobrir.
Versões maliciosas são criadas para os 20 pacotes mais populares, aos quais o token NPM encontrado tem acesso. A funcionalidade de publicação de versão é implementada na forma da função NpmModule.updatePackage, que carrega o arquivo de origem do pacote, altera o número da versão e adiciona um gancho postinstall no arquivo package.json, insere o manipulador bundle.js, reempacota o pacote e o publica. A operação é suportada em Linux e macOS.
O verme recebeu o codinome Shai-Hulud (um verme gigante mencionado no romance Duna). As credenciais encontradas no sistema são hospedadas no GitHub através da criação de repositórios nomeados Shai-Hulud (por exemplo, "B611/Shai-Hulud"), e também são refletidas de forma codificada nos logs do GitHub Actions. No repositório criado, existe um arquivo data.json, que contém uma string com informações sobre o sistema, variáveis de ambiente e chaves de acesso interceptadas, codificadas em base64. No CI baseado no GitHub, para transmitir informações a um host externo, o verme cria um manipulador do GitHub Actions (.github/workflows/shai-hulud-workflow.yml). Aparentemente, o ataque não se limita aos 187 pacotes mencionados, pois novos repositórios com o nome Shai-Hulud e arquivo data.json continuam a surgir no GitHub.

Entre outras coisas, como resultado da atividade do verme, 25 pacotes da empresa CrowdStrike, que desenvolve ferramentas para proteger contra ataques através de dependências (Supply Chain). Segundo a CrowdStrike, os pacotes comprometidos não foram utilizados na plataforma Falcon e o ataque não se espalhou para os clientes. Também foi revelado que a onda anterior de publicação de lançamentos maliciosos no NPM, realizada sem o verme, afetou o projeto gemini-cli, desenvolvido pela Google.
Fonte: opennet.ru
