多个漏洞削弱Docker容器安全性
一位研究人员在Docker运行时发现了多个严重漏洞,可能破坏容器与主机操作系统之间的隔离层。攻击者可以利用这些漏洞提升权限并窃取数据。
漏洞详情
Aleska Sarai,Suse的软件工程师兼开放容器倡议(OCI)董事会成员,发布了关于在Docker运行时runc中发现三个高危漏洞的警报。“这三个漏洞使攻击者能够绕过标准强化和隔离控制来破坏容器。“他补充说,这些漏洞影响"runc处理某些procfs文件写入的方式,攻击者在容器内部利用隐藏路径、绑定挂载和gadget写入来劫持主机权限。”
该负责人强调,尽管这些攻击需要自定义挂载配置或不可信的镜像,但对容器化系统(特别是在Docker或Kubernetes等编排器中)的威胁非常真实。公告强烈建议用户立即更新版本或应用提供的补丁。
隐藏路径问题
三个补丁中的第一个解决了runc中的隐藏路径问题,容器运行时通过绑定挂载”/dev/null"(Unix系统上的数据收集文件)替换文件。如果攻击者成功将/dev/null转换为指向关键procfs文件(例如/proc/sys/kernel/core_pattern或/proc/sysrq-trigger)的符号链接,运行时会无意中将该目标以读写方式挂载,从而授予攻击者访问主机的权限。
在一个变体中,runc直接忽略/dev/null的缺失并继续进程,这导致通过"proc/kcore"或"proc/timer_list"等隐藏文件泄露信息,这两个都是内核可见的敏感接口。Sarai先生警告说,尽管攻击无法直接挂载任意主机文件,但这些方法足以触发完全容器逃逸或主机崩溃。该漏洞编号为CVE-2025-31133,影响所有已知版本的runc,严重性评分为7.3分(满分10分)。已在版本1.2.8、1.3.3和1.4.0-rc.3中修复。
另外两个严重漏洞
第二个漏洞编号为CVE-2025-52565,针对"/dev/console"挂载管理。攻击者可以将目标路径替换为符号链接,导致runc错误挂载错误目标,从而使攻击者获得对procfs路径的写访问权限。“与CVE-2025-31133漏洞类似,这发生在pivot_root(2)之后,因此不能用于直接挂载主机文件,但攻击者可以通过创建/proc/sys/kernel/core_pattern或/proc/sysrq-trigger的读写挂载来欺骗runc,从而导致完全容器逃逸,“Sarai先生解释道,并补充说版本1.0.0-rc3及更高版本仍然易受攻击。
第三个漏洞编号为CVE-2025-52881,使攻击者能够通过重定向写入到procfs文件来绕过Linux安全模块(LSM),如SELinux或AppArmor。一旦LSM标签被中和,对主机级别procfs的写入就成为可能,这可能导致主机完全被入侵。
安全建议
“根据我们的分析,AppArmor和SELinux都无法保护免受完整版本的重定向重写攻击,“Sarai先生补充道。“通常,容器运行时具有足够权限写入任意procfs文件,这足以导致容器逃逸,“他继续说道。“使用rootless模式的容器可能会有所帮助,因为这会阻止大多数意外写入,“Sarai先生指出。
容器、Kubernetes和云安全专家Sysdig的进一步分析证实,这三个漏洞都需要使用自定义挂载配置启动容器,这使用不可信的容器镜像和Dockerfiles很容易实现。“利用这些漏洞可以通过监控可疑的符号链接行为来实现,“Sysdig表示。为此,该供应商为其Secure和Falco用户添加了检测规则。