Última HoraBaixo

Defesas da Cadeia de Suprimentos Shai-Hulud do NPM Contornadas via Dependências Git

3 min de leituraFonte: BleepingComputer

Pesquisadores descobrem falhas críticas nas defesas do NPM, permitindo que atacantes burlem proteções usando dependências Git. Saiba como mitigar riscos no ecossistema JavaScript.

Defesas de Segurança Shai-Hulud do NPM Contornadas via Dependências Git

Pesquisadores de segurança identificaram vulnerabilidades críticas nas defesas da cadeia de suprimentos do NPM, implementadas após os ataques de alto impacto Shai-Hulud, que permitem que agentes de ameaças burlem as proteções explorando dependências Git. As descobertas destacam riscos persistentes no gerenciamento de dependências do ecossistema JavaScript.

Principais Descobertas

Em 2021, o NPM implementou controles de segurança aprimorados após os ataques à cadeia de suprimentos Shai-Hulud, que envolveram pacotes maliciosos comprometendo aplicações downstream. No entanto, pesquisadores demonstraram que atacantes podem contornar essas defesas utilizando dependências baseadas em Git — pacotes hospedados diretamente em repositórios Git, em vez do registro do NPM.

Ao contrário dos pacotes tradicionais do NPM, as dependências Git não estão sujeitas às mesmas verificações de segurança, validações de assinaturas ou metadados. Essa lacuna cria um ponto cego, permitindo que atacantes:

  • Injetem código malicioso em dependências sem detecção.
  • Explorem relações de confiança em projetos de código aberto.
  • Contornem verificações de segurança automatizadas do NPM, incluindo assinatura de pacotes e verificação de proveniência.

Detalhes Técnicos

As defesas pós-Shai-Hulud do NPM incluem:

  • Assinatura de pacotes para verificar a autenticidade do publicador.
  • Verificações de proveniência para validar a origem dos pacotes.
  • Varredura automatizada de malware para pacotes hospedados no registro.

No entanto, as dependências Git — referenciadas via URLs no arquivo package.json (por exemplo, git+https://github.com/user/repo.git) — não são processadas por essas salvaguardas. Atacantes podem:

  1. Hospedar pacotes maliciosos em repositórios Git públicos ou privados.
  2. Enganar desenvolvedores para incluí-los via typosquatting ou engenharia social.
  3. Executar código arbitrário durante a instalação, comprometendo ambientes de build.

Análise de Impacto

A vulnerabilidade expõe organizações a:

  • Ataques à cadeia de suprimentos direcionados a pipelines de CI/CD.
  • Exfiltração de dados ou implantação de backdoors via dependências comprometidas.
  • Danos à reputação de projetos que distribuem, sem saber, código malicioso.

As dependências Git são amplamente utilizadas em projetos corporativos e de código aberto, amplificando o risco. Bibliotecas ou ferramentas de alto perfil com dependências transitivas em pacotes hospedados em Git podem propagar ameaças inadvertidamente.

Recomendações

Equipes de segurança e desenvolvedores devem:

  1. Auditar arquivos package.json em busca de dependências Git e substituí-las por alternativas hospedadas no registro, quando possível.
  2. Implementar ferramentas de varredura de dependências (por exemplo, GitHub Dependabot, Snyk) para detectar referências Git maliciosas.
  3. Aplicar políticas rigorosas de revisão de código para dependências baseadas em Git, incluindo validação manual das fontes dos repositórios.
  4. Usar a flag --omit=dev do NPM durante a instalação para excluir dependências de desenvolvimento que possam ocultar riscos.
  5. Monitorar comportamentos anômalos em sistemas de build, como solicitações de rede inesperadas ou modificações de arquivos.

Próximos Passos

O NPM ainda não lançou um patch ou mitigação para esse problema. As organizações são instadas a adotar estratégias de defesa em profundidade, incluindo:

  • Ambientes de build isolados para limitar o impacto de dependências comprometidas.
  • Geração de Software Bill of Materials (SBOM) para rastrear a origem das dependências.
  • Princípios de confiança zero (zero-trust) para gerenciamento de dependências, tratando todo código externo como não confiável por padrão.

A descoberta reforça a necessidade de vigilância contínua na segurança de cadeias de suprimentos de código aberto, especialmente à medida que os atacantes adaptam suas táticas para explorar superfícies de ataque negligenciadas.

Compartilhar

TwitterLinkedIn