Aikido

Detecção e Prevenção de Malware em Cadeias de Suprimentos de Software Modernas

Ruben CamerlynckRuben Camerlynck
|
#
#

Dependências de código aberto são a espinha dorsal do software moderno—mas também são uma superfície de ataque primária. Atores maliciosos estão cada vez mais visando registros de pacotes e fluxos de trabalho de desenvolvedores para injetar malware que é executado no momento em que uma dependência é instalada. Esta publicação explica como essas campanhas de malware na cadeia de suprimentos funcionam, por que os scanners tradicionais as perdem e defesas práticas que você pode aplicar hoje.

O cenário de ameaças: por que a cadeia de suprimentos é um alvo preferencial

Atores de ameaça — incluindo grupos patrocinados por estados — estão explorando ativamente ecossistemas de código aberto. Os ataques variam desde contas de mantenedores comprometidas até worms automatizados que se autopropagam entre registros. O impacto é amplificado pela ampla reutilização de pacotes: um único módulo comprometido pode ser baixado milhões ou bilhões de vezes em projetos e organizações.

Como os atacantes injetam malware

Existem várias técnicas comuns que atacantes usam para inserir código malicioso em suas builds. Compreender esses padrões facilita sua detecção e bloqueio.

  • Tomada de conta — Um atacante realiza phishing contra um mantenedor ou rouba tokens de desenvolvedor para registros como npm ou PyPI, e então publica malware em um pacote confiável. Quando esse pacote é instalado, todo consumidor incorpora o código malicioso.
  • Typo-squatting — Adversários publicam um pacote com um nome muito semelhante a um módulo popular (por exemplo, CCTVX vs CCXT). Um simples erro de digitação durante a instalação pode significar que você baixa um pacote malicioso em vez do legítimo.
  • Confusão de dependência — Se o nome de um pacote interno não for estritamente delimitado a um registro privado, gerenciadores de pacotes podem preferir um pacote público com o mesmo nome. Atacantes publicam um pacote público que sobrescreve sua dependência interna.
  • Hallucination squatting — Grandes modelos de linguagem (LLMs) às vezes inventam dependências que não existem. Atacantes descobrem o que os LLMs tendem a alucinar, publicam esses pacotes inventados e aguardam vítimas que copiam o código gerado para seus projetos.
Diagrama comparando um 'Pacote Popular' rotulado Requests com um 'Pacote Mal Escrito' rotulado Reqeusts para ilustrar o typo-squatting.
Typo-squatting: um pacote mal escrito se passa por um módulo popular.

Exemplos reais que mostram a dimensão do problema

Houve incidentes de alto perfil onde pacotes amplamente utilizados foram comprometidos, levando a uma exposição massiva em todo o ecossistema. Em outros casos, worms auto-propagáveis roubaram tokens de desenvolvedor para automaticamente disseminar a infecção para mais pacotes — transformando um único comprometimento em uma campanha em expansão.

Diagrama ilustrado de pacotes e nós de dependência infectados mostrando caminhos de propagação
Diagrama mostrando como uma dependência infectada pode se espalhar por pacotes.

Por que o malware é pior do que uma vulnerabilidade típica

Ao contrário de uma vulnerabilidade que precisa ser descoberta e explorada, o malware é intencionalmente criado para agir. Muitos pacotes maliciosos incluem scripts de pré-instalação ou pós-instalação que são executados imediatamente quando a dependência é instalada. Comportamentos maliciosos comuns incluem:

  • Entrar em contato com um servidor de comando e controle (C2) para exfiltrar dados ou receber comandos
  • Instalar backdoors ou obter execução remota de código em sistemas de build
  • Roubar tokens de mantenedores de pacotes para se propagar entre registros

A escala: milhares de pacotes maliciosos a cada mês

Malware em registros não é raro. Equipes de pesquisa que monitoram registros encontram milhares de pacotes maliciosos a cada mês. A maioria fica ativa por apenas algumas horas antes de ser removida, o que significa que a detecção precisa ser rápida e contínua.

captura de tela da página inicial do Aikido Intel com contadores mostrando vulnerabilidades e uma contagem de malware de 28.992
Contadores de threat-intel em tempo real mostrando dezenas de milhares de detecções de malware.

Detectando malware em tempo real

