Confusão de Dependência

Reading time: 3 minutes

tip

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

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

warning

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

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 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 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á 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 da AWS

Essa vulnerabilidade foi encontrada no CodeArtifact da AWS (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 em javascript.

Referências

tip

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