Rewriting Every Syscall in a Linux Binary at Load Time
3 days ago
- #system-calls
- #binary-rewriting
- #security
- 在加载时通过二进制重写技术将系统调用指令替换为陷阱,从而拦截Linux二进制文件中的每一个系统调用。
- 这种方法实现了低开销、对指针参数的全面检查,以及对返回值和系统调用仿真的控制。
- 它解决了现有方法(如ptrace、seccomp和eBPF)的局限性,这些方法缺乏检查或修改能力。
- 重写器使用指令长度解码器准确定位并修补系统调用操作码,而不会损坏其他指令。
- 对于边缘情况(如JIT编译的代码),通过LSTAR MSR实现自我修复,在首次执行时修补新的系统调用。
- 运行在轻量级虚拟机中的垫片分发被拦截的系统调用,以强制执行策略、仿真或升级到管理程序。
- 这一基础允许在不受信任的代码上以接近原生性能的方式强制执行任意策略,非常适合安全执行环境。