Geral 3min de Leitura - 14 de abril de 2021

Pacote falso do Browserify npm esconde um novo malware para Linux e macOS

Macbook aberto, apresentando linguagem de programação em sua tela

This post is also available in: Português

No último final de semana, a Sonatype detectou uma amostra de malware exclusiva publicada no registro npm (Node Package Manager), um dia após seu lançamento. O malware está presente no pacote brandjacking npm, denominado “web-browserify” e imita o componente legítimo “browserify”.

O Browserify permite usar o padrão de módulos do NodeJS no navegador. Os desenvolvedores definem as dependências e depois o Browserify empacota tudo isso em apenas um arquivo JS limpo e estruturado. Os arquivos necessários são incluídos usando require(‘./seuArquivo.js’) e também módulos publicados no npm.

O npm é um poderoso gerenciador de pacotes que faz parte do NodeJS. Esse, por sua vez, é um ambiente para a execução de JavaScript no lado do servidor de hospedagem. Ele permite utilizar linguagem JavaScript no back-end da aplicação, o que não era possível antes da existência do Node.

Tendo a confiança de centenas de milhares de desenvolvedores NodeJS, o Browserify recebe mais de 1,3 milhão de downloads semanais apenas no npm, e é usado por mais de 356.000 repositórios GitHub.

O Browserify também gera source maps para que você possa depurar os arquivos JS individualmente, apesar de estarem em um arquivo só.

O pacote malicioso “web-browserify” utiliza de componentes npm legítimos para agrupar dentro de si um executável Linux e Mac malicioso de difícil detecção. Ele parece ter sido projetado especificamente para atingir desenvolvedores NodeJS individuais, a julgar pela maneira como ele age depois de baixado e pela escolha dos sistemas operacionais aos quais se destina.

captura de tela web-browserify
Página npm para o componente web-browserify.
Imagem/reprodução: BleepingComputer

O “web-browserify” foi criado por um autor que se descreve como Steve Jobs. O pacote consiste em um arquivo de configuração, package.json, um script postinstall.js e um executável ELF chamado “run”, presente em um arquivo compactado, run.tar.xz, dentro do componente npm.

captura de tela estrutura package
Estrutura de diretório de malware e o arquivo de configuração package.json
Imagem/reprodução: Sonatype

Assim que o “web-browserify” é instalado por um desenvolvedor, os scripts extraem e iniciam o binário “run” do Linux do arquivo, que solicita permissões elevadas ou de root do usuário.

O binário de execução extraído tem aproximadamente 120 MB de tamanho e centenas de componentes npm de código aberto legítimo agrupados nele, que estão sendo abusados para atividades mal-intencionadas.

Um desses componentes, por exemplo, é o módulo “sudo-prompt” da corss-plataform utilizada pelo run para solicitar ao usuário a concessão de privilégios de root do malware nas distribuições macOS e Linux.

Como os privilégios elevados seriam solicitados quase ao mesmo tempo que o “web-browserify” estava sendo instalado, o desenvolvedor pode ser induzido a acreditar que são as atividades legítimas do instalador que requerem permissões elevadas.

Segundo o BleepingComputer, uma vez que o ELF adquire permissões elevadas, ele ganha persistência no sistema Linux e se copia para /etc /rot1, de onde ele é executado em cada inicialização.

captura de tela linguagem de programação
Executável ELF malicioso é executado na pasta /etc /rot1
Imagem/reprodução: BleepingComputer

Esse malware ainda possui recursos avançados de reconhecimento e impressão digital. Ele usa o componente legítimo systeminformation para coletar as seguintes informações do sistema infectado:

  • – Nome de usuário do sistema;
  • – Informações do sistema operacional (fabricante/marca);
  • – Informações sobre imagens Docker;
  • – Dispositivos conectados por Bluetooth;
  • – Máquinas virtuais presentes no sistema ou se a virtualização estiver habilitada;
  • – Velocidade, modelo e núcleos da CPU;
  • – Tamanho da RAM, capacidade do disco rígido, layout do disco, arquitetura do sistema;
  • – Informações de hardware relacionadas a placas/interfaces de rede, bateria, Wi-Fi, dispositivos USB, etc.

O BleepingComputer confirmou que, pelo menos algumas dessas informações são exfiltradas para um domínio controlado pelo invasor por meio de uma conexão de texto simples (HTTP).

captura de tela exportação de dados
Informações de impressão digital sendo enviadas para o domínio controlado pelo invasor.
Imagem/reprodução: BleepingComputer

O domínio usado pelo invasor para realizar estas atividades é: http://me.ejemplo[.]mim
Um domínio como ejemplo.me pode ser facilmente confundido por engano com domínios de teste legítimos, como exemplo.com citado por aplicativos e sua documentação.

O malware ainda tenta remover o conteúdo do diretório /etc/ e desabilitar os serviços Unix críticos, adulterando o utilitário systemctl e o diretório systemd.

Fonte: BleepingComputer.

This post is also available in: Português