Vulnerabilidad de confusión de dependencias en sistemas de administración de paquetes
Vulnerabilidad de confusión de dependencias en sistemas de administración de paquetes

Vulnerabilidad de confusión de dependencias en sistemas de administración de paquetes

La vulnerabilidad conocida como «confusión de dependencias» es un tipo de riesgo que afecta a proyectos y aplicaciones que utilizan sistemas de administración de paquetes. Esta vulnerabilidad surge cuando el sistema no cuenta con mecanismos adecuados para evitar la confusión entre las dependencias internas y externas.

Funcionamiento del ataque

El ataque se basa en la publicación de un paquete con el mismo nombre que una dependencia interna utilizada por el proyecto, pero lo hace en un repositorio público. Cuando el sistema de administración de paquetes busca e instala las dependencias, puede descargarse y instalarse inadvertidamente el paquete malicioso en lugar del paquete legítimo.

Administradores de paquetes afectados

Se ha confirmado que los siguientes sistemas de administración de paquetes están afectados:

  • MNP
  • RubyGems
  • PyPi
  • JFrog
  • NuGet

Ejemplo práctico en Python/PyPi

En un caso específico, se ha demostrado que la vulnerabilidad puede afectar a proyectos que utilizan el sistema PyPi. Por ejemplo, un archivo requirements.txt típico puede incluir dependencias como:

defusedxml
banditbeautifulsoup4
flask
flask-auth-company-name

Esta configuración es vulnerable a la confusión de dependencias porque flask-auth-company-name es una dependencia local que no se espera que exista en el repositorio remoto.

Mecanismo del ataque

El atacante puede cargar un paquete malicioso con ese nombre, asegurándose de que tenga un número de versión más alto que el del paquete local. La próxima vez que se ejecute el proceso de compilación, el paquete malicioso se descargará del repositorio y se usará en lugar del paquete legítimo.

Este tipo de ataque puede considerarse una variante de ataque a la cadena de suministro.