Pesquisadores de cibersegurança identificaram um novo ataque à cadeia de suprimentos de software, batizado de SleeperGem, que mira o ecossistema Ruby após a publicação de três gems maliciosas no RubyGems com o objetivo de distribuir payloads adicionais.
As gems fraudulentas são as seguintes:
- git_credential_manager, nas versões 2.8.0, 2.8.1, 2.8.2 e 2.8.3, publicada em 18/07/2026
- Dendreo, nas versões 1.1.3 e 1.1.4, publicada em 14/10/2017
- fastlane-plugin-run_tests_firebase_testlab, na versão 0.3.2, publicada em 06/02/2018
“Cada versão maliciosa é um loader”, afirmou a StepSecurity em uma análise.
“Ela busca uma segunda etapa em um host Forgejo controlado pelo atacante, verifica se está em um sistema de compilação e, se estiver, não executa.
Em uma máquina de desenvolvedor, ela instala um daemon nativo e configura persistência.”
Um dos aspectos que mais chamam atenção nesse ataque é que git_credential_manager se passa pelo Git Credential Manager oficial da Microsoft, enquanto as outras duas gems permaneceram inativas por anos antes de receberem as atualizações maliciosas.
Dendreo foi atualizada pela última vez em 24/10/2020, e fastlane-plugin-run_tests_firebase_testlab permaneceu sem atividade desde 09/03/2019, antes das novas versões.
Outra característica marcante da ação é que os lançamentos foram publicados diretamente no repositório de pacotes, sem qualquer commit ou tag correspondente nos projetos-fonte.
Curiosamente, git_credential_manager foi adicionada como dependência de cinco pacotes, incluindo Dendreo e fastlane-plugin-run_tests_firebase_testlab, o que acabou permitindo que o payload malicioso se propagasse para usuários já existentes desses pacotes:
- Dendreo
- fastlane-plugin-run_tests_firebase_testlab
- slackHtmlToMarkdown
- seo_optimizer
- array_fast_methods
Todos os pacotes citados, com exceção de fastlane-plugin-run_tests_firebase_testlab, são mantidos pela mesma conta, LR-DEV.
O fato de a gem pertencer a outro mantenedor, pinkroom, indica que mais de uma conta provavelmente foi comprometida para publicar as versões fraudulentas no RubyGems.
Depois de instalado, o malware embutido nesses pacotes verifica cerca de 30 variáveis de ambiente no sistema infectado, incluindo aquelas relacionadas ao GitHub Actions, GitLab, CircleCI, Travis, Jenkins e Vercel.
Se alguma delas for identificada, ele encerra a execução imediatamente.
A checagem é interpretada como uma tentativa deliberada de evitar rodar em executores efêmeros de CI e garantir a execução em uma máquina de desenvolvedor.
No caso de git_credential_manager, o código malicioso é acionado quando a biblioteca é carregada, fazendo com que ela baixe dois payloads de uma instância pública do Forgejo, em git.disroot[.]org/git-ecosystem: um script shell chamado deploy.sh e um binário nativo com o mesmo nome da ferramenta que a gem finge ser.
No Windows, o payload obtido é executado via PowerShell.
Enquanto a versão 2.8.2 apenas prepara os payloads, a versão 2.8.3 da gem avança para a próxima fase do ataque.
Isso inclui o uso do script de instalação para iniciar o binário como um daemon em segundo plano, após o que ele estabelece persistência por meio de uma entrada no cron e de um serviço de usuário do systemd, além de consultar os grupos sudo e wheel.
“Se o usuário puder executar sudo sem senha, o script se reexecuta como root e, quando roda como root, instala uma cópia do shell do sistema com setuid root em um caminho escolhido para se parecer com um utilitário de rede”, afirmou a StepSecurity.
Usuários que instalaram qualquer uma das gems mencionadas são orientados a tratar as máquinas e os segredos associados como comprometidos.
Também é recomendado remover o daemon deixado em ~/.local/share/gcm/, apagar os mecanismos de persistência, verificar a presença de um shell com setuid em /usr/local/sbin/ping6 e rotacionar todas as credenciais.
“Uma conta do RubyGems que ficou em silêncio por seis ou sete anos não parece arriscada para ninguém”, disse o pesquisador da Aikido Security, Charlie Eriksen.
“É exatamente esse o perfil que vale a pena sequestrar.
É daí que vem o nome SleeperGem: não de um ativo malicioso plantado para o longo prazo, mas de uma conta real e comum que simplesmente ficou inativa e pareceu inofensiva o suficiente para ser tomada sem que ninguém percebesse.”
RubyGems como ponto morto para exfiltração de dados
A divulgação ocorre mais de dois meses depois de o RubyGems ter pausado brevemente novos cadastros de contas, após agentes maliciosos publicarem dezenas de pacotes maliciosos como parte de uma campanha coordenada de spam de publicação.
Na mesma época, pesquisadores da Socket identificaram uma campanha paralela que inundou o repositório com 150 gems usadas como canal de exfiltração de dados.
No início deste mês, a Mend.io revelou detalhes de um ataque não documentado à cadeia de suprimentos de software que empregou outro conjunto de 14 pacotes RubyGems para armazenar dados roubados de credenciais.
Especificamente, foi descoberto que uma extensão maliciosa de navegador coletava credenciais por meio de uma API acessível localmente, empacotava as informações em arquivos .gem válidos inteiramente dentro do navegador usando JavaScript e APIs Web padrão e fazia upload desses pacotes diretamente para o RubyGems.org usando uma chave de API do RubyGems codificada no código.
“O material roubado incluía senhas em texto puro, chaves privadas SSH, credenciais da AWS, frases-semente de carteiras de criptomoedas, números de Seguro Social, números de cartão de crédito e dados bancários em 63 itens de cofre”, disse Maciej Mensfeld.
“O RubyGems não foi o mecanismo de entrega nesse caso.
Foi o ponto morto: um domínio confiável e de alto tráfego onde os dados roubados ficavam armazenados até o atacante voltar para buscá-los, invisíveis no meio dos envios normais de desenvolvedores.”
Publicidade
Vibecoding cria 10x mais sistemas, 20x mais vulneráveis. E quem ganha com isso é a galera do hacking ético e pentest. Quer ser pago para invadir sistemas? Então você tem que aprender com a Solyd que são os melhores do Brasil. Saiba mais...