Ataque à Cadeia de Suprimentos no Axios Puxa Dependência Maliciosa do NPM
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumo
Um pacote npm malicioso, plain-crypto-js@4.2.1, foi publicado e depois incluído como uma dependência transitiva por meio de lançamentos comprometidos do cliente HTTP JavaScript amplamente usado Axios. O pacote usa um script pós-instalação para entregar um trojan de acesso remoto em múltiplas etapas, direcionado a Windows, macOS e Linux. O ataque parece ter se baseado em tokens npm de longa duração, permitindo que os agentes de ameaça liberassem versões maliciosas fora do fluxo de lançamento habitual do projeto. Detectar a dependência alterada cedo pode impedir o RAT antes da execução nos sistemas afetados.
Investigação
A pesquisa da Socket realizou uma análise estática do setup.js dropper e desofuscou strings codificadas para expor o domínio C2, lógica de entrega de carga e caminhos do sistema de arquivos alvo. Os pesquisadores identificaram três versões comprometidas do Axios e dois pacotes npm adicionais que continham o mesmo código malicioso. Eles também extraíram indicadores de rede, caminhos de arquivos e strings de agente de usuário que podem ser usados para engenharia de detecção e criação de regras.
Mitigação
As organizações devem revogar qualquer token npm de longa duração e girar as credenciais de todas as contas potencialmente afetadas. As versões comprometidas do Axios e quaisquer pacotes que dependem de plain-crypto-js@4.2.1 devem ser removidos ou rebaixados imediatamente. As equipes também devem revisar lockfiles, pipelines CI/CD e controles de segurança da cadeia de suprimentos de software para identificar atividades de publicação não autorizadas e reduzir a chance de compromisso de pacotes futuros.
Resposta
As equipes de segurança devem monitorar os logs de instalação do npm para referências a plain-crypto-js@4.2.1 e as versões afetadas do Axios. Regras de detecção devem ser criadas para execução do hook de pós-instalação, acesso à rede para sfrclak.com, e a string de agente de usuário malicioso. Se o compromisso for confirmado, os sistemas afetados devem ser isolados, a memória volátil deve ser coletada para análise, e o host deve ser reformatado se o RAT for encontrado.
Fluxo de Ataque
Detecções
MacOS Suspeito – Localizações e Nomes Plist (via file_event)
Ver
Processos Filhos Suspeitos do NodeJS [Windows] (via cmdline)
Ver
Upload/Download de Arquivo Remoto via Ferramentas Padrão (via cmdline)
Ver
Modificação de Permissões de Arquivos na Pasta Tmp Suspeita no MacOS (via cmdline)
Ver
Uso Suspeito de CURL (via cmdline)
Ver
Possível Execução por Uso de chmod e nohup em Comando Único (via cmdline)
Ver
Downloads para Pastas Suspeitas (via cmdline)
Ver
LOLBAS WScript / CScript (via process_creation)
Ver
Possibilidade de Execução Através de Linhas de Comando PowerShell Ocultas (via cmdline)
Ver
Uso de Nohup (via cmdline)
Ver
IOCs (SourceIP) para detectar: Ataque à Cadeia de Suprimentos no Axios Puxa Dependência Maliciosa do npm
Ver
IOCs (DestinationIP) para detectar: Ataque à Cadeia de Suprimentos no Axios Puxa Dependência Maliciosa do npm
Ver
IOCs (Emails) para detectar: Ataque à Cadeia de Suprimentos no Axios Puxa Dependência Maliciosa do npm
Ver
Táticas de Evasão PowerShell e VBScript em Ataque à Cadeia de Suprimentos (Criação de Processo Windows)
Ver
Detecção de Execução de Hook de Postinstall de Pacote npm Malicioso (Criação de Processo Linux)
Ver
Detecção de Script Python Malicioso e Arquivo Temporário em Ataque à Cadeia de Suprimentos Linux (Evento de Arquivo Linux)
Ver
Terminal do Windows Renomeado e VBScript Autodeletante Detectado (Evento de Arquivo Windows)
Ver
Execução de Script PowerShell com Flags Ocultas e de Bypass (Windows PowerShell)
Ver
Execução de Simulação
Pré-requisito: O Check Pré-voo de Telemetria & Baseline deve ter passado.
Racional: Esta seção detalha a execução precisa da técnica do adversário (TTP) projetada para acionar a regra de detecção. Os comandos e narrativa DEVEM refletir diretamente os TTPs identificados e visam gerar a telemetria exata esperada pela lógica de detecção.
-
Narrativa de Ataque & Comandos:
Um invasor que obteve privilégios de usuário limitados em uma estação de trabalho comprometida deseja baixar uma carga útil VBScript maliciosa via um pacote npm legítimo (cenário de cadeia de suprimentos). Para evitar a detecção genérica de PowerShell, o invasor copia
powershell.exepara um novo arquivo chamadopowershell_renamed.exemas mantém a substring “powershell” no nome do arquivo (para que a verificação doImagem|contendoainda corresponda). Em seguida, o invasor executa uma busca “onde powershell” para enumerar o caminho do binário renomeado e finalmente inicia a carga VBScript comcscript //nologopara suprimir o banner do logotipo. -
Script de Teste de Regressão:
# ------------------------------------------------- # Passo 1: Criar uma cópia renomeada de powershell.exe # ------------------------------------------------- $src = "$env:SystemRootSystem32WindowsPowerShellv1.0powershell.exe" $dst = "$env:Temppowershell_renamed.exe" Copy-Item -Path $src -Destination $dst -Force # ------------------------------------------------- # Passo 2: Usar 'onde' para referenciar o binário renomeado # ------------------------------------------------- $whereOutput = & where.exe powershell_renamed Write-Host "PowerShell renomeado localizado em: $whereOutput" # ------------------------------------------------- # Passo 3: Criar uma carga VBScript maliciosa simples # ------------------------------------------------- $vbsPath = "$env:Tempmalicious.vbs" @" Set objShell = CreateObject("WScript.Shell") objShell.Run "cmd.exe /c echo pwned > $env:Temppwned.txt", 0, False "@ | Set-Content -Path $vbsPath -Encoding ASCII # ------------------------------------------------- # Passo 4: Executar o VBScript silenciosamente usando cscript //nologo # ------------------------------------------------- & $dst -Command "cscript //nologo `"$vbsPath`"" # ------------------------------------------------- # Fim da simulação # ------------------------------------------------- -
Comandos de Limpeza:
# Remover o binário PowerShell renomeado Remove-Item -Path "$env:Temppowershell_renamed.exe" -Force -ErrorAction SilentlyContinue # Excluir o arquivo VBScript malicioso Remove-Item -Path "$env:Tempmalicious.vbs" -Force -ErrorAction SilentlyContinue # Remover evidência de execução Remove-Item -Path "$env:Temppwned.txt" -Force -ErrorAction SilentlyContinue