Aikido

Axios comprometido no npm: conta do mantenedor foi invadida e um RAT foi instalado

Escrito por
Madeline Lawrence

Principais pontos

  • A conta npm do principal mantenedor do axios foi pirateada. Foram publicadas duas versões maliciosas: axios@1.14.1 e axios@0.30.4. O npm já removeu ambos.
  • Qualquer pessoa que tenha instalado qualquer uma das versões antes da remoção deve partir do princípio de que o seu sistema está comprometido. As versões maliciosas inserem uma dependência (plain-crypto-js) que utiliza um trojan de acesso remoto multiplataforma que tem como alvo o macOS, o Windows e o Linux.
  • O Axios tem cerca de 100 milhões de downloads semanais. Trata-se de um dos ataques à Supply chain mais impactantes ataques à Supply chain do npm ataques à Supply chain registados.
  • O malware autodestrói-se após a execução, pelo que a análise pós-infecção de node_modules Não vou revelar isso. Tens de verificar os teus ficheiros de registo.

Agradecimentos pela excelente cobertura deste incidente a:

Como verificar se foi afetado pelo ataque ao Axios

Opção 1) Verificar manualmente

1. Verifique se existem versões maliciosas do Axios

Analisa os pacotes instalados e o ficheiro de bloqueio para 1.14.1 ou 0.30.4.

npm list axios 2>/dev/null | grep -E "1.14.1|0.30.4"
grep -A1 '"axios"' package-lock.json | grep -E "1.14.1|0.30.4"

2. Verifique se existe o pacote dropper oculto

Mesmo que setup.js apesar de ter sido eliminado pelo próprio utilizador, o diretório ainda existe. A simples presença deste confirma que o dropper foi executado.

ls node_modules/plain-crypto-js 2>/dev/null && echo "POTENCIALMENTE AFETADO"

3. Verifique se existem vestígios de RAT no disco

macOS

ls -la /Library/Caches/com.apple.act.mond 2>/dev/null && echo "COMPROMETIDO"

Windows

dir "%PROGRAMDATA%\wt.exe" 2>nul && echo COMPROMETIDO

Linux

ls -la /tmp/ld.py 2>/dev/null && echo "COMPROMETIDO"

Opção 2) Aikido gratuito)

Ligue os seus repositórios ao Aikidohttps://app.aikido.dev). O Malware Monitor Aikido compara as suas dependências com o feed de malware em tempo real Aikido . Se axios@1.14.1, axios@0.30.4, ou plain-crypto-js@4.2.1 Se estiver presente em algum dos seus projetos, Aikido imediatamente. Isto funciona na versão gratuita.

Verifique se o seu código foi afetado pelo ataque à cadeia de abastecimento do Axios — analise-o gratuitamente com Aikido

Etapas de remediação

  1. Fixar em versões seguras:
npm install axios@1.14.0   # Utilizadores da versão 1.x
npm install axios@0.30.3   # Utilizadores da versão 0.x
  1. Adicione substituições para impedir a resolução transitiva:
{
  "dependencies": { "axios": "1.14.0" },
  "overrides":    { "axios": "1.14.0" },
  "resolutions":  { "axios": "1.14.0" }
}
  1. Remova plain-crypto-js do diretório node_modules:
rm -rf node_modules/plain-crypto-js
npm install --ignore-scripts
  1. Se for detetado algum artefacto RAT (com.apple.act.mond, wt.exe, ld.py), não tente realizar a limpeza no local. Recrie a partir de um estado comprovadamente correto.
  2. Atualize todas as credenciais acessíveis no sistema afetado: tokens do npm, chaves de acesso da AWS, chaves privadas SSH, secrets de CI/CD, .env valores.
  3. Verifique os registos do pipeline de CI/CD para identificar quaisquer execuções que tenham instalado as versões afetadas. Atualize todos secrets inseridos.
  4. Execute npm ci --ignore-scripts como política permanente em CI/CD.

O que aconteceu no ataque à cadeia de abastecimento da Axios

O atacante comprometeu o jasonsaayman conta do npm, o principal mantenedor do axios. O e-mail da conta foi alterado para ifstap@proton.me. O atacante publicou então axios@1.14.1 às 00:21 UTC de 31 de março e axios@0.30.4 às 01:00 UTC. Tanto o ramo 1.x como o ramo antigo 0.x foram afetados no espaço de 39 minutos.

