Uma campanha maliciosa de RubyGems transformou pacotes de desenvolvedores aparentemente úteis em ferramentas para mineração oculta de criptomoedas. Os pacotes envenenados podem consumir o poder de computação de uma máquina, atrasar o trabalho de desenvolvimento e gerar silenciosamente Monero para os atacantes. A campanha também vai além de uma infecção típica baseada em pacotes, com um conjunto de gems maliciosos que pode examinar uma máquina de desenvolvedor comprometida em busca de credenciais SSH e sistemas conhecidos.
Descoberta e Escopo da Campanha
Pesquisadores da Unit 42 identificaram dois grupos relacionados de uploads maliciosos de RubyGems que usaram padrões de nomeação semelhantes e visaram desenvolvedores procurando bibliotecas comuns. No total, a primeira operação publicou 113 gems trojanizadas que receberam 14.253 downloads, enquanto a segunda enviou 23 pacotes maliciosos. Uma conta relacionada enviou mais 309 gems, com mais de 139.000 downloads, embora nenhum código prejudicial tenha sido encontrado naqueles pacotes no momento da análise.
Vetor de Exploração e Técnicas
A Unit 42 disse em um relatório que os pacotes copiaram bibliotecas Ruby legítimas e alteraram seus arquivos de ponto de entrada para lançar código de mineração. A ameaça é especialmente preocupante porque uma instalação normal de dependência pode se tornar o primeiro passo em um comprometimento de infraestrutura mais amplo. O primeiro ator usou nomes de pacotes automatizados construídos a partir de palavras simples como "ultra", "smart", "tool" e "kit".
Cada pacote carregava o mesmo payload de mineração, mas esperava cinco horas antes de executar. Esse atraso é projetado para evitar verificações rápidas em sandboxes automatizadas, onde o software suspeito é frequentemente observado apenas por um curto período após a instalação. O malware também verifica se está executando dentro de máquinas virtuais comuns, contêineres ou ambientes de depuração.
Impacto Operacional e Riscos
Uma vez ativo, o minerador limita-se quando o sistema está ocupado. Isso pode reduzir problemas óbvios de desempenho, permitindo que permaneça em uma máquina de desenvolvedor por mais tempo enquanto ainda usa capacidade de processamento ociosa para minerar criptomoedas. O payload mais avançado não parou na mineração. Ele procurou por chaves privadas SSH e registros de hosts conhecidos, tentando se conectar a sistemas já confiados pela máquina comprometida.
Isso poderia permitir que um endpoint de desenvolvimento infectado se tornasse um trampolim para servidores de build, cargas de trabalho em nuvem ou outros sistemas internos. O malware também tentou se espalhar através de ativos de desenvolvimento locais, alterando arquivos de pacotes Node.js, scripts de configuração Python, especificações de gem Ruby, Dockerfiles, ganchos Git e extensões do Visual Studio Code.
Medidas de Mitigação Recomendadas
As organizações devem auditar instalações recentes do RubyGems, investigar uso incomum de processador, revisar logs de acesso SSH, girar chaves potencialmente expostas e monitorar conexões inesperadas com infraestrutura de mineração. As equipes de segurança também devem bloquear os indicadores de comprometimento listados e procurar endpoints pelos artefatos listados. O monitoramento de tráfego de saída é importante, pois a atividade de cryptojacking pode se misturar às cargas de trabalho normais de desenvolvedores.
Análise Técnica Detalhada
Algumas das gems do segundo grupo foram typosquats, significando que seus nomes foram deliberadamente feitos para parecer bibliotecas confiáveis com pequenas alterações de ortografia. O comportamento cruzado de linguagem torna a limpeza mais difícil. Uma equipe pode remover a dependência Ruby original, mas ainda pode perder um arquivo de projeto alterado, uma construção de contêiner comprometida ou um gancho Git malicioso que reinfecta sistemas mais tarde.
Perguntas Frequentes
Como os desenvolvedores podem se proteger? Audite pacotes instalados, verifique o histórico do editor e monitore o uso de CPU.
Qual é o risco principal? Além da mineração, o risco de propagação lateral via SSH e alteração de arquivos de projeto.
Quais são os IoCs? Endereços de carteira Monero, pools de mineração e perfis de RubyGems associados foram documentados.