Dependency Confusion

Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Informações Básicas

Em resumo, uma vulnerabilidade de confusão de dependência ocorre quando um projeto está usando uma biblioteca com um nome com erro de digitação, inexistente ou com uma versão não especificada e o repositório de dependências usadas permite reunir versões atualizadas de repositórios públicos.

  • Com erro de digitação: Importe reqests em vez de requests

  • Inexistente: Importe company-logging, uma biblioteca interna que não existe mais

  • Versão não especificada: Importe uma biblioteca interna existente company-requests, mas o repositório verifica repositórios públicos para ver se existem versões superiores.

Exploração

Em todos os casos, o atacante só precisa publicar um pacote malicioso com o nome das bibliotecas usadas pela empresa vítima.

Com Erro de Digitação & Inexistente

Se sua empresa está tentando importar uma biblioteca que não é interna, é altamente provável que o repositório de bibliotecas vá procurá-la em repositórios públicos. Se um atacante a criou, seu código e máquinas em execução provavelmente serão comprometidos.

Versão Não Especificada

É muito comum os desenvolvedores não especificarem nenhuma versão da biblioteca usada, ou especificar apenas uma versão principal. Então, o interpretador tentará baixar a última versão que atenda a esses requisitos. Se a biblioteca for uma biblioteca externa conhecida (como requests em Python), um atacante não pode fazer muito, pois não poderá criar uma biblioteca chamada requests (a menos que seja o autor original). No entanto, se a biblioteca for interna, como requests-company neste exemplo, se o repositório da biblioteca permitir verificar novas versões também externamente, ele procurará por uma versão mais recente disponível publicamente. Portanto, se um atacante souber que a empresa está usando a biblioteca requests-company versão 1.0.1 (permite atualizações menores), ele pode publicar a biblioteca requests-company versão 1.0.2 e a empresa usará essa biblioteca em vez da interna.

Correção da AWS

Essa vulnerabilidade foi encontrada no AWS CodeArtifact (leia os detalhes neste post do blog). A AWS corrigiu isso permitindo especificar se uma biblioteca é interna ou externa, para evitar o download de dependências internas de repositórios externos.

Encontrando Bibliotecas Vulneráveis

No post original sobre confusão de dependência o autor procurou milhares de arquivos package.json expostos contendo as dependências de projetos JavaScript.

Referências

Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Last updated