这是一系列关于在 Linux 上用户空间沙箱状态的实验,主要涉及 Gentoo 的沙箱和 Exherbo 的 sydbox:
- 版本信息:Gentoo 沙箱版本 3.2,Exherbo sydbox 版本 3.19.0。
PoC 1:chdir(2)指针修改
- 攻击方式:通过在 chdir(2)系统调用上进行指针修改的时间检查到使用时间(TOCTOU)攻击,利用恶意线程反复覆盖 chdir(2)路径参数指针指向的内存区域,进入被拒绝的目标目录并尝试读取文件。
- 实验结果:在 Gentoo 沙箱和 Exherbo sydbox 中,TOCTOU 攻击都能成功进入目标目录,但在 Exherbo sydbox 中最终读取文件时会出现“文件不存在”的错误,说明沙箱对文件访问进行了限制。
- 应对措施:内核应提供安全的 API 用于 seccomp,如
SECCOMP_CHDIR
;可以通过终止进程、锁定 chdir(2)调用或使用挂载命名空间等方式进行缓解。
PoC 2:open(2) O_PATH 指针修改
- 攻击方式:利用 open(2)系统调用的 O_PATH 标志进行指针修改的 TOCTOU 攻击,证明被沙箱隐藏的文件的存在。
- 实验结果:在 Gentoo 沙箱和 Exherbo sydbox 中,TOCTOU 攻击都能成功证明文件的存在,但在 Exherbo sydbox 中默认会将 O_PATH 标志转换为 O_RDONLY 标志以避免 TOCTOU 向量,除非使用
trace/allow_unsafe_open:1
选项。 - 应对措施:内核应提供安全的 API 用于 seccomp,如在
SECCOMP_ADDFD
的新文件描述符标志中传递 O_PATH 和 O_CLOEXEC 标志。
PoC 3:execve(2)指针修改
- 攻击方式:通过在 execve(2)系统调用上进行指针修改的 TOCTOU 攻击,执行被沙箱拒绝的可执行文件。
- 实验结果:在 Exherbo sydbox 中,使用
trace/allow_unsafe_exec:1
选项可以去除 ptrace 依赖,但会失去一些安全功能;默认情况下,sydbox 会应用有效的 TOCTOU 缓解措施,但仍存在一定的风险。 - 应对措施:内核应提供安全的 API 用于 seccomp,如
SECCOMP_EXEC
。
- 结论:Gentoo 的沙箱主要用于检测包构建错误,防御能力有限;Exherbo 的 sydbox 试图作为安全边界,但仍易受 TOCTOU 攻击。需要 Linux 内核提供更安全的 API 来处理关键系统调用,同时结合其他安全措施来创建更安全的沙箱环境。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。