Tutoriales

Utensilio para comprobar las vulnerabilidades de confusión de dependencias

Confundido es una utensilio para realizar espacios de nombres libres persistentes para nombres de paquetes privados a los que se hace remisión en la configuración de dependencia para Python (pypi) requirements.txt, JavaScript (npm) package.json, PHP (compositor) composer.json o MVN (maven) pom.xml.

¿Qué es todo esto?

El 9 de febrero de 2021, un investigador de seguridad Alex Birsan publicó un artículo que tocaba diferentes fallas de orden de resolución en herramientas de administración de dependencias presentes en múltiples ecosistemas de lenguajes de programación.

Microsoft publicó un documento técnico que describe formas de mitigar el impacto, mientras que la causa raíz aún permanece.

Interpretar el resultado de la utensilio

confused simplemente lee un archivo de definición de dependencia de una aplicación y verifica los repositorios de paquetes públicos para cada entrada de dependencia en ese archivo. Se procederá a reportar todos los nombres de paquetes que no se encuentran en los repositorios públicos, estado que implica que un paquete podría ser pusilánime a este tipo de ataque, mientras que este vector aún no ha sido explotado.

Sin secuestro, esto no significa que una aplicación no esté siendo explotada de forma activa. Si sabe que su software utiliza repositorios de paquetes privados, debe comprobar de que los espacios de nombres para sus paquetes privados hayan sido reclamados por una parte de confianza (normalmente usted o su empresa).

Falsos positivos conocidos

Algunos ecosistemas de empaquetado como npm tienen un concepto llamado «alcances» que pueden ser privados o públicos. En esquema, significa un espacio de nombres que tiene un nivel superior: el efecto. Los ámbitos no son inherentemente visibles públicamente, lo que significa que confused no puede detectar de forma fiable si se ha reclamado. Si su aplicación utiliza nombres de paquetes con ámbito, debe comprobar de que una parte de confianza haya reclamado el nombre del ámbito en los repositorios públicos.

Instalación

Uso

Uso:
./confundido [-l LANGUAGENAME] depfilename.ext

Uso de ./confused:
-l cautiverio
Sistema de repositorio de paquetes. Títulos posibles: «pip», «npm», «composer», «mvn» (predeterminado «npm»)
-s cautiverio
Nómina separada por comas de espacios de nombres seguros conocidos. Soporta comodines
-v Salida detallada

Ejemplo

Python (PyPI)

./confused -l pip requirements.txt

Problemas encontrados, los siguientes paquetes no están disponibles en los repositorios de paquetes públicos:
[!] internal_package1

JavaScript (npm)

./confused -l npm package.json
Problemas encontrados, los siguientes paquetes no están disponibles en los repositorios de paquetes públicos:
[!]internal_package1
[!]@ miempresa / paquete_interno1
[!]@ miempresa / paquete_interno2
#Ejemplo cuando el ámbito privado de @mycompany se ha registrado en npm, usando -s
./confused -l npm -s ‘@ mycompany / *’ package.json
Problemas encontrados, los siguientes paquetes no están disponibles en los repositorios de paquetes públicos:
[!]internal_package1

Maven (mvn)

./confused -l mvn pom.xml

Problemas encontrados, los siguientes paquetes no están disponibles en los repositorios de paquetes públicos:
[!]interno
[!]interno / paquete1
[!]internal / _package2

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba