我正在 Linux 上的沙箱上工作,我想要实现的是拦截系统调用并返回模拟值或更改寄存器/指针并使用修改后的值执行系统调用。
我想从同一个进程中实现这一点,我的代码已经在启动期间注入到目标进程中。
可以用seccomp吗?
如果您有一些示例会有所帮助或任何其他建议,也许有更好的方法来实现相同的目标
可能值得一提的是,尝试从与被沙箱化的进程相同的地址空间内拦截系统调用作为沙箱化的一种形式将容易失败。 恶意应用程序可以找到一种方法来检测它是否被沙盒化,并对在其地址空间中运行的沙盒代码采取措施。
更好的选择是使用更传统的静态系统调用过滤器,如大量沙盒工具所做的那样,或者创建一个监督进程来使用添加到 seccomp/libseccomp 的通知功能来监视和拦截系统调用。
我对 seccomp 还很陌生,前一天甚至不知道它的存在,如果我理解正确的话,最近添加的通知使我们能够处理来自用户模式的系统调用。
您是否有我可以用作此任务参考的代码(seccomp 通知。拦截系统调用)?
您可以随时检查下面的测试,它相当简单,但它应该为您提供有关如何使用它的基本概念:
我将关闭此问题,因为我认为问题已解决,但如果您不同意,请随时重新打开/评论。
最有用的评论
您可以随时检查下面的测试,它相当简单,但它应该为您提供有关如何使用它的基本概念:
我将关闭此问题,因为我认为问题已解决,但如果您不同意,请随时重新打开/评论。