我目前正在使用沙盒 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
  • 文件修改/访问次数

  • 然而,它不会修改任何东西,所以如果你不介意这个(相对较小的)信息泄露,没问题。您还可以更改某些结果以屏蔽要隐藏的信息(例如,将所有者 UID/GID 设置为 0)

    关于python - fstat() 是安全(沙盒)操作吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6576194/

    10-11 22:59
    查看更多