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

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 de requests
  • 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

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