Search code examples
pythonsecuritysandboxrexec

Is there an alternative to rexec for Python sandboxing?


Implementing a 'sandbox' environment in Python used to be done with the rexec module (http://docs.python.org/library/rexec.html). Unfortunately, it has been deprecated/removed due to some security vulnerabilities. Is there an alternative?

My goal is to have Python code execute semi-trusted Python scripts. In a perfect world, calls to any functions outside of a pre-defined set would raise exceptions. From what I've read about rexec's deprecation, this may not be possible. So I'll settle for as much as I can get. I can spawn a separate process to run the scripts, which helps a lot. But they could still abuse I/O or processor/memory resources.


Solution

  • You might want to provide your own __import__ to prevent inclusion of any modules you deem "abuse I/O or processor/memory resources."

    You might want to start with pypy and create your own interpreter with limitations and constraints on resource use.