0

我正在做一个项目,我将在其中运行潜在的恶意代码。它的基本组织是有一个主进程和一个从进程。从属进程运行潜在的恶意代码,并启用了 seccomp。

import prctl

prctl.set_seccomp(True)

这就是 seccomp 的开启方式。我可以从奴隶到主人很好地沟通,但反过来不行。当我不打开 seccomp 时,我可以使用:

import sys

lines = sys.stdin.read()

或类似的规定。我发现这很奇怪,考虑到 seccomp 的默认参数,我应该可以进行读写,尤其是对于 stdin/out。我什至尝试在打开 seccomp 之前打开 stdin。例如。

stdinFile = sys.stdin
prctl.set_seccomp(True)
lines = stdinFile.read()

但还是无济于事。我也试过 readlines() 不起作用。一位朋友建议我尝试 Unix Domain Sockets,在 seccomp 继续之前打开它,然后只使用 write() 调用。这也不起作用。如果有人对如何解决这个问题有任何建议,请发表!我在 C 中看到了一些代码,例如

seccomp_add_rule(stuff)

但是我在 Python 中通过 cffi 模块使用它并没有成功。

4

1 回答 1

0

sys.stdin不是文件句柄,调用前需要打开并获取文件句柄set_seccomp。你可以用os.fdopen这个。标准输入/标准输出的文件描述符可用作sys.stdin.fileno().

于 2014-08-25T04:57:28.910 回答