
Vulnerabilità di attraversamento di directory del modulo Tarfile (con overflow incrociato di Directory) --> Porta a escalation dei privilegi
Impatto : Escalation dei privilegi
Funzionamento :
I metodi TarFile.extractall() e TarFile.extract() di Python supportano una funzionalità che consente di impostare un filtro per migliorare la sicurezza nell'uso di questi metodi. La libreria standard di Python fornisce due implementazioni tar_filter ("tar") e data_filter ("data"), ciascuna con controlli diversi per migliorare la sicurezza dell'estrazione dei file tar.
Esiste un bug nell'elaborazione di un percorso con collegamenti simbolici più breve di PATH_MAX, ma più lungo di PATH_MAX quando i collegamenti simbolici vengono sostituiti da os.path.realpath(). Eventuali collegamenti simbolici oltre PATH_MAX non vengono espansi.
os.path.realpath() viene utilizzato dai filtri "tar" e "data" per convalidare il percorso, ma nessun errore viene generato se PATH_MAX viene superato. Successivamente, durante extractall() o extract(), i percorsi vengono utilizzati senza passarli attraverso os.path.realpath().
Riferimento : https://github.com/google/security-research/security/advisories/GHSA-hgqp-3mmf-7h8f
Come usare il PoC :
ssh-keygen -t ed25519 -f any
mkdir test
mv any.pub authorized_keys
cp authorized_keys /test
cd test
#Put your public key file name (authorized_keys)
python3 exploit.py
(file.tar) ~ generated
# Now using Python3
sudo python3 tar -xvf file.tar
#login
chmod 600 any
ssh -i any user@ip