
Уязвимость обхода каталогов модуля Tarfile (с переполнением, пересекающим каталог) --> Приводит к повышению привилегий
Воздействие : повышение привилегий
Работа :
Методы TarFile.extractall() и TarFile.extract() в Python поддерживают функцию, позволяющую установить фильтр для повышения безопасности использования этих методов. Стандартная библиотека Python предоставляет две реализации tar_filter ("tar") и data_filter ("data"), каждая из которых выполняет различные проверки для повышения безопасности извлечения tar-файлов.
Существует ошибка при обработке пути с символическими ссылками, который короче PATH_MAX, но становится длиннее PATH_MAX после замены символических ссылок с помощью os.path.realpath(). Любые символические ссылки, выходящие за пределы PATH_MAX, не раскрываются.
os.path.realpath() используется фильтрами "tar" и "data" для проверки пути, но ошибка не возникает, если PATH_MAX превышен. Позже во время extractall() или extract() пути используются без передачи их через os.path.realpath().
Ссылка : https://github.com/google/security-research/security/advisories/GHSA-hgqp-3mmf-7h8f
Как использовать 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