Safe Python Environment in Linux

2019-07-14 19:27发布

Is it possible to create an environment to safely run arbitrary Python scripts under Linux? Those scripts are supposed to be received from untrusted people and may be too large to check them manually.

A very brute-force solution is to create a virtual machine and restore its initial state after every launch of an untrusted script. (Too expensive.)

I wonder if it's possible to restrict Python from accessing the file system and interacting with other programs and so on.

5条回答
地球回转人心会变
2楼-- · 2019-07-14 20:13

Consider using a chroot jail. Not only is this very secure, well-supported and tested but it also applies to external applications you run from python.

查看更多
▲ chillily
4楼-- · 2019-07-14 20:18

You could run jython and use the sandboxing mechanism from the JVM. The sandboxing in the JVM is very strong very well understood and more or less well documented. It will take some time to define exactly what you want to allow and what you dnt want to allow, but you should be able to get a very strong security from that ...

On the other side, jython is not 100% compatible with cPython ...

查看更多
Melony?
5楼-- · 2019-07-14 20:19

There are 4 things you may try:

  • As you already mentioned, using a virtual machine or some other form of virtualisation (perhaps solaris zones are lightweight enough?). If the script breaks the OS there then you don't care.
  • Using chroot, which puts a shell session into a virtual root directory, separate from the main OS root directory.
  • Using systrace. Think of this as a firewall for system calls.
  • Using a "jail", which builds upon systrace, giving each jail it's own process table etc.

Systrace has been compromised recently, so be aware of that.

查看更多
闹够了就滚
6楼-- · 2019-07-14 20:31

could you not just run as a user which has no access to anything but the scripts in that directory?

查看更多
登录 后发表回答