Confusi贸n de Dependencias
tip
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 馃挰 Discord group or the telegram group or follow us on Twitter 馃惁 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
Informaci贸n B谩sica
En resumen, una vulnerabilidad de confusi贸n de dependencias ocurre cuando un proyecto est谩 utilizando una biblioteca con un nombre mal escrito, inexistente o con una versi贸n no especificada y el repositorio de dependencias utilizado permite reunir versiones actualizadas de repositorios p煤blicos.
- Mal escrito: Importar
reqests
en lugar derequests
- Inexistente: Importar
company-logging
, una biblioteca interna que ya no existe - Versi贸n no especificada: Importar una biblioteca
company-requests
interna existente, pero el repositorio verifica repos p煤blicos para ver si hay versiones mayores.
Explotaci贸n
warning
En todos los casos, el atacante solo necesita publicar un paquete malicioso con el nombre de las bibliotecas utilizadas por la empresa v铆ctima.
Mal Escrito e Inexistente
Si su empresa est谩 tratando de importar una biblioteca que no es interna, es muy probable que el repositorio de bibliotecas est茅 buscando en repositorios p煤blicos. Si un atacante la ha creado, su c贸digo y las m谩quinas en funcionamiento probablemente estar谩n comprometidos.
Versi贸n No Especificada
Es muy com煤n que los desarrolladores no especifiquen ninguna versi贸n de la biblioteca utilizada, o que solo especifiquen una versi贸n mayor. Entonces, el int茅rprete intentar谩 descargar la 煤ltima versi贸n que cumpla con esos requisitos.
Si la biblioteca es una biblioteca externa conocida (como requests
de python), un atacante no puede hacer mucho, ya que no podr谩 crear una biblioteca llamada requests
(a menos que sea el autor original).
Sin embargo, si la biblioteca es interna, como requests-company
en este ejemplo, si el repositorio de la biblioteca permite verificar nuevas versiones tambi茅n externamente, buscar谩 una versi贸n m谩s nueva disponible p煤blicamente.
As铆 que si un atacante sabe que la empresa est谩 utilizando la biblioteca requests-company
versi贸n 1.0.1 (permitiendo actualizaciones menores). Puede publicar la biblioteca requests-company
versi贸n 1.0.2 y la empresa utilizar谩 esa biblioteca en lugar de la interna.
Soluci贸n de AWS
Esta vulnerabilidad se encontr贸 en AWS CodeArtifact (lea los detalles en esta publicaci贸n del blog).
AWS solucion贸 esto permitiendo especificar si una biblioteca es interna o externa, para evitar descargar dependencias internas de repositorios externos.
Encontrar Bibliotecas Vulnerables
En la publicaci贸n original sobre confusi贸n de dependencias, el autor busc贸 miles de archivos package.json expuestos que conten铆an las dependencias de proyectos de javascript.
Referencias
- https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610
- https://zego.engineering/dependency-confusion-in-aws-codeartifact-86b9ff68963d
tip
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 馃挰 Discord group or the telegram group or follow us on Twitter 馃惁 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.