Chroot Jail Not Secure for Sandboxing Python?

"Martin v. Löwis" martin at v.loewis.de
Mon Jun 25 17:13:57 EDT 2007


> This was my thought too.  I just figured there was something special
> about this command that brought one to the "real" Python intrepreter
> and then to the real "/bin/sh".  That's odd, my ISP seem adament that
> this is a way to break out.  I'll just have to put in the work to test
> to locally I guess.

No. The jail is protected by the operating system - even if a
perpetrator would manage to run arbitrary native code (e.g.
through running a compiler) in the jail, they *still* could
not access any data outside the chroot.

There are very few way of getting out of the jail. One is
to manage creating a device node for, say /dev/hda, and then
mounting hard disk into the jail; others are listed at

http://www.unixwiz.net/techtips/chroot-practices.html

In all cases, you need root privileges, so if the chrooted
process does not run as root, it is safe. Be careful
not to put any s-bit programs into the jail.

>>> So is a chroot jail not adequate for sandboxing Python?
>> You have to define your threat model. If the threat to prevent is
>> a malicious user getting at your data, or spreading a virus
>> through your files, then chroot is perfectly adequate.
> 
> Yeah, sounds like my threat model.  Maybe prevent someone sending
> spam, or DOS from my server too.

It cannot help you prevent the sending of spam or DOS: it *only*
affects the local hard disk (that's why it's ch*root* - as in
"root directory"). The "jailed" process can perform all networking
that a similarly-privileged process outside the jail could.

To prevent network access, you would need additional system
features, as the ones provided by SELinux.

Regards,
Martin



More information about the Python-list mailing list