Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
litebox-seccomp-open-rdonly — 高本地文件读取:LiteBox v0.1.0 linux-userland seccomp SYS_open O_RDONLY 没有主机路径检查 | Kitploit
工具/GitHubGitHub/abraxas/litebox-seccomp-open-rdonly
容器安全动态分析 (沙盒)漏洞分析漏洞利用信息收集论文与研究实验室与实践
GitHubabraxas/litebox-seccomp-open-rdonly

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

litebox-seccomp-open-rdonly

高本地文件读取:LiteBox v0.1.0 linux-userland seccomp SYS_open O_RDONLY 没有主机路径检查

查看仓库
114天前尚未审核

Abraxas Labs - litebox-seccomp-open-rdonly

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  litebox-seccomp-open-rdonly

litebox-seccomp-open-rdonly

类别: 文件读取(沙箱文件系统边界) 可达性: 本地

LiteBox v0.1.0(d8556e3)- Microsoft

文档中所述的 Linux 用户态运行器(litebox-runner-linux-userland)会安装一个默认拒绝的 seccomp 过滤器,然后在同一进程中加载客户机 ELF。当参数 1(flags)为等于 OFlags::RDONLY(0)的 dword 时,SYS_open 位于允许列表中。没有路径谓词。发出真实 syscall 且 flags 为 0 的客户机将以运行器 UID 打开宿主 VFS,然后 read / mmap 这些字节。在此固定版本上,ELF 重写器不是安全边界。--rewrite-syscalls 是 -Z 且默认关闭。

此遗留问题是宿主文件系统读取。它不是宿主写入、不是执行、不是 ptrace、不是 LPE,也不是 RCE。

ID暂无 CVE
类别文件读取(沙箱文件系统边界)
可达性本地(运行器进程中的不受信任客户机二进制)
CWECWE-284、CWE-862
CVSS高:7.1 CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:N
产品microsoft/litebox
受影响版本v0.1.0(d8556e33676e47244bfefa139c1e9ff95bd67d53)Linux 用户态平台 + 运行器
认证客户机已在沙箱内运行
许可证GNU Affero GPL v3.0
实验环境仅 127.0.0.1,linux/amd64

攻击者能做什么

谁:litebox-runner-linux-userland 中的不受信任客户机二进制。厂商(GitHub #1006 上的 CvvT)和重写器 crate 文档均表示 ELF 跳板不是安全边界。Linux 用户态安全依赖此过滤器。enable_seccomp_filter 是默认拒绝(release 中为 Errno(EINVAL)),并带有 TSYNC 和 PR_SET_NO_NEW_PRIVS。漏洞在于 SYS_open flags Eq 0 且没有路径检查。page_mgmt.rs 中的注释说明,CoW 映射在过滤器启用后重新打开宿主程序文件,而不是持有预先打开的 FD。

侦察(实验环境已验证)

方法 + 汇聚点权限
真实 SYS_open("/oracle/secret", 0) 然后 SYS_read运行器 UID 可读取的宿主文件字节。实验环境:fd 3,35 字节,见证 LITEBOX-SECCOMP-OPEN-RDONLY-WITNESS。路径是 initramfs 宿主 VFS,而非客户机覆盖层。

侦察(从同一过滤器推断;非实验环境预言机)

方法 + 汇聚点权限
SYS_open("/etc/passwd", 0) 然后 read / mmap以运行器 UID 读取全局可读的宿主文件
SYS_open 运行器拥有的路径(ssh 密钥、.env、kubeconfig、云凭证、--initial-files tar)若该 UID 能打开,则读取这些字节
SYS_open("/etc/shadow", 0)shadow 哈希仅当运行器为 root 时
SYS_open("/proc/self/maps", 0)运行器映射,包括宿主 .text / libc(同一进程)
SYS_open("/proc/self/mem", 0) 然后对 FD 执行 mmap该 UID 可通过 procfs 读取的运行器地址空间。pread 是未匹配拒绝;SYS_mmap 被允许。

完整性

此遗留问题无完整性影响。实验环境已验证的否定结果均返回 errno=22 EINVAL 且未创建文件:

方法 + 汇聚点结果
SYS_open O_RDWREINVAL
SYS_open O_CREATEINVAL,未创建文件
SYS_openat 即使带 O_RDONLYEINVAL
SYS_execveEINVAL
socket、ptraceEINVAL(额外的未匹配拒绝)

在此固定版本上,openat / openat2 / creat / unlink / chmod 保持未匹配拒绝。

可用性

不在范围内。

此遗留问题不授予的权限

  • 宿主写入、执行、ptrace、process_vm_readv、io_uring_setup、bpf、mount、pivot_root、unshare、setns、connect、ioctl、getdents
  • x32 / i386:seccompiler 0.5.0 前缀 AUDIT_ARCH_X86_64 或 KILL_PROCESS
  • clone3 继承过滤器;写入 uid_map 需要被阻止的 open
  • 客户机虚拟文件系统(in_mem + tar_ro)不变。此遗留问题是经由真实系统调用的宿主 VFS
  • Windows 用户态没有 seccomp;该运行器不声称此边界
  • 不是 RCE,不是 LPE,不是逃逸到另一 UID 的沙箱逃逸

我是如何发现的

我固定了 microsoft/litebox v0.1.0(d8556e3,2026-10-07)而非 main。进行了十八次源码搜寻。重写器 crate 和 GitHub #1006 已表明跳板不是边界。Linux 用户态过滤器才是。flags 为 0 的 SYS_open 存在是为了让 CoW 能重新打开程序文件。没有路径检查。

弯路:Docker Desktop Rosetta 和 qemu-user-static 在此宿主上均拒绝 seccomp(SET_MODE_FILTER)(EINVAL / ENOSYS)。因此实验环境在 qemu-system-x86_64 TCG 下启动 x86_64 Alpine virt 内核,并将复制的过滤器作为 PID 1 运行,使 BPF 命中真实的 x86_64 内核。复制的是 seccompiler 0.5.0 规则,而非树内 enable_seccomp_filter 调用,也不是完整工作区。

实验环境

cd lab
./run.sh

回环 127.0.0.1:19110。Compose 项目 litebox-seccomp-open-rdonly。平台 linux/amd64。见证 LITEBOX-SECCOMP-OPEN-RDONLY-WITNESS。最后一行:

SUCCESS litebox-seccomp-open-rdonly open-rdonly-ok rdwr-einval openat-einval execve-einval LITEBOX-SECCOMP-OPEN-RDONLY-WITNESS

修复

从过滤器中移除 SYS_open,并在 PR_SET_SECCOMP 之前预先打开 CoW FD,或添加一个无法看到客户机文件系统之外宿主路径的路径谓词。未匹配拒绝已覆盖 openat。

厂商接收渠道为 MSRC(https://msrc.microsoft.com/create-report)。请勿在 microsoft/litebox 上开启公开 GitHub issue。

联系方式

Abraxas Labs - abraxaslabs.tech - github.com/abraxas - @abraxas_null - [email protected]

下载工具