JA_NPM

Estudo de caso de inundação do NPM: “Descendo a toca do coelho em busca de chá”

At Xygeni, estivemos ocupados no ano passado implementando um sistema abrangente que monitora registros públicos de pacotes de código aberto em busca de atividades suspeitas ou códigos inerentemente maliciosos.

Esta infraestrutura permite-nos analisar em tempo real todos os pacotes publicados diariamente. Além disso, nos permite monitorar comportamentos anômalos dos usuários.

Embora a presença de código malicioso em registros de pacotes seja bem conhecida, existem outros comportamentos estranhos ou inusitados que passam completamente despercebidos pelos usuários regulares desses registros. Mesmo para aqueles de nós que os acompanham de perto, não é fácil encontrar uma razão ou explicação para tal comportamento.

O que caracteriza a equipe Xygeni é a nossa persistência diante de um problema, por isso nos aprofundamos nisso.

Tudo começou com um aumento nas estatísticas

Como mencionei anteriormente, como parte de nossa infraestrutura, monitoramos muitas métricas de atividade em registros públicos de pacotes de código aberto.

Nos últimos dias de março, minha colega de trabalho Carmen deu o alarme. Começamos a observar um desvio substancial na o número de pacotes publicados no NPM. Após uma análise inicial, descobrimos que esse desvio se devia principalmente a um número relativamente pequeno de usuários cuja taxa de publicação de pacotes havia subitamente disparado.

Isso nos levou a revisar nosso processo e seus dados associados na plataforma. Felizmente, a nossa análise determinou que os dados pareciam estar corretos, mas isto também foi um tanto intrigante!

Após uma inspeção mais aprofundada, descobrimos que esses pacotes compartilhavam várias características comuns:

  • Os editores eram usuários recém-criados, com no máximo um ou dois meses de idade.
  • Os pacotes tinham nomes aparentemente aleatórios, provavelmente gerados pelo uso de um dicionário. Podemos encontrar nomes de pacotes com nomes estranhos como enorme_mite-smiletea, erick-mangut94-sukiwir, exótico_reptile-appteadev or óbvio_tuna-appteadev. Incluiremos um apêndice com alguns exemplos dos ativos que encontramos.
  • O conteúdo desses pacotes era muito semelhante, muitas vezes igual.

Neste contexto observamos que um dos pacotes incluía um script Python possivelmente por acidente, que parece ser usado para publicar os pacotes automaticamente.

npm

Desvendando a rede

A atividade de publicação de algumas dessas editoras no último mês foi realizada de acordo com o seguinte cronograma:

 

ataque npm

Aqui estão as estatísticas completas relacionadas a este evento que podemos compartilhar:

verificação npm

Nada de relevante surgiu da análise individual de alguns dos pacotes associados a estes utilizadores. Isso nos levou a analisar o panorama geral de todos eles, em busca de padrões que pudessem fornecer pistas sobre esse sucesso.

Afinal, temos um bom punhado de pacotes para analisar:

ataque npm 2

Estes são os pontos-chave que podemos destacar da análise:

  • Muitos dos pacotes NPM estão inter-relacionados. Alguns são referenciados como dependências de outros.
  • Apesar de serem pacotes estranhos e provavelmente ninguém saber de sua existência, alguns possuem muitos downloads semanais. É difícil aceitar que um usuário normal queira baixar pacotes como 0mc03esisd
  • Alguns têm repositórios associados. Às vezes, os proprietários desses repositórios parecem ser contas fictícias, semelhantes às do npm.

Observação: os usuários carregam pacotes adicionais em ondas, portanto os dados fornecidos podem variar um pouco.

ataque npm 2

Este é um exemplo de um dos repositórios relacionados. Ele contém o código de alguns dos pacotes publicados. Também alguns outros arquivos, como um chá.yaml arquivo.

Conhecendo o(s) ator(es)

É difícil determinar se este é o trabalho de um único autor ou de vários colaboradores. No entanto, temos algumas evidências que restringem a origem desta atividade:

  • Idioma: Certos comentários no código estão em indonésio.
ataque npm 3
  • Localização: Certos proprietários dos repositórios associados indicam a sua localização na Indonésia.
  • A localização que podemos identificar através dos metadados de atividade no GitHub também aponta para a Indonésia.
