La vulnerabilidad de
«dependency confusion»
(confusión de dependencias) es una vulnerabilidad que ocurre cuando un
proyecto o aplicación utiliza un sistema de administración de paquetes que
permite la instalación desde fuentes externas, como repositorios públicos o
privados, pero no tiene un mecanismo adecuado para evitar la «confusión» entre
las dependencias internas y las externas.

Básicamente lo que hace el ataque es usar un paquete con el mismo nombre que
una dependencia interna utilizada por el proyecto, pero lo publica en un
repositorio público. Cuando el sistema de administración de paquetes del
proyecto busca e instala las dependencias, puede descargar e instalar
inadvertidamente el paquete malicioso en lugar de la dependencia interna
legítima.
Se sabe que los siguientes administradores de paquetes están afectados:
- MNP
- RubyGems
- PyPi
- JFrog
- NuGet
En este post de HackerPlayer se prueba con Python/PyPi. Por ejemplo con un
archivo requirements.txt típico que se puede usar para extraer paquetes
de Python del repositorio de PyPi.
defusedxml
banditbeautifulsoup4
flask
flask-auth-company-name
Esta configuración de arriba es vulnerable a un ataque de confusión de
dependencias porque flask-auth-company-name es una dependencia solo
local que no se espera que exista en el repositorio remoto.
Lo que haremos será cargar el paquete malicioso usando ese nombre,
asegurándonos de que tenga un número de versión más alto que el del paquete
local. La próxima vez que se llame al proceso de compilación, el paquete
malicioso se descargará del repositorio y se usará en lugar del paquete local.
Podría decirse que es una variante de ataque a la cadena de suministro.
Contenido completo en fuente original:
HackPlayers
Los comentarios están cerrados.