Pesquisadores de cibersegurança identificaram um pacote Python malicioso que se faz passar por um desdobramento da popular biblioteca de 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 usa esse artifício esteganográfico é o requests-darwin-lite, que foi baixado 417 vezes antes de ser removido do registro do Python Package Index (PyPI).
O 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 Go malicioso embalado em uma versão maior do logotipo PNG da barra lateral real de requests”, disse a empresa de segurança da cadeia de suprimentos de software Phylum.
As alterações foram introduzidas no arquivo setup.py do pacote, que foi configurado para decodificar e executar um comando codificado em Base64 para reunir o Identificador Único Universal (UUID) do sistema, mas somente após confirmar que o host comprometido está executando o Apple macOS.
A descoberta também ocorre pouco mais de um mês depois que a empresa descobriu um pacote npm rogue chamado vue2util que se faz passar por uma utilidade 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 ao endereço do contrato do atacante, permitindo efetivamente ao atacante esvaziar os tokens USDT da vítima”, observou Phylum.
Em uma reviravolta interessante, a cadeia de infecção prossegue somente se o identificador corresponder a um valor específico, o que implica que o(s) autor(es) por trás do pacote tem a intenção de acessar uma máquina específica da 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.
Caso o UUID corresponda, o requests-darwin-lite prossegue para ler dados de um arquivo PNG chamado “requests-sidebar-large.png,” que apresenta semelhanças com o pacote legítimo de requests que vem com um arquivo semelhante chamado “requests-sidebar.png.”
O que difere aqui é que enquanto o logotipo real incorporado ao requests tem um tamanho de arquivo de 300 kB, o contido dentro do requests-darwin-lite tem cerca de 17 MB.
Os dados binários ocultos na imagem PNG são o Sliver baseado em Golang, um framework C2 de código aberto projetado para ser usado por profissionais de segurança em suas operações de equipe vermelha.
O objetivo final exato do pacote ainda não está claro, mas o desenvolvimento é mais uma vez um sinal de que ecossistemas de código aberto continuam sendo um vetor atraente para distribuir malware.
Com a grande maioria das bases de códigos dependendo de código aberto, o constante influxo de malware no npm, PyPI e outros registros de pacotes, sem mencionar o episódio recente do XZ Utils, tem destacado a necessidade de abordar problemas de forma sistemática que, de outra forma, podem “desviar grandes partes da web”.