Pacote npm Lottie Player comprometido para roubo de carteiras de criptomoedas
31 de outubro de 2024
0 minutos de leituraEm 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.4Conhecidas como vulneráveis:
@lottiefiles/lottie-player@2.0.5, @lottiefiles/lottie-player@2.0.6, and @lottiefiles/lottie-player@2.0.7Conhecida 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:

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

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:

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:
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:

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.
