Pacotes enganosos do Strapi em npm que são executados ao instalar

Publicada 6 min de lectura 146 leituras

Recentemente, pesquisadores de segurança descobriram uma campanha que introduziu pacotes maliciosos no registro de npm fazendo passar por complementos de Strapi, o popular CMS de Node.js. A armadilha não estava em um exploit complexo de dia zero, mas em algo muito mais insidioso: pacotes com nomes convincentes e um programa de pós-instalação que é executado automaticamente ao instalar.

Os pacotes detectados compartilhavam um padrão evidente: nomes que começavam por "strapi-plugin-" seguidos de termos como "cron", "database" ou "server", o suficiente para confundir desenvolvedores buscando extensões comunitárias. Essa imitação era deliberada: os complementos oficiais do Strapi usam um scope diferente (empaquetados sob @strapi/), algo que muitas vezes se passa por alto quando se fazem buscas rápidas em npm. Se você quer verificar como o Strapi documenta o desenvolvimento de plugins, seu guia oficial está disponível em docs.strapi.io.

Pacotes enganosos do Strapi em npm que são executados ao instalar
Imagem gerada com IA.

O principal vetor de abuso foi o hook de pós-instalação de npm. Os scripts associados a essa fase são executados automaticamente durante "npm install" e herdam as permissões do usuário que realiza a instalação — o que converte em ambientes com privilégios elevados, como pipelines de CI/CD ou contentores Docker executados como root, em objetivos extremamente valiosos para os atacantes. A documentação oficial do npm sobre scripts do ciclo de vida explica este comportamento e por que é preciso tratá-lo com cautela: docs.npmjs.com.

A análise técnica destes pacotes mostra uma progressão clara nos objetivos do atacante. Em fases iniciais buscou-se explorar instâncias de Redis acessíveis localmente para conseguir execução remota de comandos, injetando entradas em crontab que descarregavam e executavam scripts periodicamente. Esses scripts tentavam deixar a web shells em pastas públicas do Strapi, implantar reverse shells por SSH e digitalizar o disco em busca de segredos, desde chaves de serviços até sementes de carteiras de criptomoedas.

Quando essas tentativas foram insuficientes em alguns ambientes, a campanha pivotou para táticas mais diversas e sigilosas: combinar exploração de Redis com técnicas para escapar de contêineres Docker e escrever cargas úteis fora do ambiente isolado; lançar shells inversos diretos em portos conhecidos; e, muito relevante, buscar cadeias de conexão a bases de dados PostgreSQL e credenciais incorporadas que permitissem acessar diretamente informações sensíveis.

Com o tempo os payloads se tornaram ainda mais focados no reconhecimento e na exfiltração: voltados de variáveis de ambiente, extração de configurações de Strapi, voltado de bases de dados Redis mediante comandos como INFO, DBSIZE e KEYS, e a coleta de segredos de Docker e Kubernetes. Em alguns casos, os atacantes usaram credenciais codificadas para se conectar a bases de dados PostgreSQL e consultar tabelas específicas de Strapi em busca de dados que apontassem a ativos digitais — indicando que a operação pode ter sido direcionada a plataformas relacionadas a criptomoedas.

Finalmente, houve uma fase de consolidação: implantação de um implante persistente dirigido a um host concreto, mecanismos para roubar credenciais de rotas conhecidas e manter acesso contínuo através de shells persistentes. Segundo os pesquisadores, a campanha mostrou uma narrativa típica: tentativas agressivas de execução remota, seguido por reconhecimento quando aquilo não rendeu o esperado, e culminando em acesso persistente e exfiltração.

Este tipo de incidentes encaixa dentro de uma tendência maior: a cadeia de fornecimento de software tornou-se um objetivo privilegiado para atores com recursos. Relatórios da indústria sublinham a forma como os atacantes se tornaram empenhados em pacotes e fluxos de implantação para alcançar várias vítimas. Se você quer ler uma análise sectorial sobre a evolução destes ataques, o Group-IB publicou um relatório que resume como as campanhas contra a cadeia de abastecimento estão mudando o panorama de ameaças: group-ib.com/blog.

O que deveria fazer uma equipe técnica que descobre que usou uma dessas dependências? O prudente é assumir compromisso: rotar todas as credenciais afetadas, revisar e retirar chaves e tokens expostos, e reconstruir imagens e artefatos desde fontes de confiança após limpar ou substituir dependências. Também é recomendável auditar logs de CI/CD e controles de acesso, pois um script que foi executado com permissões elevadas pode ter semeado portas traseiras fora do alcance do repositório.

Em termos de detecção e saneamento, convém procurar indicadores como pacotes com nomes não oficiais que imitam uma marca (por exemplo, plugins que não usam o scope oficial), verificações da integridade da árvore de dependências (package-lock.json, yarn.lock), e verificações sobre programas de lifecycle em package.json. Ferramentas de segurança especializadas para o software supply chain, bem como scanners de dependências e fornecedores de segurança de código aberto, ajudam a automatizar essas verificações; se você quiser explorar soluções comerciais e comunitárias, projetos como Snyk oferecem recursos e guias práticas: snyk.io.

Além de endurecer processos e ferramentas, há práticas concretas que reduzem o risco: restringir a execução de scripts automáticos em ambientes sensíveis, executar builds e contentores com o menor privilégio possível, e configurar políticas para evitar a instalação de pacotes não verificados em pipelines críticos. O GitHub e outras plataformas oferecem controles e recomendações para proteger tokens e segredos em CI, e a comunidade OWASP mantém recursos para entender e mitigar riscos na cadeia de fornecimento: owasp.org.

Este incidente também lembra uma regra básica, mas poderosa: a confiança no ecossistema de pacotes é uma porta – e às vezes uma porta aberta –. Reforçar a higiene de dependências, exigir revisão de terceiros e manter a rastreabilidade das origens são medidas que pagarão dividendos quando a próxima campanha tentar colar disfarçada de uma melhoria inofensiva.

Pacotes enganosos do Strapi em npm que são executados ao instalar
Imagem gerada com IA.

Se você administra projetos que usam npm e Strapi, verifique suas dependências procurando nomes suspeitos e verifique se alguém instalou pacotes com padrões de nomes que imitam plugins. Limpar o ambiente, rodar credenciais, e reconstruir artefatos de fontes confiáveis é a resposta mínima. Para manter o dia sobre vulnerabilidades e avisos oficiais, você também pode consultar as bases de dados de avisos de segurança, como a do GitHub: github.com/advisories, e o repositório de avisos do npm na sua página principal.

Em poucas palavras: estamos vendo novamente como a distribuição de pacotes é usada como canal de ataque. A boa notícia é que muitas das medidas defensivas são conhecidas e viáveis: políticas de privilégios mínimos, controle estrito de dependências e rotação imediata de segredos mitigarão grande parte do impacto. Mas para manter a vantagem, o sector inteiro —mantenedores, plataformas e consumidores de software — deve continuar a melhorar práticas, partilhar indicadores e reagir rapidamente a essas campanhas.

Se você quiser aprofundar os detalhes técnicos desta classe de ataques e entender as recomendações para mitigar, sugiro começar pelos guias de Strapi para desenvolvimento de plugins, documentação de npm sobre scripts e coletas setoriais sobre seupply chain disponíveis nas fontes ligadas acima.

Cobertura

Relacionadas

Mas notícias do mesmo assunto.