Campanha Hades Lança Novos Ataques de Cadeia de Suprimentos Python, Visa Segredos de Desenvolvedores
Uma nova onda de ataques de cadeia de suprimentos, apelidada de 'Hades', emergiu da campanha 'Miasma', infiltrando o registro do Python Package Index (PyPI). Esta operação sofisticada utiliza 37 artefatos maliciosos do tipo 'wheel' em 19 pacotes, continuando a linhagem de ataques 'Mini Shai-Hulud' projetada para roubar credenciais sensíveis de desenvolvedores e se propagar por redes.
A campanha de cadeia de suprimentos **Miasma** escalou com uma nova onda de ataques chamada **Hades**, impactando o registro do **Python Package Index (PyPI)**. Esta iteração mais recente envolve 37 artefatos maliciosos do tipo 'wheel' em 19 pacotes, refinando ainda mais os ataques no estilo 'Mini Shai-Hulud' para atingir ecossistemas específicos de desenvolvedores.
De acordo com uma análise da **Socket**, os lançamentos comprometidos incluíam um arquivo `*-setup.pth`. Este arquivo é projetado para ser executado automaticamente durante a inicialização do Python, baixando o runtime JavaScript **Bun** e, subsequentemente, lançando um payload JavaScript ofuscado chamado `_index.js`.
### Pacotes Maliciosos Identificados
Os seguintes pacotes foram identificados como parte da campanha **Hades**:
* bramin 0.0.2, 0.0.3, 0.0.4
* cmd2func 0.2.2, 0.2.3
* coolbox 0.4.1, 0.4.2
* dynamo-release 1.5.4
* executor-engine 0.3.4, 0.3.5
* executor-http 0.1.3, 0.1.4
* funcdesc 0.2.2, 0.2.3
* magique 0.6.8, 0.6.9
* magique-ai 0.4.4, 0.4.5
* mrbios 0.1.1, 0.1.2
* napari-ufish 0.0.2, 0.0.3
* nucbox 0.1.2, 0.1.3
* okite 0.0.7, 0.0.8
* pantheon-agents 0.6.1, 0.6.2
* pantheon-toolsets 0.5.5, 0.5.6
* spateo-release 1.1.2
* synago 0.1.1, 0.1.2
* ufish 0.1.2, 0.1.3
* uprobe 0.1.3, 0.1.4
### Payload e Exfiltração em Evolução
Consistente com as campanhas anteriores **Shai-Hulud** e **Miasma**, o payload malicioso baixa e instala o runtime JavaScript **Bun**. Este runtime é então usado para executar um stealer JavaScript altamente ofuscado, capaz de exfiltrar uma ampla gama de dados de sistemas de desenvolvedores.
Os dados roubados incluem segredos relacionados a **GitHub**, **npm**, **PyPI**, **RubyGems**, **JFrog**, **CircleCI**, **Anthropic**, **AWS**, **GCP**, **Azure** e **Kubernetes**. Ele também visa configurações do **Docker**, tokens do **Vault**, chaves **SSH**, históricos de shell, arquivos `.env`, arquivos `.npmrc`, arquivos `.pypirc`, configurações do **Claude**/**MCP**, e outras credenciais locais ou acessíveis pelo runner.
Uma mudança chave na campanha **Hades** é o marcador de exfiltração. Enquanto iterações anteriores usavam descrições de repositório do **GitHub** como "Miasma: The Spreading Blight", a última onda emprega "Hades - The End for the Damned" ou "Hades * The End for the Damned".
A **Socket** elabora que **Hades** é um ramo direto da linhagem **Mini Shai-Hulud** / **Miasma**, não um incidente separado. A metodologia principal permanece: abusar de canais de pacotes confiáveis, executar antes do uso normal do pacote, preparar um payload JavaScript com **Bun**, roubar credenciais de desenvolvedor e CI/CD, e utilizar exfiltração e propagação centradas no **GitHub**.
### Novo Vetor de Execução
Desta vez, os atacantes estão alavancando um arquivo `*-setup.pth`, processado pelo módulo `site` do Python durante a inicialização do interpretador. Isso permite que o payload malicioso seja executado imediatamente após a instalação, sem exigir que a vítima importe explicitamente o pacote envenenado. O payload então baixa e executa o **Bun** do **GitHub** para executar o stealer, mas apenas após verificar se a localidade do sistema é russa.
A **Socket** observa o paralelo com o problema `npm install-hook` explorado em ataques anteriores de **Shai-Hulud** e **Miasma**, destacando que, embora a sintaxe seja diferente, a implicação de segurança — execução durante a instalação de dependências antes da revisão do código — permanece a mesma.
### Cluster Hades e Evasão de IA
A campanha **Hades** também comprometeu pacotes dentro do ecossistema de biologia computacional, bioinformática e análise genótipo-fenótipo, incluindo:
* embiggen 0.11.97
* ensmallen 0.8.101
* gpsea 0.9.14
* mflux-streamlit 0.0.3, 0.0.4
* nhmpy 2.4.7
* ppkt2synergy 0.1.1
* pyphetools 0.9.120
Este cluster usa uma abordagem distinta, incorporando o ponto de entrada como um hook de importação ofuscado de linha única dentro do arquivo `__init__.py` do pacote. O resultado, no entanto, é idêntico: baixar e executar o runtime **Bun** seguido pelo payload JavaScript.
A **StepSecurity** enfatiza o uso consistente do runtime **Bun**. Baixar o **Bun** como um arquivo ZIP autônomo permite que o malware execute tarefas complexas de JavaScript em ambientes que não possuem uma instalação **Node.js**, contornando assim os controles tradicionais do gerenciador de pacotes e os logs de proxy de rede.
Em um desenvolvimento notável, o malware incorpora uma nova técnica de evasão de defesa de inteligência artificial (IA). Ele inclui uma injeção de prompt em texto simples projetada para enganar ferramentas de análise de pacotes baseadas em Large Language Model (LLM) a classificar o pacote como seguro.
Além disso, o malware consulta commits do **GitHub** para a palavra-chave "TheBeautifulSnadsOfTime" para extrair um payload JavaScript codificado em Base64. Ele também consulta o **GitHub** para commits que correspondam a "firedalazer" para buscar e executar um dropper baseado em Python.
### Capacidades do Malware Hades
O malware **Hades** possui vários recursos avançados:
* **Movimentação Lateral**: Replica e se espalha por redes de desenvolvedores via **SSH** ou **SCP**, enviando pacotes **PyPI** trojanizados de sistemas comprometidos, explorando as configurações de confiança **OpenID Connect (OIDC)** dos desenvolvedores.
* **Direcionamento de Repositórios GitHub**: Extrai segredos de organização usando runners do **GitHub Actions** se o token do **GitHub** coletado possuir permissões de escrita apropriadas.
* **Backdooring de Workspace**: Instala backdoors em pastas de workspace locais para acionar a execução de código quando analisado por assistentes de IA ou aberto em IDEs. Os alvos incluem **Anthropic Claude**, **OpenAI Codex**, **Google Gemini**, **Microsoft Copilot**, **Cline**, **Aider**, **Tabby**, **Amazon Q**, **Cody**, **Bolt** e **Continue**.
* **Funcionalidade de Limpeza (Wiper)**: Instala um serviço em segundo plano chamado "gh-token-monitor" que atua como um wiper, removendo todos os dados (`rm -rf ~/; rm -rf ~/Documents`) se o token roubado do **GitHub** for revogado.
O pesquisador de segurança **Rohan Prabhu** destaca uma capacidade chave do ator **Miasma**: ler a memória do processo do runner do **GitHub Actions** (o processo `Runner.Worker`) para extrair segredos. Embora inicialmente limitado a sistemas Linux usando `/proc/{pid}/mem`, a campanha **Hades** introduz scrapers de memória personalizados para **macOS** e **Windows**.
### Variante Shai-Hulud no GitHub
Este desenvolvimento coincide com a revelação da **StepSecurity** de um atacante desconhecido comprometendo a conta do **GitHub** ("LeonOstrez") vinculada a **Pythagora-io/gpt-pilot**, uma popular ferramenta de desenvolvedor de IA de código aberto. O atacante forçou o push de uma variante do worm de roubo de credenciais **Shai-Hulud** para o branch principal. Este malware é projetado para ativar silenciosamente na execução do projeto por um desenvolvedor desavisado, enquanto evita sistemas com localidade russa.
**Ashish Kurmi**, co-fundador e CTO da **StepSecurity**, observou que o malware foi frustrado pelo **ruff**, um formatador de código Python. As tentativas do atacante de contornar o CI falharam duas vezes porque seu arquivo Python injetado violava as regras de formatação e linting do projeto.
A **Snyk** descreve esses ataques como parte da linhagem mais ampla **Shai-Hulud** / **Miasma**, com cada onda alavancando um stealer ofuscado com runtime **Bun** combinado com novos mecanismos de persistência, rotas de exfiltração e execução automatizada de código no momento da instalação ou compilação.
A **Cloudsmith** adverte que chaves assinadas e contas de mantenedor autenticadas não garantem mais segurança absoluta. Quando os registros e repositórios upstream são comprometidos, o código público se torna um vetor direto e potente de comprometimento.