【发布时间】:2011-04-08 05:28:15
【问题描述】:
我将寻找建议/资源来编写一个程序,该程序可以拦截来自程序的系统调用,以监督它的文件系统、网络等访问。
这样做的目的是写一个在线判断,让不受信任的代码可以在服务器上安全运行。
这是在 linux 上的,我更喜欢编写 C++ 或脚本语言(ruby、python 等),并且库会很棒!
谢谢。
【问题讨论】:
标签: c++ linux system-calls ptrace
我将寻找建议/资源来编写一个程序,该程序可以拦截来自程序的系统调用,以监督它的文件系统、网络等访问。
这样做的目的是写一个在线判断,让不受信任的代码可以在服务器上安全运行。
这是在 linux 上的,我更喜欢编写 C++ 或脚本语言(ruby、python 等),并且库会很棒!
谢谢。
【问题讨论】:
标签: c++ linux system-calls ptrace
这看起来是个不错的起点。 http://www.linuxjournal.com/article/6100
【讨论】:
您不能安全地使用 ptrace() 沙箱恶意应用程序。
应用程序总是可以使用具有故意竞争条件的多个线程来更改通过指针(例如文件名)传递的系统调用参数,在您检查它们之后但在内核查看它们之前。
【讨论】:
fork() 和clone(),那你应该能顺利到达那里(当然,这意味着人们不能将多线程代码提交给你的在线法官) )。您还需要停止访问共享内存段。您可能仍然会更好地解决问题的替代方法 - 例如。使用 SELinux 进行沙盒。
ptrace() 本质上是不安全的?我听说实施安全追踪很棘手,但这是可能的。您对用户模式 Linux(也使用 ptrace())有何看法?