- 简介浏览器、库操作系统和系统仿真器依赖沙盒和进程隔离来模拟系统资源并安全地隔离不受信任的组件。所有对系统资源(如系统调用)的访问都需要由应用程序进行安全调解。否则,系统调用可能允许不受信任的组件逃避仿真器或沙盒监视器,从而逃脱并攻击整个应用程序或系统。现有的方法(如ptrace)需要在内核和用户空间之间进行额外的上下文切换,这会引入高性能开销。而seccomp-bpf仅支持有限的策略,这限制了其功能,或者仍需要ptrace提供帮助。本文提出了nexpoline,这是一种安全的系统调用拦截机制,结合了内存保护密钥(MPK)和Seccomp或Syscall User Dispatch(SUD)。我们的方法将应用程序的系统调用指令转换为保留给地址空间内受信任监视器的特权,从而允许灵活的用户定义策略。要执行系统调用,应用程序必须通过nexpoline切换上下文。与ptrace等安全拦截技术相比,它提供更好的效率,因为nexpoline可以通过二进制重写安全地拦截系统调用。因此,nexpoline确保了系统调用拦截的安全性、灵活性和效率。值得注意的是,它在不需要root权限的情况下,可以在当前的Linux系统上运行,而无需进行内核修改。我们的基准测试表明,在实现相同的安全保证的同时,nexpoline在拦截开销方面比ptrace有更好的性能。与类似的firejail相比,nexpoline支持更复杂的策略,并且可以模拟系统资源。
- 图表
- 解决问题本文旨在解决浏览器、Library OSes和系统模拟器等应用程序中的系统调用拦截问题,以及现有方法的性能瓶颈和功能限制。
- 关键思路本文提出了一种安全的系统调用拦截机制nexpoline,它结合了Memory Protection Keys (MPK)和Seccomp或Syscall User Dispatch (SUD)。nexpoline可以将应用程序的syscall指令转换为受信任监视器在地址空间内保留的特权,从而允许灵活的用户定义策略。它通过二进制重写安全地拦截系统调用,比像ptrace这样的安全拦截技术具有更好的效率。与firejail相比,nexpoline支持更复杂的策略,并支持模拟系统资源。
- 其它亮点实验结果表明,nexpoline在拦截开销方面比ptrace具有更好的性能,同时实现了相同的安全保障。nexpoline不需要内核修改,因此在当前的Linux系统上可行而无需root权限。
- 相关研究包括ptrace和seccomp-bpf等已有的系统调用拦截技术,以及firejail等类似的应用程序隔离技术。
沙发等你来抢
去评论
评论
沙发等你来抢