6.2 KiB
Confusão de Dependência
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- Você trabalha em uma empresa de segurança cibernética? Você quer ver sua empresa anunciada no HackTricks? ou você quer ter acesso à última versão do PEASS ou baixar o HackTricks em PDF? Confira os PLANOS DE ASSINATURA!
- Descubra A Família PEASS, nossa coleção exclusiva de NFTs
- Adquira o swag oficial do PEASS & HackTricks
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-me no Twitter 🐦@carlospolopm.
- Compartilhe suas técnicas de hacking enviando PRs para o repositório hacktricks e hacktricks-cloud repo.
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 derequests
- 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
- https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610
- https://zego.engineering/dependency-confusion-in-aws-codeartifact-86b9ff68963d
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- Você trabalha em uma empresa de segurança cibernética? Você quer ver sua empresa anunciada no HackTricks? ou você quer ter acesso à última versão do PEASS ou baixar o HackTricks em PDF? Confira os PLANOS DE ASSINATURA!
- Descubra A Família PEASS, nossa coleção exclusiva de NFTs
- Adquira o swag oficial do PEASS & HackTricks
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-me no Twitter 🐦@carlospolopm.
- Compartilhe suas técnicas de hacking enviando PRs para o repositório hacktricks e hacktricks-cloud repo.