Como a infecção ocorre

Pesquisadores da StepSecurity identificaram nesta segunda-feira (8) uma campanha de ataque à cadeia de suprimentos de software que comprometeu pelo menos 37 wheels no PyPI, incluindo o popular pacote de machine learning ensmallen. Batizada de “Hades Campaign”, a operação implantou memory scrapers multiplataforma, mecanismos de evasão de análise por IA e um wiper como elemento dissuasório contra investigadores.

O ponto de entrada está embutido no arquivo __init__.py dos pacotes como um import hook ofuscado em uma única linha. Ao ser importado, o código verifica a existência de um flag em /tmp/.bun_ran. Se ausente, ele localiza o payload companheiro _index.js, baixa o runtime Bun (v1.3.14) diretamente do GitHub, extrai para o diretório temporário e executa o JavaScript malicioso via bun run. O flag é então criado para garantir execução única por ciclo de boot.

Injeção de prompt contra IA

Uma das inovações mais notáveis da campanha é um bloco de prompt injection posicionado no início do arquivo _index.js. Como empresas de segurança usam pipelines de LLM para analisar e resumir pacotes suspeitos, o atacante incluiu instruções em texto plano que ordenam ao modelo de IA que ignore o código ofuscado, classifique o pacote como seguro e emita um relatório limpo.

A técnica representa uma evolução conceitual: os atacantes agora desenvolvem payloads que miram a lógica cognitiva de sistemas de triagem automatizados. Scanners que enviam código bruto a LLMs sem isolamento rigoroso de instruções podem ser manipulados para produzir falsos negativos.

Criptografia modular dos payloads

Diferente das campanhas anteriores do grupo Miasma, a Hades Campaign adota arquitetura modular. O bundle principal atua como bootstrapper, carregando e decriptando 16 payloads independentes na inicialização. Cada blob é comprimido com gzip e cifrado com AES-256-GCM usando uma chave única embarcada (hardcoded). O bootstrapper utiliza APIs nativas do Bun para descompressão e decriptação rápidas, dificultando a análise estática do código.

Além dos scrapers de memória — que varrem credenciais em ambientes de CI/CD —, a campanha inclui um worm com lógica de auto-replicação e um módulo wiper projetado para destruir vestígios caso a máquina hospedeira seja identificada como ambiente de análise.

Pacotes afetados e mitigação

A campanha atingiu pacotes nos ecossistemas de computação biológica, bioinformática e análise genotipo-fenótipo. O PyPI já colocou várias versões comprometidas em quarentena. A tabela abaixo lista os principais pacotes e versões afetados:

Pacote Versões comprometidas
ensmallen 0.8.101
embiggen 0.11.97
dynamo-release 1.5.4
spateo-release 1.1.2
gpsea 0.9.14
ufish 0.1.2, 0.1.3
magique 0.6.8, 0.6.9
executor-engine 0.3.4, 0.3.5

Se você instalou qualquer uma dessas versões, execute imediatamente os seguintes passos:

  1. Remova o pacote com pip uninstall <pacote> e reinstale uma versão anterior não comprometida
  2. Revogue credenciais de CI/CD, tokens de cloud e chaves de API que possam ter sido expostas
  3. Verifique a existência dos artefatos maliciosos: /tmp/.bun_ran, /tmp/b/ e _index.js nos caminhos de módulos Python
  4. Instale ferramentas como Socket.dev ou pip-audit para monitoramento contínuo de dependências

Fontes