Confusión de Dependencias
Reading time: 3 minutes
tip
Aprende y practica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Apoya a HackTricks
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a HackTricks y HackTricks Cloud repos de github.
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. Luego, 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 fue encontrada 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
Aprende y practica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Apoya a HackTricks
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a HackTricks y HackTricks Cloud repos de github.