OCI修复runc容器逃逸漏洞(CVE-2025-31133、CVE-2025-52565、CVE-2025-52881)
开放容器倡议(OCI)发布了安全更新,修复了影响其容器运行时runc的三个高危漏洞,包括可能导致容器逃逸、拒绝服务和主机系统权限提升的缺陷。
这些漏洞(编号为CVE-2025-31133、CVE-2025-52565和CVE-2025-52881)影响所有runc 1.2.7、1.3.2和1.4.0-rc.2及之前版本,已在1.2.8、1.3.3和1.4.0-rc.3版本中修复。
CVE-2025-31133:掩码路径竞争条件导致容器逃逸
第一个漏洞(CVSS 7.3分)涉及runc在maskedPaths实现中的挂载竞争条件。maskedPaths功能旨在通过挂载只读tmpfs或在特定系统文件上绑定/dev/null来保护敏感主机目录。
根据OCI的公告:“OCI运行时规范有一个maskedPaths功能,允许通过在其上放置挂载来’掩码’文件或目录以隐藏其内容。”
然而,研究人员发现runc未能验证源/dev/null是否真实,允许攻击者将其替换为指向其他文件的符号链接。OCI解释称,此缺陷"可能导致主机拒绝服务、主机信息泄露或容器逃逸。"
攻击者可以绑定挂载/proc/sysrq-trigger以获得内核控制的写权限,导致系统崩溃,或重新配置/proc/sys/kernel/core_pattern以在主机上以root权限执行任意命令,实现完全系统入侵。
OCI将此问题归类为高危,警告称"由于几乎所有高级容器运行时都应用了maskedPaths…此漏洞实际上允许任何能够生成容器的攻击者实现上述目标。"
CVE-2025-52565:利用/dev/console绑定挂载进行权限提升
第二个漏洞(CVSS 7.3分)针对/dev/pts/$n到/dev/console的绑定挂载,这是为分配控制台的容器默认配置的。
OCI将此问题描述为"不同目标中的类似漏洞(即/dev/pts/$n到/dev/console的绑定挂载)。"
通过利用挂载过程中的竞争条件,攻击者可以导致runc将通常受保护的主机路径(如/proc/sysrq-trigger或/proc/sys/kernel/core_pattern)绑定到容器内的可写位置。
这可以实现拒绝服务(通过使主机崩溃)或权限提升(通过操纵内核核心转储处理程序)。
该漏洞存在的原因是"/dev/console绑定挂载发生在应用maskedPaths和readonlyPaths之前。"
CVE-2025-52881:任意写入工具和LSM绕过
第三个漏洞CVE-2025-52881(CVSS 7.3分)通过允许在/proc内进行任意写入重定向,扩展了早期漏洞的影响,可能绕过Linux安全模块(LSM)保护,如AppArmor和SELinux。
报告指出"此攻击主要是CVE-2019-19921的更复杂版本",使攻击者能够诱骗runc将进程标签或sysctl数据写入意外的内核接口。
通过利用共享挂载命名空间和符号链接操作,攻击者可以将这些写入重定向到关键内核路径,如/proc/sysrq-trigger以强制主机崩溃,或到/proc/sys/kernel/core_pattern以实现具有root权限的代码执行。
OCI确认"此攻击允许禁用LSM标签的事实使其成为与CVE-2025-31133结合使用的非常有用的攻击",有效抵消了基于AppArmor的缓解措施。
缓解措施和建议
OCI建议在用户应用补丁时采取以下缓解措施:
- 启用用户命名空间:“我们强烈建议所有用户使用用户命名空间容器。它们已被证明是对抗容器逃逸的最佳安全加固机制之一。”
- 在容器内使用非root用户:配置容器以禁止root权限,启用noNewPrivileges,并使用非特权sysctl配置来降低风险。
- 避免不受信任的容器镜像:“不要运行来自未知或未验证来源的不受信任容器镜像。”
- 尽可能使用无根容器:OCI指出"无根容器可以提供更多保护…因为runc本身将是一个非特权进程。"
AppArmor和SELinux配置提供部分保护,但OCI警告CVE-2025-52881在某些条件下可以绕过两者。