
luigi es un paquete que te ayuda a construir pipelines complejos de trabajos por lotes. Maneja resolución de dependencias, gestión de flujos de trabajo, visualización, manejo de fallos, integración de línea de comandos y mucho más.
Las versiones afectadas de este paquete son vulnerables a Escritura Arbitraria de Archivos mediante Extracción de Archivos (Zip Slip) debido a una validación incorrecta de la ruta del archivo de destino en la función _extract_packages_archive.
Se explota mediante un archivo zip especialmente diseñado que contiene nombres de archivo con traversal de rutas. Al explotarse, un nombre de archivo en un archivo malicioso se concatena al directorio de extracción de destino, lo que hace que la ruta final termine fuera de la carpeta de destino. Por ejemplo, un zip puede contener un archivo con una ubicación "../../file.exe" y así salir de la carpeta de destino. Si un ejecutable o un archivo de configuración se sobrescribe con un archivo que contiene código malicioso, el problema puede convertirse fácilmente en un problema de ejecución de código arbitrario.
El siguiente es un ejemplo de un archivo zip con un archivo benigno y un archivo malicioso. Extraer el archivo malicioso resultará en una salida de la carpeta de destino, terminando en /root/.ssh/ sobrescribiendo el archivo authorized_keys:
+2018-04-15 22:04:29 ..... 19 19 good.txt
+2018-04-15 22:04:42 ..... 20 20 ../../../../../../root/.ssh/authorized_keys
Crea un packages.tar malicioso
python3 xpl.py
Pásalo como argumento para luigi/contrib/lsf_runner.py
Revisa tu /tmp/fodac :)
https://security.snyk.io/vuln/SNYK-PYTHON-LUIGI-7830489
https://github.com/spotify/luigi/commit/b5d1b965ead7d9f777a3216369b5baf23ec08999
https://github.com/spotify/luigi/issues/3301