Hack Alerta

Mini Shai-Hulud compromete pacotes @antv no npm para roubar credenciais de CI/CD

Campanha Mini Shai-Hulud compromete pacotes @antv no npm para roubar credenciais de CI/CD, utilizando ofuscação avançada e persistência em ambientes de nuvem.

Uma campanha sofisticada de ataque à cadeia de suprimentos de software foi identificada, visando um dos ecossistemas mais confiáveis do mundo do software de código aberto. Batizada de "Mini Shai-Hulud", a operação focou no ecossistema de pacotes @antv do npm, uma coleção de bibliotecas de visualização de dados amplamente utilizadas que alimentam painéis e aplicações para desenvolvedores globalmente. O ataque foi caracterizado por ser silencioso, preciso e desenhado para causar danos máximos antes de qualquer detecção, comprometendo contas de mantenedores e injetando versões maliciosas de pacotes populares.

Descoberta e escopo da campanha

A investigação foi conduzida por pesquisadores de segurança da Microsoft, que revelaram o escopo completo do que o malware era capaz de fazer. A ameaça começou com a compromissão de uma conta de mantenedor dentro da organização @antv. A partir desse ponto, o ator malicioso publicou versões maliciosas de pacotes de gráficos centrais. O que tornou este ataque particularmente perigoso foi a sua propagação: a infecção se espalhou para bibliotecas dependentes, como o echarts-for-react, um pacote com mais de um milhão de downloads semanais. Um único pacote envenenado se espalhou silenciosamente em milhares de pipelines de desenvolvedores quase overnight.

O caso originou-se quando a Microsoft identificou o comportamento anômalo nos pacotes do @antv. A equipe de resposta a incidentes analisou o tráfego e os artefatos deixados no ambiente de CI/CD, confirmando que o objetivo não era apenas roubar dados, mas estabelecer uma presença persistente e exfiltrar credenciais de alto valor. A ação coordenada resultou na remoção de 640 pacotes maliciosos pela plataforma GitHub e na invalidação de mais de 61.000 tokens do npm com permissões de escrita.

Vetor e exploração técnica

O vetor de ataque principal foi o hook preinstall dentro do pacote. Este hook é executado automaticamente durante o comando npm install, o que significa que os desenvolvedores não precisavam executar comandos extras para que a infecção começasse. O payload malicioso era um arquivo JavaScript ofuscado de aproximadamente 499 KB, desenhado para executar no momento exato em que um desenvolvedor instalava a dependência.

A ofuscação do JavaScript utilizou duas camadas de proteção. A primeira envolveu 1.732 strings codificadas em Base64 embaralhadas em um array rotacionado. A segunda camada utilizou um cipher personalizado baseado em PBKDF2 e SHA-256, decodificando strings críticas apenas em tempo de execução. Essa técnica complexa foi projetada para evadir detecções estáticas de antivírus e ferramentas de análise de segurança de software (SAST).

Além disso, o malware incluiu um environment gating (controle de ambiente) que fazia com que ele saísse imediatamente se não estivesse rodando dentro de um ambiente Linux do GitHub Actions. Isso ajudou a evitar detecções durante testes normais em máquinas locais, onde o contexto de CI/CD não estaria presente, tornando a infecção mais difícil de ser reproduzida em laboratórios de análise.

Roubo de credenciais em ambientes de nuvem

Uma vez ativo, o payload iniciou uma varredura agressiva por segredos em seis plataformas principais. Para a Amazon Web Services (AWS), o malware consultou o Instance Metadata Service e chamou o SecretsManager em todas as regiões disponíveis. Para o HashiCorp Vault, ele procurou em mais de doze caminhos de token. Para o Kubernetes, leu tokens de conta de serviço e enumerou segredos de namespace.

Uma das capacidades mais preocupantes foi a capacidade de raspar a memória do processo diretamente do runner do GitHub Actions, contornando a máscara padrão de segredos. Para o 1Password, o malware tentou até mesmo contornar a autenticação de dois fatores para extrair senhas mestras. O exfiltração de dados ocorreu por dois canais: o principal usou uma conexão HTTPS criptografada para um domínio de comando e controle (C2) na porta 443, enquanto um canal de fallback usou a API de Dados do Git do GitHub para criar commits em repositórios de vítimas em branches não protegidas.

Persistência e ofuscação de cadeia de suprimentos

O malware também trabalhou para manter o acesso a longo prazo. Ele instalou o runtime Bun e o utilizou para executar um payload de segunda etapa. O atacante injetou uma regra de sudo sem senha através de um bind mount e modificou as configurações de DNS editando o arquivo hosts. Uma técnica particularmente avançada foi a falsificação de atestados de proveniência da cadeia de suprimentos de software através do Sigstore, fazendo com que pacotes maliciosos parecessem legítimos e assinados.

