我目前正在使用沙盒 PyPy 编写 Python 沙箱。基本上,沙箱通过提供一个“ Controller ”来工作,该“ Controller ”将系统库调用映射到指定的函数。按照 codespeak 上的说明(完成设置过程)后,我意识到默认 Controller 不包含 os.fstat()
的替代品,因此在我调用 open()
时会崩溃。具体来说,包含的 pypy/translator/sandbox/sandlib.py
不包含 do_ll_os__ll_os_fstat
的定义。
到目前为止,我已将其实现为:
def do_ll_os__ll_os_fstat(self, fd):
return os.fstat(fd)
这似乎工作正常。这安全吗?这会在沙箱中造成一个洞吗?
最佳答案
fstat 调用可以揭示某些您可能想或不想保密的信息。除其他事项外:
然而,它不会修改任何东西,所以如果你不介意这个(相对较小的)信息泄露,没问题。您还可以更改某些结果以屏蔽要隐藏的信息(例如,将所有者 UID/GID 设置为 0)
关于python - fstat() 是安全(沙盒)操作吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6576194/