漏洞CVE-2020-14386修复公告
前提条件
- 已获得受影响 Linux 节点的登录权限,可检查内核版本并执行升级操作。
- 如需在 CCE 控制台调整工作负载 YAML,已存在可操作的 CCE 集群和待调整的工作负载。
- 如需通过 PodSecurityPolicy 删除
CAP_NET_RAW权限,目标 Kubernetes 集群仍启用 PodSecurityPolicy,且具备将策略绑定到目标ServiceAccount的权限。## 概述 本文档介绍 CVE-2020-14386 漏洞的风险、影响范围,以及通过升级 Linux Kernel 版本或在容器侧删除CAP_NET_RAW权限进行处置的方法。## 漏洞描述 近日,百度云安全团队监测发现 Linux 发行版存在一个权限提升漏洞(CVE-2020-14386),漏洞详情参考CVE-2020-14386。 攻击者可以利用该漏洞进行越界写操作,进而造成权限提升、容器逃逸以及内存访问错误导致系统崩溃的风险。
该漏洞出现在 net/packet/af_packet.c 文件中,触发需要本地低权限用户或可执行文件具有 CAP_NET_RAW 权限。 一般非 root 用户无 CAP_NET_RAW 权限,但在较高版本 Linux 中非 root 用户可以通过创建 user namespace 的方式成为新 user namespace 中的 root 用户,进而获得该权限。 此外,K8S 创建出的 Docker 容器被默认拥有 CAP_NET_RAW 权限,因此存在触发漏洞的可能性。
漏洞编号:CVE-2020-14386
漏洞等级:高危
影响范围
Linux kernel 4.6 至 5.9-rc4
受影响的发行版系统:
- Ubuntu 18.04 及后续版本
- Centos 8/RHEL 8
- Debian 9/10
相关安全建议
升级 Linux Kernel 版本 或 禁用容器 CAP_NET_RAW 权限。
升级 Linux Kernel 版本
导航路径:登录目标 Linux 节点。
- 确认目标节点当前内核版本。
禁用容器 CAP_NET_RAW 权限
-
在容器 Spec 配置中删除
CAP_NET_RAW权限。导航路径:容器引擎 CCE->集群管理->集群列表->目标集群->工作负载->无状态
进入目标工作负载后,单击 【编辑 YAML】,在
spec.template.spec.containers[].securityContext.capabilities.drop中添加NET_RAW,使容器启动时主动丢弃该能力;如工作负载包含多个容器,请按需对对应容器分别配置。YAML1spec: 2 containers: 3 - name: your-container 4 ... 5 securityContext: 6 capabilities: 7 drop: ["NET_RAW"] -
通过 PodSecurityPolicy 删除
CAP_NET_RAW权限。导航路径:容器引擎 CCE->集群管理->集群列表
确认目标地域已存在可操作的 Kubernetes 集群;如需从本机下发清单,可使用 【kubectl 工具下载】 入口准备客户端工具。



该方式仅适用于仍启用 PodSecurityPolicy 的 Kubernetes 集群。PodSecurityPolicy 在 Kubernetes
v1.21弃用、在v1.25移除;如果目标集群版本较新,请改用 Pod 安全准入(Pod Security Admission)。单独创建 PodSecurityPolicy 不会自动对工作负载生效,还需要通过 RBAC 将该策略绑定给目标
ServiceAccount。在策略清单中,将requiredDropCapabilities设置为NET_RAW,示例如下:YAML1apiVersion: policy/v1beta1 2kind: PodSecurityPolicy 3metadata: 4 name: mypsp 5spec: 6 ... 7 requiredDropCapabilities: 8 - 'NET_RAW'
评价此篇文章
