runc
符合OCI规范的底层容器运行时,负责实际创建和运行容器进程,通过组合Namespace、Cgroups、pivot_root等Linux内核特性提供完整的容器隔离能力
Timeline (last 90 days)
runc是OCI Runtime Spec的参考实现,containerd和CRI-O在其上封装了镜像管理和生命周期管理能力
runc组合使用pivot_root与Mount Namespace,并执行umount2(old_root, MNT_DETACH)来彻底断开与宿主机挂载树的联系
Docker曾曝出runc漏洞CVE-2019-5736,允许容器内进程覆写宿主机的runc二进制文件并获得root权限
CVE-2024-21626 漏洞利用了 runc 在处理工作目录时的文件描述符泄露问题实现容器逃逸,于2024年初出现
Docker 的底层运行时已从最初的 LXC 迁移到自研的 containerd 和 runc
沙箱逃逸的已知路径包括利用容器运行时漏洞(如runc CVE-2024-21626)、突破Linux namespace隔离等技术手段
2019 年的 CVE-2019-5736 runc 漏洞证明了共享内核隔离模型的固有安全风险
Docker底层依赖containerd作为高级运行时,再由containerd调用runc完成容器创建
runc源自Docker早期的libcontainer库,后被捐赠给OCI作为参考实现
现代容器运行时分为高级运行时(如containerd、CRI-O)和低级运行时(如runc)两层
2 more timeline events
All Facts (12)
runc是OCI Runtime Spec的参考实现,containerd和CRI-O在其上封装了镜像管理和生命周期管理能力
50%Unverifiedrunc组合使用pivot_root与Mount Namespace,并执行umount2(old_root, MNT_DETACH)来彻底断开与宿主机挂载树的联系
50%UnverifiedDocker曾曝出runc漏洞CVE-2019-5736,允许容器内进程覆写宿主机的runc二进制文件并获得root权限
50%UnverifiedDocker 的底层运行时已从最初的 LXC 迁移到自研的 containerd 和 runc
50%Unverified沙箱逃逸的已知路径包括利用容器运行时漏洞(如runc CVE-2024-21626)、突破Linux namespace隔离等技术手段
50%Unverified2019 年的 CVE-2019-5736 runc 漏洞证明了共享内核隔离模型的固有安全风险
50%UnverifiedDocker底层依赖containerd作为高级运行时,再由containerd调用runc完成容器创建
50%Unverifiedrunc源自Docker早期的libcontainer库,后被捐赠给OCI作为参考实现
50%Unverified现代容器运行时分为高级运行时(如containerd、CRI-O)和低级运行时(如runc)两层
50%Unverified容器运行时通常分为高级运行时(如containerd、CRI-O)和低级运行时(如runc)两层,低级运行时直接调用Linux内核的namespace和cgroup机制实现进程隔离和资源限制
50%Unverifiedrunc本身约10MB,containerd约50MB,完整的Docker引擎超过200MB
50%UnverifiedCVE-2024-21626 漏洞利用了 runc 在处理工作目录时的文件描述符泄露问题实现容器逃逸,于2024年初出现
60%