5.9 KiB
Confusão de Dependência
Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!
- Você trabalha em uma empresa de cibersegurança? Gostaria de ver sua empresa anunciada no HackTricks? ou 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 Discord ou ao grupo telegram ou siga-me no Twitter 🐦@carlospolopm.
- Compartilhe seus truques de hacking enviando PRs para o repositório hacktricks e repositório hacktricks-cloud.
{% 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 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 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 existem versões superiores.
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 %}
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
- https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610
- https://zego.engineering/dependency-confusion-in-aws-codeartifact-86b9ff68963d
{% embed url="https://websec.nl/" %}
Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!
- Você trabalha em uma empresa de cibersegurança? Gostaria de ver sua empresa anunciada no HackTricks? ou 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 Discord ou ao grupo telegram ou siga-me no Twitter 🐦@carlospolopm.
- Compartilhe seus truques de hacking enviando PRs para o repositório hacktricks e repositório hacktricks-cloud.