
# Kubernetes subpath符号链接交换安全漏洞（CVE-2021- 25741）
#### 漏洞详情
社区在 Kubernetes 中发现了一个安全问题，用户可以创建一个带有subPath volume挂载的容器，访问卷外的文件和目录，包括主机文件系统上的文件和目录。
容器使用subPath去挂载一些文件或者目录时，攻击者可能利用Symlink Exchange 访问除挂载目录之外的目录或者主机上的文件，造成越权。
表1漏洞信息 
| 漏洞类型   | CVE-ID                                                                   | 漏洞级别 | 披露/发现时间    |
|:---|:---|:---|:---|
| 资源管理错误 | [CVE-2021-25741](https://github.com/kubernetes/kubernetes/issues/104980) | 中    | 2021-09-15 |
   
#### 漏洞影响
该漏洞涉及VolumeSubpath特性开关开启场景（默认开启），可能造成以下影响：
- 若恶意用户可以创建一个带有子路径卷挂载的容器，则可以访问卷外的文件和目录，包括主机文件系统上的文件和目录。
- 集群管理员已限制创建 hostPath 挂载的能力的集群受到的影响最严重。利用该漏洞可以在不使用 hostPath 功能的情况下进行类似 hostPath 的访问，从而绕过限制。

- 在默认的 Kubernetes 环境中，漏洞利用可用于掩盖对已授予特权的滥用。
 
#### 判断方法
涉及所有集群（新建的1.19.10及以上版本集群不受该漏洞影响）。
登录节点，执行命令，查看BuildDate，如果查看BuildDate是在2021-08-20之后的时间，则表示已经修复，不受该漏洞影响。
![](https://support.huaweicloud.com/bulletin-cce/zh-cn_image_0000001572311444.png "点击放大")
#### 漏洞处理方案
您可以禁用 kubelet 上的VolumeSubpath feature gate，并删除任何使用subPath功能的现有 Pod。
1. 以root用户登录CCE Node节点。
2. 修改kubelet配置参数，关闭VolumeSubpath特性。 
   **vi /opt/cloud/cce/kubernetes/kubelet/kubelet_config.yaml**
   添加VolumeSubpath: false字段
   ![](https://support.huaweicloud.com/bulletin-cce/zh-cn_image_0000001572471024.png "点击放大")
   
   
3. 重启kubelet。 
   **systemctl restart kubelet**
   
   
4. 确认kubelet新进程已启动，且已关闭VolumeSubpath。 
   **vi /var/paas/sys/log/kubernetes/kubelet.log**
   搜索VolumeSubpath=false，如果能搜到说明关闭成功。
   ![](https://support.huaweicloud.com/bulletin-cce/zh-cn_image_0000001572630960.png "点击放大")
   
   
5. 删除任何使用subPath功能的Pod。
 
#### VolumeSubpath特性开启或回退
1. 修改kubelet配置文件，删除VolumeSubpath相关字段。 
   **vi /opt/cloud/cce/kubernetes/kubelet/kubelet_config.yaml**
   
   
2. 重启kubelet。 
   **systemctl restart kubelet**
   
   
3. 确认kubelet新进程已启动，且重启后的kubelet.log日志中无VolumeSubpath=false相关字段。
 
#### 相关链接
<https://github.com/kubernetes/kubernetes/issues/104980>
