Ataque de dependency confusion
O que é Ataque de dependency confusion?
Ataque de dependency confusionAtaque de cadeia de fornecimento em que um adversário publica num registo público um pacote malicioso com o mesmo nome de uma dependência interna, levando as ferramentas de build a obter a versão pública.
O dependency confusion explora o comportamento padrão de resolução dos gestores de pacotes (npm, pip, Maven, NuGet, RubyGems, etc.) que combinam registos públicos e privados. O atacante descobre o nome de um pacote interno (via manifestos fugidos, repositórios públicos, DNS), publica no registo público um pacote com o mesmo nome e versão superior e aguarda que os agentes de build o instalem. A investigação de Alex Birsan em 2021 mostrou que dezenas de grandes empresas eram vulneráveis. Mitigações incluem âmbito explícito de registos (pacotes scoped no npm, upstream feeds no NuGet, pip --index-url), publicar placeholders internos no registo público, bloquear resolução para fora, assinar pacotes com Sigstore ou PGP e consumir via um repositório de artefactos curado que fixe nome e origem. SLSA, SBOM e a monitorização contínua de novos pacotes públicos ajudam a detetar tentativas.
● Exemplos
- 01
Pacote interno internal-utils substituído por um internal-utils@99.0.0 malicioso no npm.
- 02
Pipeline de build a obter dependência pip do PyPI em vez do índice privado.
● Perguntas frequentes
O que é Ataque de dependency confusion?
Ataque de cadeia de fornecimento em que um adversário publica num registo público um pacote malicioso com o mesmo nome de uma dependência interna, levando as ferramentas de build a obter a versão pública. Pertence à categoria Segurança de aplicações da cibersegurança.
O que significa Ataque de dependency confusion?
Ataque de cadeia de fornecimento em que um adversário publica num registo público um pacote malicioso com o mesmo nome de uma dependência interna, levando as ferramentas de build a obter a versão pública.
Como funciona Ataque de dependency confusion?
O dependency confusion explora o comportamento padrão de resolução dos gestores de pacotes (npm, pip, Maven, NuGet, RubyGems, etc.) que combinam registos públicos e privados. O atacante descobre o nome de um pacote interno (via manifestos fugidos, repositórios públicos, DNS), publica no registo público um pacote com o mesmo nome e versão superior e aguarda que os agentes de build o instalem. A investigação de Alex Birsan em 2021 mostrou que dezenas de grandes empresas eram vulneráveis. Mitigações incluem âmbito explícito de registos (pacotes scoped no npm, upstream feeds no NuGet, pip --index-url), publicar placeholders internos no registo público, bloquear resolução para fora, assinar pacotes com Sigstore ou PGP e consumir via um repositório de artefactos curado que fixe nome e origem. SLSA, SBOM e a monitorização contínua de novos pacotes públicos ajudam a detetar tentativas.
Como se defender contra Ataque de dependency confusion?
As defesas contra Ataque de dependency confusion costumam combinar controles técnicos e práticas operacionais, conforme detalhado na definição acima.
Quais são outros nomes para Ataque de dependency confusion?
Nomes alternativos comuns: Confusão de namespaces, Ataque de substituição.
● Termos relacionados
- appsec№ 1069
Segurança da cadeia de fornecimento de software
Disciplina que protege cada elo da produção de software - código-fonte, dependências, build, assinatura, distribuição e deploy - contra manipulação, código malicioso e perda de integridade.
- attacks№ 1116
Ataque à cadeia de fornecimento
Ataque que compromete um fornecedor de software, hardware ou serviços de confiança para alcançar os seus clientes a jusante.
- attacks№ 1184
Typosquatting
Registo de nomes de domínio ou de pacote que são erros de escrita ou imitações visuais de nomes legítimos, para apanhar utilizadores ou developers que cometem erros de escrita ou de reconhecimento.
- appsec№ 305
Pinning de dependências
Prática de declarar as dependências de software em versões exatas, frequentemente acompanhadas de hashes criptográficos, para que as builds consumam sempre os mesmos artefactos e resistam à manipulação da cadeia de fornecimento.
- appsec№ 971
SCA (Software Composition Analysis)
Análise automatizada dos componentes open source e de terceiros da aplicação para identificar vulnerabilidades conhecidas, problemas de licença e dependências desatualizadas ou arriscadas.
- appsec№ 784
Assinatura de pacotes
Aplicação de uma assinatura criptográfica a um pacote de software para que os consumidores verifiquem a identidade do publicador e que o artefacto não foi alterado após a publicação.
● Veja também
- № 1097Starjacking
- № 647Pacote npm malicioso
- № 1183Pacote typosquatted