Pesquisadores de cibersegurança identificaram um pacote Python malicioso que se passa por um desdobramento da popular biblioteca requests e foi encontrado escondendo uma versão Golang do framework de comando e controle (C2) Sliver dentro de uma imagem PNG do logotipo do projeto.
O pacote que utiliza esse truque esteganográfico é requests-darwin-lite, que foi baixado 417 vezes antes de ser removido do registro do Python Package Index (PyPI).
“Requests-darwin-lite parecia ser um fork da sempre popular biblioteca requests com algumas diferenças-chave, especialmente a inclusão de um binário malicioso Go embutido em uma versão ampliada do logotipo PNG da barra lateral real do requests”, disse a empresa de segurança na cadeia de suprimentos de software Phylum.
As mudanças foram introduzidas no arquivo setup.py do pacote, que foi configurado para decodificar e executar um comando Base64 codificado para reunir o Identificador Único Universal do sistema, mas somente após confirmar que o host comprometido está executando o Apple macOS.
A descoberta também ocorreu pouco mais de um mês após a empresa descobrir um pacote npm fraudulento chamado vue2util que se passa por um utilitário auxiliar, mas é projetado para realizar um esquema de cryptojacking e roubar tokens USDT de uma vítima.
O pacote “explora o mecanismo de aprovação do contrato ERC20 (USDT), concedendo secretamente aprovação ilimitada para o endereço de contrato do atacante, permitindo efetivamente que o atacante esvazie os tokens USDT da vítima,” observou a Phylum.
Em uma reviravolta interessante, a cadeia de infecção prossegue somente se o identificador corresponder a um valor específico, o que indica que o(s) autor(es) por trás do pacote está(ão) tentando invadir uma máquina específica para a qual já possuem o identificador obtido por outros meios.
Isso levanta duas possibilidades: ou é um ataque altamente direcionado ou é algum tipo de processo de teste antes de uma campanha mais ampla.
Se o UUID corresponder, o requests-darwin-lite prossegue para ler dados de um arquivo PNG chamado “requests-sidebar-large.png,” que se assemelha à biblioteca requests legítima que é enviada com um arquivo similar chamado “requests-sidebar.png.”
O que é diferente aqui é que enquanto o logotipo real incorporado na requests tem um tamanho de arquivo de 300 kB, o contido dentro do requests-darwin-lite é de cerca de 17 MB.
Os dados binários ocultos na imagem PNG são o Sliver baseado em Golang, um framework open-source C2 projetado para ser usado por profissionais de segurança em suas operações de equipe vermelha.
O objetivo exato do pacote ainda não está claro, mas o desenvolvimento é mais um sinal de que ecossistemas de código aberto continuam sendo um vetor atraente para distribuir malware.
Com a vasta maioria dos códigos-base dependendo de código aberto, a constante entrada de malware no npm, PyPI e outros registros de pacotes, sem mencionar o episódio recente do XZ Utils, destacou a necessidade de abordar questões de maneira sistemática que, de outra forma, podem “descarrilar grandes áreas da web.”