Nenhuma das versões tinha um commit, uma tag ou uma versão correspondente no repositório GitHub do axios. As versões legítimas do axios são publicadas através do GitHub Actions com a ligação OIDC Trusted Publisher. Estas foram publicadas manualmente utilizando um token de acesso npm roubado.

A única alteração em ambas as versões foi a adição de plain-crypto-js@^4.2.1 como dependência. Este pacote nunca é importado em nenhuma parte do código-fonte do axios. Existe exclusivamente para executar um gancho pós-instalação que implementa um RAT.

A dependência foi preparada cerca de 18 horas antes por uma conta de atacante distinta (por outro lado, nrwise@proton.me). Uma versão simples do isco (4.2.0) foi publicado primeiro para criar um histórico no registo, seguido pelo malicioso 4.2.1 às 23h59 UTC do dia 30 de março.

O dropper RAT (setup.js) entra em contacto com sfrclak[.]com:8000 e distribui cargas úteis específicas para cada plataforma: um ficheiro binário do macOS disfarçado de um daemon de cache da Apple em /Library/Caches/com.apple.act.mond, um script do PowerShell no Windows executado através de um VBScript oculto, com o interpretador copiado para %PROGRAMDATA%\wt.exe, e um script em Python no Linux em /tmp/ld.py. Após a execução, o dropper elimina-se a si próprio e substitui o seu próprio package.json com um toco limpo para ocultar as provas.

{{cta}}

Indicadores de comprometimento (IOCs)

Versões e dependências maliciosas do Axios:

  • axios@1.14.1 (shasum: 2553649f2322049666871cea80a5d0d6adc700ca)
  • axios@0.30.4 (shasum: d6f3f62fd3b9f5432f5782b62d8cfd5247d5ee71)
  • plain-crypto-js@4.2.1 (shasum: 07d889e2dadce6f3910dcbc253317d28ca61c766)

Rede:

  • C2: sfrclak[.]com / 142.11.206[.]73 / http://sfrclak[.]com:8000/6202033

Sistema de ficheiros:

  • macOS: /Library/Caches/com.apple.act.mond
    • sha256: 92ff08773995ebc8d55ec4b8e1a225d0d1e51efa4ef88b8849d0071230c9645a
  • Windows: %PROGRAMDATA%\wt.exe, %TEMP%\6202033.vbs, %TEMP%\6202033.ps1
    • sha256: 617b67a8e1210e4fc87c92d1d1da45a2f311c08d26e89b12307cf583c900d101 (PowerShell)
  • Linux: /tmp/ld.py
    • sha256: fcb81618bb15edfdedfb638b4c08a2af9cac9ecfa551af135a8402bf980375cf

Contas de atacantes:

Como evitar a instalação de malware

Corrente Aikido (https://github.com/AikidoSec/safe-chain) é uma ferramenta de código aberto que funciona em conjunto com o npm, o yarn e o pnpm. Verifica todos os pacotes em relação ao feed de malware Aikido antes de estes chegarem ao seu computador e impõe um período mínimo configurável para a idade dos pacotes (48 horas por predefinição), bloqueando as versões recém-publicadas até que tenham sido validadas. Neste ataque ao axios, plain-crypto-js@4.2.1 existiu durante menos de 24 horas antes de as versões comprometidas do Axios o terem incorporado. A verificação de idade do Safe Chain, por si só, teria bloqueado essa situação.

Gratuito, não são necessárias fichas:

curl -fsSL https://github.com/AikidoSec/safe-chain/releases/latest/download/install-safe-chain.sh | sh

Notícia em desenvolvimento... Fique atento para atualizações.

{{cta}}

Compartilhar:

https://www.aikido.dev/blog/axios-npm-compromised-maintainer-hijacked-rat

Assine para receber notícias sobre ameaças.

4.7/5
Cansado de falsos positivos?

Experimente Aikido como 100 mil outros.
Começar Agora
Obtenha um tour personalizado

Confiado por mais de 100 mil equipes

Agende Agora
Escaneie seu aplicativo em busca de IDORs e caminhos de ataque reais

Confiado por mais de 100 mil equipes

Iniciar Escaneamento
Veja como o pentest de IA testa seu aplicativo

Confiado por mais de 100 mil equipes

Iniciar Testes
Verifique se foi afetado pelo ataque à cadeia de abastecimento da Axios

Gratuito, não é necessário cartão de crédito

Verificar se há malware

Fique seguro agora

Proteja seu código, Cloud e runtime em um único sistema centralizado.
Encontre e corrija vulnerabilidades rapidamente de forma automática.

Não é necessário cartão de crédito | Resultados da varredura em 32 segundos.