Python Seccomp 允许 STDIN
我正在做一个项目,需要运行一些可能有害的代码。这个项目的基本结构是有一个主进程和一个从进程。从进程负责运行那些可能有害的代码,并且启用了seccomp。
import prctl
prctl.set_seccomp(True)
这就是如何开启seccomp的。我可以从从进程向主进程发送信息,但反过来就不行了。当我没有开启seccomp时,我可以使用:
import sys
lines = sys.stdin.read()
或者类似的方式。我觉得这很奇怪,按照seccomp的默认设置,我应该有权限进行读写,特别是对于标准输入和输出。我甚至在开启seccomp之前尝试过打开标准输入。例如:
stdinFile = sys.stdin
prctl.set_seccomp(True)
lines = stdinFile.read()
但还是没有成功。我还尝试过readlines(),也不行。一个朋友建议我试试Unix域套接字,在开启seccomp之前打开它,然后直接使用write()调用。但这也没用。如果有人有解决这个问题的建议,请分享一下!我看到过一些C语言的代码,类似于
seccomp_add_rule(stuff)
但我在用Python的cffi模块时没有成功。
1 个回答
0
sys.stdin
不是一个文件句柄,你需要先打开它,才能在调用 set_seccomp
之前获取一个文件句柄。你可以用 os.fdopen
来做到这一点。标准输入(stdin)和标准输出(stdout)的文件描述符可以通过 sys.stdin.fileno()
来获取。