O malware no PyPI voltou a expor fragilidades críticas na cadeia de suprimentos de software, mesmo dentro de um dos repositórios mais confiáveis do ecossistema open source. Uma investigação recente revelou uma campanha maliciosa que utilizou pacotes Python aparentemente legítimos para distribuir um RAT (Remote Access Trojan) de forma discreta, explorando bibliotecas de verificação ortográfica como vetor de ataque.
O alerta é relevante porque o código malicioso ficou ativo por meses sem levantar suspeitas, afetando desenvolvedores que confiaram em pacotes publicados no repositório oficial do Python. Entre os destaques do caso estão os pacotes spellcheckerpy e spellcheckpy, além da consolidação de um novo risco emergente, o slopsquatting, que explora recomendações incorretas geradas por modelos de IA.
Esse episódio reforça como o malware no PyPI não depende mais apenas de erros humanos simples, mas passa a combinar técnicas avançadas de ocultação, automação e abuso da confiança em ferramentas modernas.
O cavalo de Troia escondido no dicionário basco
O aspecto mais sofisticado do ataque envolvendo malware no PyPI foi a forma como o código malicioso foi camuflado. Em vez de inserir rotinas suspeitas diretamente nos arquivos Python, os atacantes optaram por esconder o payload em arquivos JSON usados como dicionários de frequência de palavras para correção ortográfica.
Esses arquivos, especialmente os relacionados ao idioma basco, continham sequências aparentemente aleatórias que, na prática, eram usadas para reconstruir o código do RAT durante a execução. Como dicionários de idiomas costumam ser grandes e raramente analisados linha por linha, essa abordagem reduziu significativamente as chances de detecção manual ou por ferramentas automatizadas mais simples.
A escolha de um idioma pouco comum também não foi acidental. Ela diminuiu o número de usuários ativos e revisores atentos, criando um ambiente ideal para que o malware no PyPI permanecesse oculto por um longo período.
O gatilho da versão 1.2.0
Outro ponto crucial da campanha foi o uso de uma estratégia de ativação progressiva. As versões iniciais dos pacotes spellcheckerpy e spellcheckpy apresentavam comportamento legítimo, sem qualquer atividade claramente maliciosa. Isso ajudou a construir confiança, aumentar o número de downloads e reduzir suspeitas.
A partir da versão 1.2.0, o cenário mudou. O código passou a incluir rotinas que extraíam e executavam o payload escondido nos arquivos JSON, ativando o RAT apenas após a atualização. Esse modelo de código dormente, seguido por ativação tardia, é uma técnica clássica de ataques à cadeia de suprimentos, agora aplicada com mais refinamento.
Uma vez ativo, o RAT permitia controle remoto do sistema infectado, coleta de informações sensíveis e execução de comandos arbitrários. Em ambientes corporativos ou pipelines de integração contínua, o impacto potencial desse tipo de malware no PyPI é ainda mais grave.
Infraestrutura e o domínio updatenet.work
A análise da infraestrutura revelou que o RAT se comunicava com o domínio updatenet.work, responsável pelo comando e controle da infecção. Esse domínio estava hospedado em servidores associados à Cloudzy, um provedor já mencionado em investigações anteriores relacionadas a campanhas maliciosas.
Embora serviços de nuvem sejam amplamente usados por aplicações legítimas, o histórico desse domínio, combinado com o padrão de tráfego observado, reforçou a classificação do pacote como parte de uma campanha coordenada. Esses detalhes são fundamentais para equipes de segurança, pois permitem bloquear conexões, criar indicadores de comprometimento e mitigar infecções em larga escala.
Além do Python: Ataques no ecossistema npm
O avanço do malware no PyPI ocorre em paralelo a campanhas semelhantes no ecossistema npm, voltado para JavaScript. Pesquisadores identificaram pacotes maliciosos projetados para roubo de criptomoedas, captura de credenciais e disseminação de páginas de phishing, explorando a popularidade de ferramentas ligadas a blockchain.
Alguns desses pacotes utilizavam nomes visualmente semelhantes a bibliotecas conhecidas, apostando em erros de digitação ou instalações automatizadas sem validação prévia. Casos associados ao tema G_Wagon chamaram atenção por incluir scripts que interceptavam chaves privadas e manipulavam transações, demonstrando como ataques à cadeia de suprimentos não se limitam a uma única linguagem.
Esse panorama reforça que a confiança excessiva em repositórios oficiais, sem verificação adicional, amplia a superfície de ataque tanto no Python quanto no JavaScript.
O perigo das alucinações de IA: O que é slopsquatting?
Um fator relativamente novo nesse cenário é o slopsquatting, uma técnica que explora as chamadas alucinações de IA. Modelos de linguagem de grande escala (LLMs) podem sugerir pacotes que não existem quando solicitados a recomendar bibliotecas para tarefas específicas ou pouco comuns.
Atacantes monitoram essas sugestões e registram rapidamente os nomes indicados nos repositórios oficiais. Quando um desenvolvedor confia na recomendação da IA sem validar o pacote, acaba instalando software potencialmente malicioso, acreditando tratar-se de uma dependência legítima.
Um exemplo recorrente é o react-codeshift, um pacote inexistente que passou a ser mencionado em respostas automatizadas. Após o registro do nome, ele se tornou um vetor plausível para ataques, ilustrando como o slopsquatting amplia o problema clássico do typosquatting ao usar a IA como intermediária involuntária.
Conclusão e como se proteger
Os episódios recentes envolvendo malware no PyPI e pacotes maliciosos no npm mostram que as ameaças à cadeia de suprimentos estão mais discretas, persistentes e sofisticadas. Técnicas como código oculto em arquivos de dados, ativação tardia e exploração de recomendações de IA exigem um nível maior de atenção por parte de desenvolvedores e equipes de segurança.
Para reduzir riscos, é essencial validar cuidadosamente cada dependência adicionada a um projeto, analisar o histórico do pacote, a reputação do mantenedor e a consistência das atualizações. O uso de scanners de dependências e políticas de versionamento restritivo também ajuda a limitar o impacto de ataques desse tipo.
Como chamada à ação, revise agora seus arquivos requirements.txt e package.json. Elimine dependências desnecessárias, fixe versões confiáveis e trate recomendações de IA como ponto de partida, nunca como fonte definitiva. Em um ambiente cada vez mais automatizado, o pensamento crítico continua sendo uma das defesas mais eficazes.
