如何防止使用ptrace执行系统调用

Sta*_*ked 7 c c++ ptrace

我正在开发一个类似Ideone的系统,其中不受信任的用户代码必须以沙盒模式运行.

为此,我一直在寻找ptrace第一层保护的可能性.然而,经过几次实验后,似乎:

  • 我可以在调用之前拦截系统调用并修改输入参数.
  • 我可以在调用后拦截系统调用并更改返回值.
  • 但是,似乎根本没有办法阻止呼叫的骚扰(除了杀死整个应用程序).

我想拦截某些系统调用并返回一个虚假的结果代码而不会实际调用.有没有办法实现这个?

iab*_*der 1

你可以通过增加IP(指令指针)来跳转执行系统调用的指令,这样调用就不会被执行,你可以照常设置返回值。

编辑:

有一个名为Pinktrace的 ptrace 包装器,它应该使您的工作更轻松,这里还有更多信息:

https://security.stackexchange.com/questions/8484/wrapping-system-call-in-reliable-and-secure-way