Skip to main content

Pacote npm Lottie Player comprometido para roubo de carteiras de criptomoedas

Escrito por
feature open source

31 de outubro de 2024

0 minutos de leitura

Em 31 de outubro de 2024, mais um caso de comprometimento de pacote e sequestro de criptomoedas veio à tona envolvendo um popular pacote npm.

Resumo do comprometimento do pacote npm Lottie Player

Foi encontrado código malicioso na popular biblioteca npm @lottiefiles/lottie-player, que solicita aos usuários que conectem suas carteiras de criptomoedas.

O código malicioso foi incluído nas versões 2.0.5, 2.0.6 e 2.0.7 do npm depois que o token de uma conta do registro npm, usado para publicar pacotes, foi comprometido. Essas versões foram removidas do npm. Em seguida, a versão 2.0.8 foi publicada a partir do código seguro do repositório GitHub do projeto, com conteúdo idêntico ao da versão 2.0.4.

Intervalos de versões seguras e vulneráveis do pacote npm Lottie Player

Conforme sua capacidade de resposta, tanto atualizar quanto voltar para uma versão anterior permite corrigir as três versões maliciosas conhecidas que foram publicadas:

  • Conhecida como segura: @lottiefiles/lottie-player <= 2.0.4 

  • Conhecidas como vulneráveis: @lottiefiles/lottie-player@2.0.5, @lottiefiles/lottie-player@2.0.6, and @lottiefiles/lottie-player@2.0.7

  • Conhecida como segura: @lottiefiles/lottie-player@2.0.8

Como verificar se você está vulnerável com o Snyk

Talvez você tenha usado uma ferramenta de automação de dependências para gerenciar sua árvore de dependências e atualizado para uma das versões maliciosas publicadas no registro npm. Outra possibilidade é ter atualizado diretamente para as versões mais recentes em ambientes de CI ou desenvolvimento e mantido essas alterações.

Você pode usar o Snyk de várias maneiras para verificar se instalou as versões maliciosas.

Interface dos relatórios de dependências do Snyk

Acesse a opção “Dependencies” do seu grupo ou organização, aplique os filtros que quiser para refinar a busca e, em seguida, abra o campo de pesquisa “Dependencies” e digite “lottiefiles” para fazer uma busca por texto.

Veja abaixo um exemplo em que nenhum resultado é encontrado. Isso indica que os projetos pesquisados não usam essa dependência:

Painel de dependências do Snyk mostrando uma busca por “lottiefiles” sem resultados e uma lista de dependências de pacotes.

Se eu alterar o texto para apenas “lottie”, vou encontrar outras dependências com esse termo no nome:

Página de dependências do Snyk com resultados da busca por pacotes Lottie, incluindo as versões de lottie-react e lottie-web

Depois de selecionar uma dependência, posso confirmar em quais projetos ela é usada, quais vulnerabilidades se aplicam a ela, se há problemas de licença e outras informações sobre a segurança da cadeia de suprimentos:

Painel de dependências que lista duas versões do lottie-web, 5.12.2 e 5.9.6, com a licença MIT exibida para uma delas.

Snyk CLI

Se você usa o Snyk CLI nos fluxos de desenvolvimento ou nos processos de build de CI, a verificação do Snyk vai informar se há um pacote vulnerável, por exemplo:

$ snyk test

Testing /Users/lirantal/projects/repos/your-project-name...

Tested XXX dependencies for known issues, found 1 issue, YYY vulnerable paths.

Issues with no direct upgrade or patch:
  ✗ Embedded Malicious Code [Critical Severity][https://security.snyk.io/vuln/SNYK-JS-LOTTIEFILESLOTTIEPLAYER-8310516] in @lottiefiles/lottie-player@2.0.5
    introduced by [path to the package]
    No upgrade or patch available (Upgrade to versions <2.0.4 || >2.0.8 recommended)

O que está acontecendo com @lottiefiles/lottie-player

Assim como no vetor de ataque que afetou a biblioteca Polyfill, comprometendo usuários por meio de uma CDN em junho de 2024 — e que foi rastreado até janeiro daquele ano —, este incidente também tenta roubar criptomoedas por meio de carteiras digitais.

Usuários relataram no repositório de código do lottie-player que, ao usar a biblioteca por meio de CDNs de terceiros, como https://unpkg.com/@lottiefiles/lottie-player@latest/dist/lottie-player.js ou https://cdn.jsdelivr.net/npm/@lottiefiles/lottie-player@2.0.5/dist/lottie-player.min.js,, aparecia uma tela de login de carteira de criptomoedas, como esta, na discussão da issue no GitHub:

Menu de conexão de carteira de criptomoedas com WalletConnect, MetaMask, Trust Wallet, Exodus, Uniswap Wallet, Phantom, Ledger Live e Coinbase

Muitos usuários que utilizavam a dependência @lottiefiles/lottie-player por meio de CDNs de terceiros, sem fixar corretamente a versão, receberam automaticamente a versão comprometida como o lançamento mais recente. Com a publicação de uma nova versão com código-fonte conhecido como seguro — essencialmente, revertendo o código para a versão 2.0.4 —, presume-se que esses usuários também tenham recebido a correção automaticamente.

Ainda assim, o impacto parece ser bastante amplo, considerando o número de projetos que dependem do componente lottie-player e a quantidade de downloads das versões maliciosas:

  • 73 pacotes npm dependem desse pacote

  • A versão 2.0.4, conhecida como segura, teve 36.762 downloads nos últimos 7 dias

  • A correção publicada recentemente na versão 2.0.8 teve cerca de 890 downloads nas últimas 12 horas

Como reduzir os riscos à segurança da cadeia de suprimentos relacionados a CDNs?

Para evitar futuros incidentes de segurança, como o comprometimento do componente web lottie-player ou a dependência maliciosa polyfill, recomendamos adotar algumas práticas recomendadas de segurança, como:

  • Adote uma Política de Segurança de Conteúdo para impedir que fontes indesejadas e não confiáveis injetem scripts, tags de imagem e outros objetos no seu aplicativo web.

  • Sempre fixe as versões das dependências, sejam elas carregadas de CDNs pela rede ou por um gerenciador de pacotes.

  • Siga as recomendações de mitigação da equipe oficial do Lottie Player no comentário aqui e em outros canais oficiais.

Verifique seus aplicativos

Se você quiser testar seus aplicativos e projetos, mas ainda não for cliente do Snyk, pode se inscrever para um teste grátis e realizar as verificações acima. Durante o teste, você pode analisar dependências de código aberto e imagens de contêiner pela CLI ou pelo seu SCM para descobrir se está usando uma das versões vulneráveis de lottie-player e identificar outras possíveis vulnerabilidades nos seus projetos.

Proteja seu código enquanto desenvolve

O Snyk analisa seu código em busca de problemas de qualidade e segurança e recomenda correções direto no seu IDE.