Essa capacidade de forjar assinaturas digitais é crítica, pois compromete a confiança na integridade do software. Se um pacote malicioso aparece como assinado e verificado, as ferramentas de auditoria de segurança podem ser enganadas, permitindo que a infecção persista mesmo após a descoberta inicial do pacote original.

Impacto e alcance global

O escopo do roubo de credenciais foi impressionante. A Microsoft identificou mais de 2.200 repositórios públicos criados sob contas de vítimas como uma assinatura da campanha. O impacto se estende a qualquer organização que utilize bibliotecas de visualização de dados baseadas no @antv em seus ambientes de desenvolvimento. A remoção dos pacotes maliciosos pelo GitHub e a invalidação dos tokens são medidas reativas, mas o dano potencial já ocorreu para aqueles que instalaram as versões comprometidas.

Para os CISOs, o risco não é apenas técnico, mas operacional. A exposição de credenciais de nuvem pode levar a vazamentos de dados massivos, criptografia de dados por ransomware ou uso de recursos de nuvem para mineração de criptomoedas. A contaminação de pipelines de CI/CD pode comprometer a integridade de todo o ciclo de vida de desenvolvimento de software (SDLC) de uma organização.

Medidas de mitigação recomendadas

A Microsoft recomenda que desenvolvedores revisem as árvores de dependência para qualquer uso de pacotes afetados do @antv. As etapas críticas incluem:

  • Executar npm install com a flag --ignore-scripts para prevenir a execução de hooks maliciosos.
  • Pinning de versões conhecidas como boas para evitar atualizações automáticas para versões comprometidas.
  • Rotação de qualquer credencial exposta, especialmente tokens do npm, chaves de API da AWS e credenciais do GitHub.
  • Auditar contas do GitHub para repositórios públicos inesperados criados durante a janela de exposição.

Além disso, organizações devem considerar a implementação de políticas de segurança de software que validem a proveniência dos pacotes antes da instalação, utilizando ferramentas de SBOM (Software Bill of Materials) e assinaturas de código verificáveis.

Implicações regulatórias e LGPD

Para empresas brasileiras, este incidente tem implicações diretas sob a Lei Geral de Proteção de Dados (LGPD). Se credenciais de acesso a sistemas que processam dados pessoais foram comprometidas, a organização pode ser obrigada a notificar a Autoridade Nacional de Proteção de Dados (ANPD) e os titulares afetados, dependendo da natureza dos dados vazados. A falha em proteger a cadeia de suprimentos de software pode ser interpretada como uma falha de segurança da informação, sujeitando a empresa a sanções administrativas.

A governança de segurança deve incluir a avaliação de riscos de terceiros e a verificação de integridade de bibliotecas de código aberto utilizadas em aplicações críticas. A conformidade com frameworks como NIST CSF e ISO 27001 exige que as organizações monitorem e protejam seus ativos de software, incluindo dependências de terceiros.

O que os CISOs devem fazer imediatamente

Diante da descoberta da campanha Mini Shai-Hulud, os líderes de segurança devem priorizar as seguintes ações:

  1. Auditoria de Dependências: Verificar se há pacotes do @antv em uso nos ambientes de produção e desenvolvimento.
  2. Rotação de Segredos: Considerar a rotação proativa de credenciais de CI/CD e serviços em nuvem, mesmo sem evidência direta de vazamento.
  3. Monitoramento de Tráfego: Implementar regras de detecção para tráfego de saída incomum de servidores de build, especialmente conexões para domínios não autorizados.
  4. Educação de Desenvolvedores: Alertar as equipes de engenharia sobre os riscos de instalação de pacotes de código aberto sem verificação de integridade.

Perguntas frequentes

Qual é o risco principal deste ataque?
O risco principal é o roubo de credenciais de alto valor, como chaves de nuvem e tokens de acesso, que permitem aos atacantes acessar sistemas críticos e dados sensíveis.

Como posso saber se fui afetado?
Verifique os logs de instalação do npm e procure por pacotes @antv instalados durante o período de comprometimento. Utilize ferramentas de análise de dependências para identificar versões suspeitas.

Devo confiar em atualizações de segurança?
Sim, mas sempre verifique a integridade dos pacotes e utilize assinaturas verificáveis. A confiança cega em repositórios públicos deve ser substituída por validação contínua.

Conclusão

A campanha Mini Shai-Hulud destaca a evolução das ameaças à cadeia de suprimentos de software. Ataques que visam diretamente o processo de build e instalação de dependências representam um risco crítico para a segurança da informação moderna. A resposta eficaz requer não apenas ferramentas técnicas, mas também uma mudança cultural na forma como as organizações gerenciam e validam seu software de terceiros. A vigilância contínua e a adoção de práticas de segurança de software (DevSecOps) são essenciais para mitigar esses riscos.


Baseado em publicação original de Cyber Security News
Publicado pela Redação Hack Alerta com base em fontes externas citadas e monitoramento editorial do Hack Alerta. Para decisões técnicas, operacionais ou jurídicas, confirme sempre os detalhes na fonte original.