hacktricks/pentesting-web/dependency-confusion.md
2023-06-06 18:56:34 +00:00

6.2 KiB

Confusão de Dependência

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

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 mal escrito, inexistente ou com uma versão não especificada e o repositório de dependência usado permite reunir versões atualizadas de repositórios públicos.

  • Mal escrito: 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 há versões maiores.

Exploração

{% hint style="warning" %} Em todos os casos, o atacante só precisa publicar um pacote malicioso com o nome das bibliotecas usadas pela empresa vítima. {% endhint %}

Mal Escrito & 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 que os desenvolvedores não especifiquem nenhuma versão da biblioteca usada ou especifiquem 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 o requests do 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.
Então, se um atacante souber que a empresa está usando a biblioteca requests-company versão 1.0.1 (permitir atualizações menores). Ele pode publicar a biblioteca requests-company versão 1.0.2 e a empresa irá usar essa biblioteca em vez da interna.

Correção da AWS

Essa vulnerabilidade foi encontrada na 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 por milhares de arquivos package.json expostos contendo as dependências de projetos JavaScript.

Referências

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