python - fstat() 是安全的(沙盒)操作吗?

标签 python sandbox stat pypy

我目前正在使用沙盒 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 调用可以揭示某些您可能不想保密的信息。除其他事项外:

  • 两个文件描述符是否在同一个文件系统上
  • 底层文件系统的 block 大小
  • 文件所有者的数字 UID/GID
  • 文件的修改/访问时间

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

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

相关文章:

paypal - 在 PayPal 沙盒中使用哪些信用卡进行链式支付?

c# - 我们目前无法使用您的 PayPal 帐户处理您的付款

r - 使用 sox 统计数据批量测量 .wav 文件

c - 读取proc stat信息

python - 使用登录用户在 Flask 应用程序上运行 Selenium 测试

python - 使用Python套接字发送串联的固定长度值

Python:读取文件时如何忽略两个特定单词之间的文本?

python - 为什么None是python中最小的?

docker - 通过 Ajax 使用 docker 执行沙箱命令

C - 递归调用遍历子目录并打印所有文件+大小(使用 stat)