6.1 KiB
Confusión de Dependencias
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- ¿Trabajas en una empresa de ciberseguridad? ¿Quieres que tu empresa sea anunciada en HackTricks? ¿O quieres tener acceso a la última versión de PEASS o descargar HackTricks en PDF? ¡Consulta los PLANES DE SUSCRIPCIÓN!
- Descubre La Familia PEASS, nuestra colección exclusiva de NFTs
- Obtén la merchandising oficial de PEASS & HackTricks
- Únete al 💬 grupo de Discord o al grupo de telegram o sígueme en Twitter 🐦@carlospolopm.
- Comparte tus trucos de hacking enviando PRs al repositorio de hacktricks y al repositorio de hacktricks-cloud.
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 obtener 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 interna existente
company-requests
, pero el repositorio verifica repositorios públicos para ver si hay versiones superiores.
Explotación
{% hint style="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. {% endhint %}
Mal Escrito & Inexistente
Si tu empresa está intentando importar una biblioteca que no es interna, es muy probable que el repositorio de bibliotecas la esté buscando en repositorios públicos. Si un atacante la ha creado, es muy probable que tu código y máquinas en ejecución sean comprometidos.
Versión no Especificada
Es muy común que los desarrolladores no especifiquen ninguna versión de la biblioteca utilizada, o especifiquen solo una versión principal. 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
en 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.
Entonces, si un atacante sabe que la empresa está utilizando la biblioteca requests-company
versión 1.0.1 (permite actualizaciones menores), puede publicar la biblioteca requests-company
versión 1.0.2 y la empresa usará esa biblioteca en lugar de la interna.
Solución de AWS
Esta vulnerabilidad se encontró en AWS CodeArtifact (lee los detalles en esta publicación de blog).
AWS solucionó esto permitiendo especificar si una biblioteca es interna o externa, para evitar descargar dependencias internas desde repositorios externos.
Encontrar Bibliotecas Vulnerables
En el post original sobre la confusión de dependencias el autor buscó miles de archivos package.json expuestos que contenían las dependencias de proyectos JavaScript.
Referencias
- https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610
- https://zego.engineering/dependency-confusion-in-aws-codeartifact-86b9ff68963d
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- ¿Trabajas en una empresa de ciberseguridad? ¿Quieres que tu empresa sea anunciada en HackTricks? ¿O quieres tener acceso a la última versión de PEASS o descargar HackTricks en PDF? ¡Consulta los PLANES DE SUSCRIPCIÓN!
- Descubre La Familia PEASS, nuestra colección exclusiva de NFTs
- Obtén la merchandising oficial de PEASS & HackTricks
- Únete al 💬 grupo de Discord o al grupo de telegram o sígueme en Twitter 🐦@carlospolopm.
- Comparte tus trucos de hacking enviando PRs al repositorio de hacktricks y al repositorio de hacktricks-cloud.