hacktricks/pentesting-web/dependency-confusion.md

5.7 KiB

Confusão de Dependência

{% hint style="success" %} Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}

{% embed url="https://websec.nl/" %}

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ências utilizado permite coletar versões atualizadas de repositórios públicos.

  • Mal escrito: Importar reqests em vez de requests
  • Inexistente: Importar company-logging, uma biblioteca interna que não existe mais
  • Versão não especificada: Importar uma biblioteca company-requests interna existente, 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 esteja procurando por ela em repositórios públicos. Se um atacante a criou, seu código e máquinas em execução provavelmente estarão comprometidos.

Versão Não Especificada

É muito comum que os desenvolvedores não especifiquem nenhuma versão da biblioteca utilizada, ou especifiquem apenas uma versão maior. 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 ele não conseguirá 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 buscará por uma versão mais nova disponível publicamente.
Portanto, se um atacante souber que a empresa está usando a biblioteca requests-company versão 1.0.1 (permitindo 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 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 pesquisou milhares de arquivos package.json expostos contendo as dependências de projetos javascript.

Referências

{% embed url="https://websec.nl/" %}

{% hint style="success" %} Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}