SOC Prime Bias: Critical

26 Aug 2026 06:51 UTC

Ataque à cadeia de suprimentos do Rust mira arrayref, internment, e append-only-vec

Author Photo
SOC Prime Team linkedin icon Seguir
Ataque à cadeia de suprimentos do Rust mira arrayref, internment, e append-only-vec
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Resumo

Um ataque sofisticado à cadeia de suprimentos visou o ecossistema Rust comprometendo uma conta legítima de mantenedor e usando uma identidade de typosquatting para injetar dependências maliciosas em tempo de compilação. Os atacantes contaminaram três crates amplamente usados, arrayref, internment, e append-only-vec, para executar um dropper de execução remota de código durante o processo de construção do Cargo. Isso possibilitou a execução silenciosa de código em estações de trabalho de desenvolvedores e pipelines CI/CD durante a compilação rotineira.

Investigação

Pesquisadores analisaram o ataque usando o Harden-Runner, que capturou o script de construção malicioso tentando uma conexão de saída para um servidor de carga útil através da porta 9089. Revisão forense do Git history do crates.io-index revelou a inserção direcionada de dependências maliciosas e um artificio de yank-and-upgrade projetado para empurrar os desenvolvedores para versões comprometidas. Pesquisadores também identificaram mecanismos secundários de persistência e comportamento de C2 relatado por usuários afetados.

Mitigação

A mitigação imediata inclui fixar crates legítimos em versões seguras verificadas e auditar arquivos Cargo.lock para lançamentos de dependências comprometidas. As organizações devem limpar caches locais e CI/CD, incluindo ~/.cargo/registry/cache, para remover arquivos .crate maliciosos. A filtragem de saída para conexões incomuns de ambientes de compilação e a disciplina rigorosa de lockfile também são defesas críticas de longo prazo.

Resposta

Se versões afetadas forem encontradas em um lockfile, o ambiente de construção deve ser tratado como comprometido e todas as credenciais acessíveis, incluindo chaves SSH, tokens de nuvem e segredos de CI/CD, devem ser rotacionados. Os sistemas dos desenvolvedores devem ser examinados em busca de artefatos de persistência, como serviços systemd não autorizados ou arquivos suspeitos em diretórios de configuração. Todos os artefatos de software produzidos durante o período de exposição devem ser reconstruídos a partir de fontes limpas e verificadas.

Fluxo do Ataque

Detecções

Possíveis Pontos de Persistência [ASEPs – Software/NTUSER Hive] (via registry_event)

Equipe SOC Prime
21 Ago 2026

Possíveis Comunicações de C2 Sobre HTTP para IP Direto com Porta Incomum (via proxy)

Equipe SOC Prime
21 Ago 2026

Arquivo Oculto Criado em Host Linux (via file_event)

Equipe SOC Prime
21 Ago 2026

IOCs (HashSha256) para detectar: Ataque à Cadeia de Suprimentos Rust: arrayref, internment, e append-only-vec Envenenados pelo Dropper de Tempo de Construção proc-macro1

Regras de IA da SOC Prime
21 Ago 2026

IOCs (SourceIP) para detectar: Ataque à Cadeia de Suprimentos Rust: arrayref, internment, e append-only-vec Envenenados pelo Dropper de Tempo de Construção proc-macro1

Regras de IA da SOC Prime
21 Ago 2026

IOCs (DestinationIP) para detectar: Ataque à Cadeia de Suprimentos Rust: arrayref, internment, e append-only-vec Envenenados pelo Dropper de Tempo de Construção proc-macro1

Regras de IA da SOC Prime
21 Ago 2026

Detecção de Conexão de Rede de Saída Anômala [Conexão de Rede do Windows]

Regras de IA da SOC Prime
21 Ago 2026

Execução de PowerShell e VBScript Maliciosos em Ataque à Cadeia de Suprimentos Rust [Windows Powershell]

Regras de IA da SOC Prime
21 Ago 2026

Execução de Processo de Construção Suspeito em Diretório Temporário Unix [Criação de Processos no Linux]

Regras de IA da SOC Prime
21 Ago 2026

Execução da Simulação

Pré-requisito: O Check de Pré-vôo de Telemetria & Base foi aprovado.

Justificativa: 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 a narrativa DEVEM refletir diretamente as TTPs identificadas e buscar gerar a telemetria exata esperada pela lógica de detecção. Exemplos abstratos ou não relacionados levarão a um diagnóstico incorreto.

  • Narrativa e Comandos do Ataque: O adversário injectou com sucesso um crate malicioso em um projeto Rust. Quando o processo de construção é iniciado, o script build.rs executa um thread em segundo plano que tenta estabelecer uma conexão com um servidor de C2 remoto na porta 9089 para buscar uma carga útil. Isso simula a “Conexão de Rede de Saída Anômala” descrita na regra. O objetivo é acionar o alerta de log de firewall/rede ao atingir a porta específica 9089.

  • Script de Teste de Regressão:

    # Simule um dropper em tempo de construção tentando se conectar a um servidor C2 na porta 9089
    # Usamos um cliente TCP para simular a tentativa de conexão de rede.
    
    $C2_IP = "127.0.0.1" # Localhost para evitar tráfego externo real durante o teste
    $C2_PORT = 9089
    
    Write-Host "Simulando atividade de rede do processo de construção..." -ForegroundColor Cyan
    try {
        $client = New-Object System.Net.Sockets.TcpClient
        $beginConnect = $client.BeginConnect($C2_IP, $C2_PORT, $null, $null)
        $success = $beginConnect.AsyncWaitHandle.WaitOne(1000, $false)
    
        if ($success) {
            Write-Host "Conexão bem-sucedida! A telemetria deve ser gerada." -ForegroundColor Green
            $client.EndConnect($beginConnect)
        } else {
            Write-Host "Conexão falhou (esperado se nenhum ouvinte estiver ativo), mas a telemetria ainda deve mostrar a tentativa." -ForegroundColor Yellow
        }
        $client.Close()
    } catch {
        Write-Host "Erro durante a simulação: $($_.Exception.Message)" -ForegroundColor Red
    }
  • Comandos de Limpeza:

    # Nenhuma alteração persistente feita pelo script; no entanto, certifique-se de que quaisquer ouvintes locais sejam parados.
    # Se um ouvinte foi iniciado para teste, use:
    Stop-Process -Name "nc" -ErrorAction SilentlyContinue
    Write-Host "Limpeza concluída." -ForegroundColor Green