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

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

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

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
leaky-vessels-dynamic-detector — 基于 eBPF 的运行时检测器,用于检测 runc 和 Docker 中的容器逃逸漏洞,通过监控系统调用和 Docker 守护进程调用,在构建和运行期间检测对 CVE-2024-21626、CVE-2024-23651、CVE-2024-23652 和 CVE-2024-23653 的利用。 | Kitploit
工具/GitHubGitHub/snyk/leaky-vessels-dynamic-detector
防御工具容器安全动态分析 (沙盒)漏洞分析云安全入侵检测Archived
GitHubsnyk/leaky-vessels-dynamic-detector

leaky-vessels-dynamic-detector

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

基于 eBPF 的运行时检测器,用于检测 runc 和 Docker 中的容器逃逸漏洞,通过监控系统调用和 Docker 守护进程调用,在构建和运行期间检测对 CVE-2024-21626、CVE-2024-23651、CVE-2024-23652 和 CVE-2024-23653 的利用。

查看仓库
105891年前尚未审核

警告

此仓库现已归档。

代码将不再进行任何更新,当您阅读此通知时,它可能已不安全甚至无法使用。 请仅将其视为历史用途,并谨慎对待。

Leaky Vessels 动态检测器

snyk-oss-category

在此仓库中,您将找到基于 eBPF 的运行时检测参考实现,用于检测 runc 和 Docker 漏洞 CVE-2024-21626、CVE-2024-23651、CVE-2024-23652 和 CVE-2024-23653。它挂钩 Linux 系统调用(例如 chdir、mount)以及 Docker 守护进程的函数调用,并将其与 Docker 构建和容器进程关联起来,以识别对这些漏洞的利用。 如需基于静态分析的方法,请参阅此。

runc process.cwd 与泄漏文件描述符容器逃逸 [CVE-2024-21626]

CVE-2024-21626 是 runc 容器运行时中的一个漏洞,攻击者可通过精心构造的镜像利用 WORKDIR 指令处理中的问题,突破容器隔离并在宿主机上实现完全 root RCE。由于宿主机某些文件描述符的打开与关闭之间存在“竞态”条件,攻击者可以创建一个包含 WORKDIR /proc/self/fd/[ID] 指令的 Dockerfile(其中 ID 为依赖系统的文件描述符),该指令将指向底层宿主机的文件系统。在以下情况下可被利用:

  1. docker build - 有两种情况:
    • 当被构建的 Dockerfile 包含触发该漏洞利用的指令时。
    • 当被构建的 Dockerfile 通过 FROM 指令引用的基础镜像包含触发该漏洞利用的 ONBUILD 命令时,例如 ONBUILD WORKDIR /proc/self/fd/[ID]。ONBUILD 指令不会将命令注入包含它的镜像中,而是注入到将其作为基础镜像使用的镜像中。这意味着,如果基础镜像被攻破或故意作恶(例如托管在 Dockerhub 或其他公共容器注册表中),即使 docker build 命令实际构建的镜像没有任何变化,也可能被利用。
  2. docker run

因此,该漏洞可能同时危及构建系统和生产环境。

Buildkit 挂载缓存竞态:构建时竞态条件容器逃逸 [CVE-2024-23651]

CVE-2024-23651 是 Docker 中的一个漏洞,当 RUN 命令使用 --mount=cache 标志时触发。在检查 Docker 守护进程宿主机上 source 目录是否存在与实际调用 mount 系统调用之间存在时间检查/时间使用(TOCTOU)漏洞。攻击者能够构造一个 Dockerfile,在这两次调用之间植入符号链接,以诱导任意绑定挂载,从而在宿主机上实现完全 root RCE。 该漏洞仅影响 docker build 命令。

Buildkit GRPC SecurityMode 权限检查 [CVE-2024-23653]

CVE-2024-23653 是 Docker 中的一个漏洞,当使用自定义 Buildkit LLB 生成器并配合 # syntax 指令时触发。该生成器可以使用 Client.NewContainer 和 Container.Start GRPC 调用在构建期间执行新容器。StartRequest.SecurityMode 参数未针对 Docker 守护进程或 docker build 调用的权限预期进行适当检查,这允许 GRPC 调用者在构建期间创建特权容器。随后可逃逸该新创建的特权容器,从而在构建宿主机上获得完全 root RCE。 该漏洞仅影响 docker build 命令。

Buildkit 构建时容器拆除任意删除 [CVE-2024-23652]

CVE-2024-23652 是 Docker 中的一个任意删除漏洞。当 Dockerfile 中使用 RUN --mount 时,如果挂载目标不存在,则会为该环境创建该目标。执行完成后,该创建的目录将被清理。如果正在执行的命令将用于挂载的路径更改为符号链接,则清理过程将遍历该符号链接,并可能清理宿主机根文件系统中的任意目录。 该漏洞仅影响 docker build 命令。

安装与使用

构建时 eBPF 检测

构建时检测适用于全部 4 个漏洞。

  1. 编译检测器二进制文件:GOOS=linux GOARCH={{amd64/arm64}} go build。
  2. 在构建环境中使用 sudo(eBPF 所需)在后台运行编译后的二进制文件(即 sudo ebpf-detector &)。
  3. 如果检测到其中一个漏洞被利用,您将在 STDOUT 上看到 Leaky vessels vulnerability detected,同时还会显示相应的 CVE、漏洞名称和额外的取证信息。

Kubernetes 运行时 eBPF 检测

运行时检测仅适用于 WORKDIR 漏洞(CVE-2024-21626)。

  1. 使用提供的 Dockerfile 构建检测器的容器镜像,并将其推送到镜像仓库。
  2. 在 detector.yaml 中填写 image 值(标记为 TODO)。
  3. 通过运行 kubectl apply -f detector.yml 将检测器作为 DaemonSet 部署到 Kubernetes 集群中。
  4. 如果检测到 WORKDIR 漏洞利用,您将在 DaemonSet Pod 日志中看到 Leaky Vessels vulnerability detected。

测试

单元测试需要在 sudo 下运行,因为它们依赖 eBPF:sudo go test ebpf-detector/...。

局限性

  • 需要 root 访问权限 / 以特权模式运行容器(eBPF 所需)。
  • 运行时 WORKDIR 漏洞利用(CVE-2024-21626)发生在容器初始化期间,因此无法在运行中的容器上检测到。该检测还假定容器运行时为 containerd。
  • Buildkit 挂载缓存竞态(CVE-2024-23651)和 Buildkit 构建时容器拆除任意删除(CVE-2024-23652)的检测基于时序,可能因竞态条件而产生漏报。
  • 已在以下环境中测试:
    • Ubuntu 20.04/22.04(AMD64)
    • GKE(Ubuntu 和 Alpine Linux,AMD64)
    • EKS(Ubuntu 和 Alpine Linux,AMD64)- 受 EKS 版本 >= 1.25 支持
    • Ubuntu 22.04(ARM64)

问题

有关错误和问题的更新列表,请参阅项目问题页面。

贡献

欢迎贡献。详情请参阅 CONTRIBUTING.md。

许可证

Leaky Vessels 动态检测器采用 Apache-2.0 许可证。更多信息请参阅 LICENSE。

下载工具