Como os lançamentos maliciosos podem ficar ativos por um período de tempo muito curto, ferramentas de detecção devem operar em tempo quase real e se integrar aos fluxos de trabalho dos desenvolvedores. Duas capacidades-chave são essenciais:

  • Threat Intelligence em tempo real — Um banco de dados de pacotes maliciosos que se atualiza continuamente para que as instalações possam ser verificadas em relação aos indicadores mais recentes.
  • Verificações em nível de instalador — Um wrapper pequeno e de baixa fricção para gerenciadores de pacotes que valida pacotes antes de serem instalados, sem interromper o fluxo de trabalho do desenvolvedor.
Saída do terminal: 'Alterações maliciosas detectadas: unused‑imports@0.0.1‑security. Deseja continuar com a instalação apesar dos riscos? (s/N)'
Alerta de wrapper em tempo de instalação que bloqueia um pacote malicioso antes da instalação.

Ferramentas que atuam no caminho de instalação (por exemplo, envolvendo instalações de npm, yarn ou pip) são particularmente eficazes porque podem bloquear malwares antes que atinjam uma build ou uma máquina de desenvolvedor.

Como os sistemas de Threat Intelligence identificam pacotes maliciosos

Detectar malware na cadeia de suprimentos é complexo porque cada indicador também pode ser benigno. Exemplos de indicadores suspeitos incluem obfuscação pesada em base64, chamadas de saída para domínios incomuns e caracteres Unicode invisíveis incorporados no código. Qualquer um desses sinalizadores pode ser legítimo.

Para separar o ruído das ameaças reais, feeds modernos utilizam uma abordagem em camadas:

  1. Varredura automatizada para centenas de indicadores em pacotes recém-publicados.
  2. Modelos de IA ou ML que combinam sinais de indicadores para atribuir uma pontuação de probabilidade de maliciosidade.
  3. Revisão humana para casos de médio risco, e remoção ou bloqueio automatizado para detecções de alta confiança.

Controles práticos que você pode implementar hoje

Aqui estão passos concretos que equipes de desenvolvimento e segurança devem tomar para reduzir o risco de malware na cadeia de suprimentos:

  • Imponha registros com escopo/privados para pacotes internos — Garanta que nomes de pacotes internos não possam ser confundidos com pacotes públicos e configure os gerenciadores de pacotes para sempre preferir registros privados para dependências internas.
  • Encapsule comandos de instalação — Adicione uma verificação em tempo de instalação em CI e máquinas de desenvolvedores que consulta um feed de ameaças em tempo real antes de permitir a instalação de pacotes.
  • Fortaleça contas de desenvolvedores — Exija autenticação multifator para contas de registro, gire tokens e monitore logins suspeitos.
  • Reduza a dependência de pacotes recém-publicados — Considere políticas que exijam uma idade mínima de pacote para instalações diretas em CI para limitar o impacto de lançamentos maliciosos no mesmo dia.
  • Integre Threat Intelligence ao seu pipeline — Alimente listas de pacotes maliciosos em tempo real em CI/CD, scanners de dependência e ferramentas de IDE para bloquear pacotes de risco precocemente.
  • Treine para alucinações de IA — Trate as dependências sugeridas por ferramentas de geração de código como não confiáveis até que sejam verificadas; evite copiar cegamente nomes de pacotes gerados para manifestos.

Considerações finais

Malware na cadeia de suprimentos é uma ameaça ativa e em evolução. Ele explora tanto erros humanos (phishing, erros de digitação) quanto automação (comportamento de registro, alucinações de LLM). Combatê-lo requer Threat Intelligence em tempo real, ferramentas que se integram aos fluxos de trabalho normais dos desenvolvedores e higiene básica como registros com escopo e MFA para mantenedores.

Detectar e bloquear pacotes maliciosos antes que sejam executados protege não apenas sua base de código, mas também o ecossistema de código aberto mais amplo. Torne a detecção rápida, integre-a às instalações e trate cada nova dependência como não confiável até ser verificada.

“Malware na cadeia de suprimentos age imediatamente—suas defesas devem agir mais rápido.”

Experimente Aikido Security hoje!

4.7/5

Proteja seu software agora

Comece Gratuitamente
Não é necessário cc
Agendar uma demonstração
Seus dados não serão compartilhados · Acesso somente leitura · Não é necessário cartão de crédito

Fique seguro agora

Proteja seu código, Cloud e runtime em um único sistema centralizado.
Encontre e corrija vulnerabilidades rapidamente de forma automática.

Não é necessário cartão de crédito | Resultados da varredura em 32 segundos.