Page 469 - 《软件学报》2026年第3期
P. 469

1432                                                       软件学报  2026  年第  37  卷第  3  期


                 界, 实现容器逃逸, 即获得直接访问宿主机资源的权限, 进而横向移动获取整个云平台的控制权限.
                    随着持续集成与持续部署          (continuous integration and continuous delivery, CI/CD) 的组合实践与云原生应用开
                 发、测试、部署过程的深度结合           [20] , 容器成为  CI/CD  实践的基础运行环境, 也增加了宿主机与容器实例间交互的
                 需求. 这类交互通常由容器所有者发起, 意图将主机资源导入容器或将处理的结果从容器导入主机. 然而, 此类交
                 互也为容器环境引入了新的攻击面, 允许容器化的恶意应用程序欺骗容器工具访问恶意负载                               (payload). 路径解析
                 错误与文件描述符泄露等两类漏洞均需利用容器-宿主机交互过程绕过容器与宿主机间的隔离, 进而窃取宿主机
                 中敏感信息或进行提权攻击.
                  2.2   路径解析错误漏洞原理及修复
                    文件路径解析错误漏洞根据攻击者行为的不同, 可以分为两类: 一类是符号链接解析欺骗漏洞, 一类是诱导非
                 法文件执行类漏洞. 图      2  简单展示了这两类漏洞的攻击过程.


                                 ① 指向主机目录
                         主机目录                恶意符号链接                         执行
                                                                  容器工具              恶意二进制文件

                                ② 挂载进容器
                            容器工具              主机目录                 新进程
                                                    容器                                      容器

                                                       主机                                       主机
                             (a) 符号链接解析欺骗漏洞攻击过程                      (b) 诱导非法文件执行漏洞攻击过程
                                             图 2 两类路径解析错误漏洞攻击过程

                    在主机和容器交互期间, 容器工具可以访问容器文件系统中的符号链接, 对其读取或写入. 但是如果容器将符
                 号链接指向了非预期位置, 由于该符号链接是在主机上下文中解析的, 容器工具在处理文件路径时可能会使容器
                 访问到主机上的敏感目录. 这就是符号链接解析欺骗的大致原理. 例如, 容器工具提供的复制                           (copy) 功能用于在容
                 器和主机之间复制文件. 但是从容器向主机中复制文件的源文件参数和从主机向容器内复制文件的目的文件参数
                 都由容器控制, 容器可以替换参数. 如果恶意符号链接替换了从容器向主机中复制文件时的源文件参数, 那么该符
                 号链接指向的文件会被导入主机环境, 对主机环境造成破坏. 同样, 如果替换了从主机向容器中复制文件场景下的
                 目的文件, 也会导致文件被复制到主机上的目录. Podman               中出现了类似的漏洞       CVE-2019-10152 [21] 和  CVE-2019-
                 18466 [22] .
                    卷  (volume) 是一个可供一个或多个容器使用的特殊目录, 它将主机操作系统目录直接映射进容器, 并且可以
                 在容器之间共享和重用. CVE-2021-30465      漏洞  [23] 产生的原因就是挂载数据卷时恶意符号链接替换了目标文件参
                 数. runC  操作目标目录时, 在检查目标文件参数和实际挂载到该目录之间存在一个时间差, 攻击者在这段时间内
                 将目标文件替换为一个指向主机目录              (如“/”) 的符号链接, 该主机目录随后会被挂载进容器中. 类似的漏洞还有
                 CVE-2017-1002101、CVE-2019-19921 [24] 和  CVE-2022-23648 [25] .
                    诱导非法文件执行是另一类利用符号链接解析进行攻击的方法. 除了读取或写入之外, 在主机与容器交互期
                 间容器中的文件还可以由主机进程             (例如容器工具) 执行, 这种执行可能会导致容器中的恶意文件在主机上下文
                 中起作用. 主机进程很难完全避免执行这类被篡改的容器文件. CVE-2022-0492                   漏洞  [26] 的发生是由于容器修改了
                 cgroup  中一个特殊文件“release_agent”. 该文件由  cgroup  文件系统提供, 是主机和容器之间共享          cgroup  信息的交
                 互接口, 只要攻击者能够对“release_agent”文件执行写操作, 就能强制内核以提升后的权限执行指定的二进制文件,
                 进而控制整个机器.
                    每当发现上述漏洞, 容器工具社区都会尝试修复. 但是多年来类似漏洞层出不穷, 并对多种容器工具产生严重
   464   465   466   467   468   469   470   471   472   473   474