
Vulnerabilidade de travessia de diretório no módulo Tarfile (com estouro cruzado de diretório) --> Leva à escalação de privilégios
Impacto : Escalação de privilégios
Funcionamento :
Os métodos TarFile.extractall() e TarFile.extract() do Python suportam um recurso que permite definir um filtro para melhorar a segurança do uso desses métodos. A biblioteca padrão do Python fornece duas implementações tar_filter ("tar") e data_filter ("data"), cada uma com verificações diferentes para melhorar a segurança da extração de tarfiles.
Um bug existe ao processar um caminho com links simbólicos que é mais curto que PATH_MAX, mas mais longo que PATH_MAX quando os links simbólicos são substituídos por os.path.realpath(). Quaisquer links simbólicos que estejam além de PATH_MAX não são expandidos.
os.path.realpath() é usado pelos filtros "tar" e "data" para validar o caminho, mas nenhum erro é lançado se PATH_MAX for excedido. Posteriormente, durante extractall() ou extract(), os caminhos são usados sem passá-los por os.path.realpath().
Referência : https://github.com/google/security-research/security/advisories/GHSA-hgqp-3mmf-7h8f
Como Usar o 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