FlawOpen

flawopen.com/Referência/Dependency Confusion

Dependency Confusion: como ocorrem confusões na origem dos pacotes

High Severity CWE-829: Inclusion of Functionality from Untrusted Control Sphere Cadeia de suprimentos de software
ELI5 — O fornecedor com nome parecido

Imagine que sua equipe encomenda um componente em um catálogo de fornecedores, mas dois fornecedores usam o mesmo nome de produto. Se as regras não identificarem qual fornecedor é o autorizado, a compilação poderá receber um componente inesperado. Dependency confusion é essa falha de seleção de origem: a compilação resolve um pacote em um registry ou namespace que a organização não pretendia confiar.

Boundary: Nome do pacote, namespace, configuração do registry e proveniência do lockfile
Failure: O resolvedor pode obter um pacote de mesmo nome de uma origem não pretendida
Impact: Código de terceiros não revisado pode entrar na compilação; scripts de instalação podem executar quando habilitados
Remediation: Política explícita de namespace e registry, lockfiles revisados e builds com privilégios mínimos

Como ocorre Dependency Confusion

O comportamento exato depende do gerenciador e da configuração. Um caso concreto é o pip: a documentação alerta que combinar um --index-url privado com um --extra-index-url público pode permitir a seleção de um pacote público com o mesmo nome. O npm escolhe o registry pela scope do pacote ou pela configuração padrão; não compara universalmente versões privadas e públicas para escolher a maior. A causa comum é uma política de origem ambígua. Se o pacote for instalado e seus scripts estiverem habilitados, eles executam com as permissões disponíveis para a tarefa de build.

pip.conf e requirements.txt (origens ambíguas)Configuração arriscada
[global]
index-url = https://packages.example.internal/simple
extra-index-url = https://pypi.org/simple

corp-auth-utils
.npmrc e package.json (roteamento explícito por scope)Exemplo reforçado
@corp:registry=https://packages.example.internal/repository/npm/

{
  "dependencies": {
    "@corp/billing-engine": "1.2.0"
  }
}

Um caminho de falha de Dependency Confusion

Controles de engenharia defensiva

Explore tópicos de segurança e análises de incidentes relacionados:Diretório de segurança →

Referências

Veja também Exposição do Socket Docker: riscos e defesas Injeção de scripts no GitHub Actions: entradas seguras Cosign GHSA-fx35-mq7g-6g98: bypass de bundle legado