
luigi è un pacchetto che ti aiuta a costruire pipeline complesse di job batch. Gestisce la risoluzione delle dipendenze, la gestione dei flussi di lavoro, la visualizzazione, la gestione degli errori, l'integrazione con la riga di comando e molto altro.
Le versioni interessate di questo pacchetto sono vulnerabili a Scrittura Arbitraria di File tramite Estrazione di Archivi (Zip Slip) a causa di una convalida impropria del percorso del file di destinazione nella funzione _extract_packages_archive.
Viene sfruttato utilizzando un archivio zip appositamente creato, che contiene nomi di file con path traversal. Quando viene sfruttato, un nome di file in un archivio malevolo viene concatenato alla directory di estrazione di destinazione, il che fa sì che il percorso finale finisca al di fuori della cartella di destinazione. Ad esempio, uno zip può contenere un file con una posizione ../../file.exe e quindi uscire dalla cartella di destinazione. Se un eseguibile o un file di configurazione viene sovrascritto con un file contenente codice malevolo, il problema può trasformarsi facilmente in un problema di esecuzione arbitraria del codice.
Di seguito è riportato un esempio di archivio zip con un file innocuo e un file malevolo. L'estrazione del file malevolo comporterà l'uscita dalla cartella di destinazione, finendo in /root/.ssh/ e sovrascrivendo il file 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 il packages.tar malevolo
python3 xpl.py
Passalo come argomento a luigi/contrib/lsf_runner.py
Controlla la tua /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