🚀 A CloudSEK se torna a primeira empresa de segurança cibernética de origem indiana a receber investimentos da Estado dos EUA fundo
Leia mais

Autor: Vishal Singh
Co-autores e colaboradores: Afilhado Bastin
Editor: Deepanjli Paulraj
O BeVigil, o primeiro mecanismo de busca de segurança do mundo, identificou vários aplicativos vazando chaves da API do Mailchimp. Com base nessas descobertas, os pesquisadores do CloudSEK identificaram dois pacotes não reclamados, no código do Mailchimp, que criam confusão de dependências. Isso pode ser aproveitado para injetar código malicioso no código do Mailchimp.
Com aproximadamente 800.000 clientes pagantes e ~ 13 milhões de usuários, o Mailchimp é uma das maiores plataformas de automação de marketing do mundo que permite que as empresas interajam com clientes e públicos.
Neste blog, reivindicamos um dos pacotes não reivindicados no código do Mailchimp para ilustrar como a confusão de dependência pode ser explorada por agentes de ameaças e por que é uma vulnerabilidade que as organizações devem estar atentas.
A confusão de dependência é uma vulnerabilidade da cadeia de suprimentos de software que pode ser explorada para induzir um instalador de software a chamar um arquivo de código malicioso de um repositório de código público em vez de chamar um arquivo com o mesmo nome do repositório interno autorizado.
O Mailchimp tem 2 pacotes não reclamados:
Documentação da API do Mailchimp mostra que o exigir () as funções nos pacotes acima não estão configuradas corretamente. Portanto, quando um usuário tenta instalá-los, isso faz com que o pacote do invasor seja instalado em seu lugar. Para ilustrar como um invasor pode fazer isso, assumimos o controle do marketing do Mailchimp pacote. *
Instalamos o pacote mailchimp-marketing, a partir do repositório Mailchimp, seguindo as instruções na guia de instalação.


Para importar o pacote autorizado, faça o seguinte exigir () a função deve ser usada: exigir (“@mailchimp /mailchimp_marketing”). No entanto, o Documentação da API orienta os usuários a usar o exigir () função exigir (“mailchimp-marketing”).
Quando essa função é usada, npmjs.org/mailchimp-marketing responde com um código de status 404. Isso mostra que um pacote chamado mailchimp-maketing não está disponível no repositório. Portanto, poderíamos publicar uma biblioteca chamada mailchimp-marketing em npmjs.



Clonamos o repositório original do Mailchimp e publicamos um projeto chamado mailchimp-marketing, com um webhook inofensivo no código. Nós baixamos o pacote mailchimp_marketing original do Github e adicionou o webhook no ApiClient.js arquivo.
Sempre que um usuário baixa esse repositório, que assumimos, o webhook será acionado e receberemos uma notificação.
O repositório que reivindicamos e o código hospedado podem ser encontrados aqui.
Os downloads e o webhook acionados 500-1000 visitas por semana desde Usuários do MailChimp.

Em seguida, usamos o NPM CLI para fazer o upload desse pacote com mailchimp-marketing como nome do pacote.
Até agora, obtivemos 72.389 acessos (código usado pelos usuários repetidamente) para um único pacote e outro repositório disponível para aquisição.

O pacote mailchimp_transacional também retorna uma mensagem 404 não encontrada no npm, mostrando que ela também não foi reivindicada. Os agentes de ameaças reivindicam esse pacote e podem hospedar códigos maliciosos nele.


Os agentes de ameaças podem assumir o controle dos pacotes não reivindicados para atingir os sistemas públicos dos usuários do Mailchimp da seguinte forma:
O Mainchimp deve atualizar a documentação da API dos pacotes não reivindicados.
*Observação: o Mailchimp foi notificado sobre isso, mas não respondeu às nossas divulgações nem corrigiu o problema.