mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-30 00:20:59 +00:00
65 lines
6.3 KiB
Markdown
65 lines
6.3 KiB
Markdown
|
# Confusión de dependencias
|
||
|
|
||
|
<details>
|
||
|
|
||
|
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||
|
|
||
|
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa 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**](https://github.com/sponsors/carlospolop)!
|
||
|
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección de exclusivos [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||
|
* Obtén el [**swag oficial de PEASS y HackTricks**](https://peass.creator-spring.com)
|
||
|
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) **grupo de Discord** o al [**grupo de telegram**](https://t.me/peass) o **sígueme en** **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||
|
* **Comparte tus trucos de hacking enviando PR al [repositorio de hacktricks](https://github.com/carlospolop/hacktricks) y al [repositorio de hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||
|
|
||
|
</details>
|
||
|
|
||
|
## 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 **recopilar 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 **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 e inexistente
|
||
|
|
||
|
Si su 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 su código y las máquinas que lo ejecutan se vean 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 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.\
|
||
|
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** (lea los [**detalles en esta publicación de blog**](https://zego.engineering/dependency-confusion-in-aws-codeartifact-86b9ff68963d)).\
|
||
|
AWS solucionó esto permitiendo especificar si una biblioteca es interna o externa, para evitar descargar dependencias internas de repositorios externos.
|
||
|
|
||
|
## Encontrar bibliotecas vulnerables
|
||
|
|
||
|
En el [**post original sobre la confusión de dependencias**](https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610), 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://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610)
|
||
|
* [https://zego.engineering/dependency-confusion-in-aws-codeartifact-86b9ff68963d](https://zego.engineering/dependency-confusion-in-aws-codeartifact-86b9ff68963d)
|
||
|
|
||
|
<details>
|
||
|
|
||
|
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||
|
|
||
|
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa 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**](https://github.com/sponsors/carlospolop)!
|
||
|
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección de exclusivos [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||
|
* Obtén el [**swag oficial de PEASS y HackTricks**](https://peass.creator-spring.com)
|
||
|
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) **grupo de Discord** o al [**grupo de telegram**](https://t.me/peass) o **sígueme en** **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||
|
* **Comparte tus trucos de hacking enviando PR al [repositorio de hacktricks](https://github.com/carlospolop/hacktricks) y al [repositorio de hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||
|
|
||
|
</details>
|