in reply to Running untrusted perl code

Your sketch design looks about right for a sandbox application. You may want to consider a special installation of Perl within a chroot tree on a partition of its own. Take a look at Opcode to work with Safe. There is an opcode group called base_io which allows IO operations on filehandles, but not their creation.

After Compline,
Zaxo

Replies are listed 'Best First'.
Re: Re: Running untrusted perl code
by BUU (Prior) on May 30, 2004 at 21:30 UTC
    Whats the advantage of installing perl in a chroot tres? As far as I can tell, the way I have it set up, since the process is already running it won't need any other files to be inside the chroot, so even if it manages to do file io (Which I don't think is that hard, I wasn't under the impression Safe was that secure) the can't touch *anything*. If theres a perl install, they could put a trojan in there or something, since the original perl server needs to be run as a root to chroot/set rlimits/etc, they could break the chroot and unfun stuff like that.

      The idea is to have a mini-system in the chroot tree and call an effective chroot /path/to/sandbox /bin/script where script actually is in /path/to/sandbox/bin. You will need to set that up, however you call it, suid root, and need to release root privilege before any user code is evaled. A small C program may be the simplest to set up. Any system utils you permit will need to be copied into that tree in their customary locations. They should be static builds unless you want copies of all the needed system dll's.

      Not even root can break out of a properly set up sandbox. The perl installation is needed the same as any other executable. If it's not in the sandbox it effectively doesn't exist for the jailed process.

      If you lack privilege to secure this, you probably shouldn't be doing it.

      After Compline,
      Zaxo

        I know what the point of chroot is, (but note, according to http://www.bpfh.net/simes/computing/chroot-break.html it is possible to break out of a chroot jail, assuming you are root), if you'll notice in my original node I am planning on using chroot, my question was, why bother installing perl and so forth in my chroot directory? I plan on just chrooting my child process thats going to eval the untrusted code, that way I can leave the chroot directory completely empty.