Suspeita-se que os atores da ameaça por trás do ataque à cadeia de suprimentos direcionado ao popular scanner Trivy estejam conduzindo ataques subsequentes que levaram ao comprometimento de um grande número de pacotes npm com um worm de autopropagação anteriormente não documentado, apelidado CanisterWorm.
O nome é uma referência ao fato de que o malware usa um Vasilha ICPque se refere a contratos inteligentes à prova de falsificação no blockchain do Internet Computer, como um resolvedor de queda morta. O desenvolvimento marca o primeiro abuso documentado publicamente de um recipiente ICP com o propósito explícito de buscar o servidor de comando e controle (C2), pesquisador da Aikido Security, Charlie Eriksen. disse.
A lista de pacotes afetados está abaixo –
- 28 pacotes no escopo @EmilGroup
- 16 pacotes no escopo @opengov
- @teale.io/eslint-config
- @airtm/uuid-base32
- @pypestream/floating-ui-dom
O desenvolvimento ocorre um dia depois que os agentes de ameaças aproveitaram uma credencial comprometida para publicar curiosidades maliciosas, ações triviais e lançamentos de curiosidades de configuração contendo um ladrão de credenciais. Um foco na nuvem operação cibercriminosa conhecido como TeamPCP é suspeito de estar por trás dos ataques.
A cadeia de infecção envolvendo os pacotes npm envolve o aproveitamento de um gancho pós-instalação para executar um carregador, que então descarta um backdoor Python responsável por entrar em contato com o dead drop da caixa ICP para recuperar uma URL apontando para a carga útil do próximo estágio. O facto de a infraestrutura de entrega ser descentralizada torna-a resiliente e resistente aos esforços de desmantelamento.
“O controlador do canister pode trocar a URL a qualquer momento, enviando novos binários para todos os hosts infectados sem tocar no implante”, disse Eriksen.
A persistência é estabelecida por meio de um serviço de usuário systemd, que é configurado para iniciar automaticamente o backdoor Python após um atraso de 5 segundos se ele for encerrado por algum motivo usando o comando “Reiniciar = sempre“. O serviço systemd se disfarça como ferramenta PostgreSQL (“pgmon”) em uma tentativa de passar despercebido.
O backdoor, como mencionado anteriormente, telefona para o Vasilha ICP com um User-Agent de navegador falsificado a cada 50 minutos para buscar o URL em texto simples. A URL é posteriormente analisada para buscar e executar o executável.
“Se o URL contém youtube(.)com, o script o ignora”, explicou Eriksen. “Este é o estado inativo da caixa. O invasor arma o implante apontando a caixa para um binário real e desarma-o voltando para um link do YouTube. Se o invasor atualizar a caixa para apontar para uma nova URL, cada máquina infectada pega o novo binário em sua próxima pesquisa. O binário antigo continua sendo executado em segundo plano, pois o script nunca mata os processos anteriores. “
É importante notar que um kill switch semelhante baseado no youtube(.)com também foi sinalizado pelo Wiz em conexão com o binário Trivy trojanizado (versão 0.69.4), que alcança a mesma caixa ICP por meio de outro conta-gotas Python (“sysmon.py”). No momento da escrita, o URL retornado pelo C2 é um Vídeo do YouTube de Rickroll.
O Hacker News descobriu que o recipiente ICP suporta três métodos – get_latest_link, http_request, update_link – o último dos quais permite que o agente da ameaça modifique o comportamento a qualquer momento para servir uma carga útil real.
Além disso, os pacotes vêm com um arquivo “deploy.js” que o invasor executa manualmente para espalhar a carga maliciosa para cada pacote ao qual um token npm roubado fornece acesso de maneira programática. O worm, avaliado como codificado por vibração usando uma ferramenta de inteligência artificial (IA), não faz nenhuma tentativa de ocultar sua funcionalidade.
“Isso não é acionado pela instalação do npm”, disse Aikido. “É uma ferramenta independente que o invasor usa com tokens roubados para maximizar o raio de explosão.”
Para piorar a situação, descobriu-se que uma iteração subsequente do CanisterWorm detectada nas versões 1.8.11 e 1.8.12 de “@teale.io/eslint-config” se autopropaga por conta própria, sem a necessidade de intervenção manual.
Ao contrário de “deploy.js”, que era um script independente que o invasor teve que executar com os tokens npm roubados para enviar uma versão maliciosa dos pacotes npm para o registro, a nova variante incorpora essa funcionalidade em “index.js” dentro de uma função findNpmTokens() que é executada durante a fase de pós-instalação para coletar tokens de autenticação npm da máquina da vítima.
A principal diferença aqui é que o script pós-instalação, após instalar o backdoor persistente, tenta localizar cada token npm do ambiente do desenvolvedor e gera o worm imediatamente com esses tokens, iniciando “deploy.js” como um processo em segundo plano totalmente desanexado.
Curiosamente, diz-se que o agente da ameaça trocou a carga útil do backdoor do ICP por uma string de teste fictícia (“hello123”), provavelmente para garantir que toda a cadeia de ataque esteja funcionando conforme planejado antes de adicionar o malware.
“Este é o ponto em que o ataque passa de ‘conta comprometida publica malware’ para ‘malware compromete mais contas e se publica’”, disse Eriksen. “Cada desenvolvedor ou pipeline de CI que instala este pacote e tem um token npm acessível se torna um vetor de propagação involuntário. Seus pacotes são infectados, seus usuários downstream os instalam e, se algum deles tiver tokens, o ciclo se repete.”
(Esta é uma história em desenvolvimento. Volte para obter mais detalhes.)
Deseja saber mais sobre Segurança Clique Aqui!

Perito em Computação Forense e Crimes Cibernéticos
Investigação Digital | Laudos Técnicos | Resposta a Incidentes
Bacharel em Sistemas da Informação, Certificado Microsoft Azure IA e MOS. Trabalho como Administrador de Redes, Firewall e Servidores Windows e Linux!
Minhas atividades favoritas são: Caminhar, Fazer Trilhas, Natureza, Insetos e claro ler sobre Tecnologia.