NPM_JA

Chá das cinco

Dado que a Indonésia era uma colónia britânica, caberia perfeitamente aqui tomar chá. Porém, neste caso, é um tipo de chá bastante especial.

Você se lembra do chá.yaml arquivos que vimos no início? Na época não mostramos o conteúdo deles, mas ficou assim:

ataque npm 4

Esses arquivos parecem estar relacionados ao Protocolo de chá. Mas o que é exatamente? Nós alcançamos https://tea.xyz/blog/250k-grant-for-open-source-developers, que fala sobre o propósito:

Tea está sacudindo o mundo digital ao abordar a questão de longa data da remuneração inadequada para desenvolvedores de código aberto. Resolver esta questão é mais urgente do que nunca, e é por isso que decidimos distribuir 250 mil dólares em doações antes do lançamento do protocolo. Este estágio inicial visa apoiar os mantenedores de projetos de código aberto que tenham um impacto material no ecossistema de software de código aberto e um teaRank superior a 30 à frente do Tea Protocol Incentivized Testnet.”

De acordo com os documentos do protocolo do chá: 

“Para que um projeto seja registrado no Protocolo do Chá, é necessário um arquivo tea.yaml que serve como constituição do projeto para controlar o número de colaboradores e o número de votos necessários para realizar determinadas ações.”

 

Depois de acessar a rede de chá, tentamos encontrar um dos pacotes que suspeitamos estar tendo sua reputação inflada. Nós achamos:

Isso parece explicar o que está acontecendo aqui: certos usuários inflacionando seus projetos de código aberto com popularidade fictícia para sequestrar o teaRank e obter os benefícios fornecidos pela associação de chá. Afinal, o dinheiro é a força motriz mais antiga, junto com o sexo. 

Conclusão e considerações finais

Embora nenhuma evidência de código malicioso tenha sido encontrada nesses pacotes NPM, e eles provavelmente não pretendiam que alguém os usasse, eles podem violar vários Termos de Serviço (TOS) do NPM, GitHub ou da associação tea. No entanto, isso está fora do escopo do nosso trabalho (no entanto, eles foram notificados e as ações que considerarem apropriadas serão tomadas). O uso abusivo destas plataformas afetará de alguma forma a nós e às nossas organizações.

O que está claro é que qualquer pacote de código aberto aparentemente inócuo pode abrigar comportamentos difíceis de entender sem informações contextuais completas.

Como desenvolvedor, acho um desafio controlar manualmente todos os pacotes de código aberto usados ​​nos aplicativos que desenvolvemos e mantemos com um certo nível de segurança. Sem a ajuda de uma ferramenta que automatize esse controle, a tarefa poderia consumir inúmeras horas de nossas equipes.

Sempre existe a opção de olhar para o outro lado, confiando que os domínios do código aberto são lugares seguros. Felizmente, acredito que esta mentalidade não esteja muito difundida hoje; este caso foi praticamente inofensivo, mas recentemente tivemos um incidente muito mais grave com o Porta dos fundos XZ, e não foi o único.

Se você leu até aqui, espero que tenha gostado de todos os meandros deste curioso acontecimento. Não se esqueça de passar alguns minutos analisando como o Xygeni pode contribuir para a segurança da sua organização.

Apêndice: Liste os ativos relacionados a serem incluídos no artigo final

Usuários mais relevantes do NPM com base no número de pacotes publicados: vndra, wanzaty, artknight404, seblakkuah, Mikrositer, kellyman17

Uma pequena amostra de seus pacotes relacionados: mikrositer, cryndex, arts-dao, seblakkuah, vndrabnb, vndrave, depfif, depsik, depeit, depnin, Dopon, kellymanteasproject.

Alguns dos repositórios GitHub relacionados contendo arquivos tea.yml:

sca-tools-software-composição-análise-ferramentas
Priorize, corrija e proteja seus riscos de software
você recebe uma avaliação gratuita de 7 dias da nossa licença Business Edition e pode aproveitar alguns dos recursos avançados da plataforma SecurityScorecard.
Não é necessário cartão de crédito

Proteja seu desenvolvimento e entrega de software

com o Suíte de Produtos da Xygeni