华为云用户手册

  • 1.23版本集群停止维护公告 发布时间:2024/04/25 华为云CCE集群1.23版本即将于2024/09/30 00:00(北京时间)正式停止维护,届时针对CCE集群1.23以及之前的版本,华为云将不再支持新集群创建。若您账号下存在1.23及之前的集群版本,为了保证您的服务权益,建议尽快升级到最新的商用版本。 关于如何升级集群,请参见CCE集群升级指导。 关于CCE集群的版本机制,请参见Kubernetes版本策略。 父主题: 集群版本公告
  • 漏洞详情 国外安全研究人员William Liu和Jamie Hill-Daniel发现Linux内核中包含一个整数溢出漏洞,可导致写操作越界。本地攻击者可以使用这一点导致拒绝服务(系统崩溃)或执行任意代码,在容器场景下拥有CAP_SYS_ADMIN权限的用户可导致容器逃逸到宿主机。目前已存在poc,但尚未发现已公开的利用代码。 表1 漏洞信息 漏洞类型 CVE-ID 漏洞级别 披露/发现时间 资源管理错误 CVE-2022-0185 高 2022-01-27
  • 相关链接 https://blog.aquasec.com/cve-2022-0185-linux-kernel-container-escape-in-kubernetes https://ubuntu.com/security/CVE-2022-0185 https://access.redhat.com/security/cve/CVE-2022-0185 https://www.openwall.com/lists/oss-security/2022/01/18/7
  • 漏洞影响 Linux系统内核在3.15-6.8中的netfilter: nf_tables组件存在释放后重利用漏洞,nft_verdict_init() 函数允许在钩子判定中使用正值作为丢弃错误,当 NF_DROP 发出类似于 NF_ACCEPT 的丢弃错误时,nf_hook_slow() 函数会导致双重释放漏洞,本地攻击者利用此漏洞可将普通用户权限提升至 root 权限。 该漏洞是一个本地提权漏洞,需要攻击者先渗透到集群的node节点,利用难度较高。
  • Everest插件优化密钥认证功能公告 发布时间:2021/02/02 Everest插件在1.2.0版本优化了使用OBS存储时的密钥认证功能,请在Everest插件升级完成后(从低于1.2.0的版本升级到1.2.0及以上版本),重启集群中使用OBS的全部工作负载,否则工作负载使用OBS存储能力将受影响! 关于Everest插件的版本说明,请参见CCE容器存储插件(Everest)版本发布记录。 父主题: 产品变更公告
  • 判断方法 您可以在节点上执行命令查看容器引擎使用的cgroup。 容器引擎为containerd的节点,执行以下命令: crictl info |grep -i systemdCgroup 显示如下: "systemdCgroup": false 容器引擎为docker的节点,执行以下命令: docker info |grep "Cgroup" 显示如下: Cgroup Driver: cgroupfs 表明容器引擎使用的cgroup系统为cgroupfs,并未使用systemd cgroup,不受此漏洞影响。
  • 判断方法 如果集群未安装CCE AI套件(NVIDIA GPU)插件或插件版本低于2.0.0,则不涉及该漏洞。 CCE AI套件(NVIDIA GPU)插件老版本命名为:gpu-beta、gpu-device-plugin。 如果CCE AI套件(NVIDIA GPU)插件版本大于等于2.0.0,请登录GPU节点执行以下命令: nvidia-container-runtime --version 若显示无此命令,则不涉及该漏洞。 若显示nvidia-container-runtime版本低于1.16.2,则涉及该漏洞。
  • 漏洞详情 runc是一个基于OCI标准实现的一个轻量级容器运行工具,是Docker、Containerd、Kubernetes等容器软件的核心基础组件。近日,runc社区发布最新版本,修复了一处高危级别的容器逃逸漏洞(CVE-2024-21626)。由于内部文件描述符泄漏,攻击者可通过控制容器进程的工作目录,或命令路径,将其设置为文件描述符的父级目录下的路径,读写主机任意文件,实现容器逃逸。 详细信息请参见:runc容器逃逸漏洞预警(CVE-2024-21626)
  • 漏洞影响 Fluent Bit 版本2.0.7 - 3.0.3中存在堆缓冲区溢出漏洞,该漏洞存在于Fluent Bit的嵌入式http服务器对跟踪请求的解析中,由于在解析/api/v1/traces 端点的传入请求时,在解析之前未正确验证input_name的数据类型,可通过在请求的“inputs”数组中传递非字符串值(如整数值),可能导致内存崩溃,成功利用该漏洞可能导致拒绝服务、信息泄露或远程代码执行。 CCE集群中安装了云原生日志采集插件,且版本为1.3.4-1.5.1时则涉及该漏洞。
  • 漏洞消减方案 CCE已在云原生日志采集插件1.5.2版本中修复该漏洞,在修复前建议通过关闭指标上报接口消减该漏洞影响: 节点上执行以下命令: kubectl edit cm -n monitoring log-agent-fluent-bit-config-service 将配置项中HTTP_Server On改为HTTP_Server Off,并保存。 重启monitoring命名空间下的log-agent-log-operator组件。
  • 判断方法 对于1.23及以下版本的CCE集群、 CCE Turbo 集群,使用web-terminal、cloudshell或者配置kubectl连接集群,运行以下命令,确认是否运行聚合API Server: kubectl get apiservices.apiregistration.k8s.io -o=jsonpath='{range .items[?(@.spec.service)]}{.metadata.name}{"\n"}{end}'
  • 相关链接 CVE-2021-25745社区漏洞issue:https://github.com/kubernetes/ingress-nginx/issues/8502 CVE-2021-25746社区漏洞issue:https://github.com/kubernetes/ingress-nginx/issues/8503 社区已经发布版本修复: https://github.com/kubernetes/ingress-nginx/releases/tag/controller-v1.2.0
  • 漏洞修复方案 1. 漏洞CVE-2021-25745消减措施:通过实施准入策略,将'networking.k8s.io/Ingress'中的'spec.rules[].http.paths[].path'限制在已知安全字符中(参考社区最新规则,或者采用annotation-value-word-blocklist中的建议值)。 2. 漏洞CVE-2021-25746消减措施:通过实施准入策略,将'metadata.annotations'的值限制在已知的安全字符中(参考社区最新规则,或者采用annotation-value-word-blocklist中的建议值)。
  • 漏洞详情 Kubernetes开源社区中披露了1个ingress-nginx漏洞,用户通过Ingress 对象的“spec.rules[].http.paths[].path”字段可以获取ingress-controller使用的credentials。这个credentials可以获取集群中所有namespace的secrets。该漏洞被收录为CVE-2021-25748。 表1 漏洞信息 漏洞类型 CVE-ID 漏洞级别 披露/发现时间 权限提升 CVE-2021-25748 中 2022-6-10
  • 漏洞详情 Kubernetes开源社区中披露了2个nginx-ingress漏洞: 1. 漏洞CVE-2021-25745:用户有权限可以在创建/更新ingress时,利用‘spec.rules[].http.paths[].path’字段,获取到ingress-controller使用的凭证,这个凭证可以获取集群中所有命名空间的密钥。 2. 漏洞CVE-2021-25746:用户有权限可以在创建/更新ingress时,利用‘.metadata.annotations’字段,获取到ingress-controller使用的凭证,这个凭证可以获取集群中所有命名空间的密钥。 表1 漏洞信息 漏洞类型 CVE-ID 漏洞级别 披露/发现时间 权限提升 CVE-2021-25745 中 2022-4-16 权限提升 CVE-2021-25746 中 2022-4-16
  • 漏洞影响 该漏洞涉及VolumeSubpath特性开关开启场景(默认开启),可能造成以下影响: 若恶意用户可以创建一个带有子路径卷挂载的容器,则可以访问卷外的文件和目录,包括主机文件系统上的文件和目录。 集群管理员已限制创建 hostPath 挂载的能力的集群受到的影响最严重。利用该漏洞可以在不使用 hostPath 功能的情况下进行类似 hostPath 的访问,从而绕过限制。 在默认的 Kubernetes 环境中,漏洞利用可用于掩盖对已授予特权的滥用。
  • 参考链接 社区v1.11与v1.13版本之间的CHANGE LOG v1.12到v1.13的变化: https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.13.md v1.11到v1.12的变化: https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.12.md
  • 漏洞详情 社区在 Kubernetes 中发现了一个安全问题,用户可以创建一个带有subPath volume挂载的容器,访问卷外的文件和目录,包括主机文件系统上的文件和目录。 容器使用subPath去挂载一些文件或者目录时,攻击者可能利用Symlink Exchange 访问除挂载目录之外的目录或者主机上的文件,造成越权。 表1 漏洞信息 漏洞类型 CVE-ID 漏洞级别 披露/发现时间 资源管理错误 CVE-2021-25741 中 2021-09-15
  • 资源变更与弃用 apps/v1beta1和apps/v1beta2下所有资源不再提供服务,使用apps/v1替代。 extensions/v1beta1下daemonsets、deployments、replicasets不再提供服务,使用apps/v1替代。 extensions/v1beta1下networkpolicies不再提供服务,使用networking.k8s.io/v1替代。 extensions/v1beta1下podsecuritypolicies不再提供服务,使用policy/v1beta1替代。 extensions/v1beta1 ingress v1.20版本不再提供服务,当前可使用networking.k8s.io/v1beta1。 scheduling.k8s.io/v1beta1 and scheduling.k8s.io/v1alpha1下的PriorityClass计划在1.17不再提供服务,迁移至scheduling.k8s.io/v1。 events.k8s.io/v1beta1中event series.state字段已废弃,将在1.18版本中移除。 apiextensions.k8s.io/v1beta1下CustomResourceDefinition已废弃,将在1.19不再提供服务,使用apiextensions.k8s.io/v1。 admissionregistration.k8s.io/v1beta1 MutatingWebhookConfiguration和ValidatingWebhookConfiguration已废弃,将在1.19不再提供服务,使用admissionregistration.k8s.io/v1替换。 rbac.authorization.k8s.io/v1alpha1 and rbac.authorization.k8s.io/v1beta1被废弃,使用rbac.authorization.k8s.io/v1替代,v1.20会正式停止服务。 storage.k8s.io/v1beta1 CS INode object废弃并会在未来版本中移除。
  • 其他废弃和移除 移除OutOfDisk node condition,改为使用DiskPressure。 scheduler.alpha.kubernetes.io/critical-pod annotation已被移除,如需要改为设置priorityClassName。 beta.kubernetes.io/os和beta.kubernetes.io/arch在1.14版本中已经废弃,计划在1.18版本中移除。 禁止通过--node-labels设置kubernetes.io和k8s.io为前缀的标签,老版本中kubernetes.io/availablezone该label在1.17中移除,整改为failure-domain.beta.kubernetes.io/zone获取AZ信息。 beta.kubernetes.io/instance-type被废弃,使用node.kubernetes.io/instance-type替代。 移除{kubelet_root_dir}/plugins路径。 移除内置集群角色system:csi-external-provisioner和system:csi-external-attacher。
  • 漏洞处理方案 您可以禁用 kubelet 上的VolumeSubpath feature gate,并删除任何使用subPath功能的现有 Pod。 以root用户登录CCE Node节点。 修改kubelet配置参数,关闭VolumeSubpath特性。 vi /opt/cloud/cce/kubernetes/kubelet/kubelet_config.yaml 添加VolumeSubpath: false字段 重启kubelet。 systemctl restart kubelet 确认kubelet新进程已启动,且已关闭VolumeSubpath。 vi /var/paas/sys/log/kubernetes/kubelet.log 搜索VolumeSubpath=false,如果能搜到说明关闭成功。 删除任何使用subPath功能的Pod。
  • VolumeSubpath特性开启或回退 修改kubelet配置文件,删除VolumeSubpath相关字段。 vi /opt/cloud/cce/kubernetes/kubelet/kubelet_config.yaml 重启kubelet。 systemctl restart kubelet 确认kubelet新进程已启动,且重启后的kubelet.log日志中无VolumeSubpath=false相关字段。
  • 1.17版本集群停止维护公告 发布时间:2022/11/29 根据CCE发布的Kubernetes版本策略中的版本策略,计划从2023年1月31日起,CCE将对1.17版本集群停止维护。在此之后,您仍可以使用您的1.17版本集群,但CCE将不再提供对该版本的技术支持,包含支持新的功能、社区bugfix回合、漏洞修复、升级等。 建议您在版本停止维护前及时将集群升级到最新版本,升级操作请参见集群升级。 父主题: 集群版本公告
  • ServiceAccount Token安全性提升说明 发布时间:2022/11/24 Kubernetes 1.21及以上版本的集群中,Pod将不再自动挂载永久Token,默认使用TokenRequest API获得Token,并使用投射卷(Projected Volume)挂载到Pod中。 使用这种方法获得的Token具有固定的生命周期(默认有效期为1小时),在到达有效期之前,Kubelet会刷新该Token,保证Pod始终拥有有效的Token,Kubernetes 1.21及以上版本的集群中会默认开启该特性。如果用户使用版本过低的K8s客户端(Client),由于低版本Client并不具备证书轮转能力,会存在证书轮转失效的风险。 详情请参见ServiceAccount Token安全性提升说明。 父主题: 产品变更公告
  • 触发条件 同时满足以下条件: 集群版本范围: 已EOS版本:v1.19及以下所有版本 1.21版本(于2024/04/30 00:00(北京时间)正式停止维护):v1.21.1-r0 - v1.21.11-r40 1.23版本:v1.23.1-r0 - v1.23.10-r20 1.25版本:v1.25.1-r0 - v1.25.5-r20 1.27版本:v1.27.1-r0 - v1.27.2-r20 IAM 服务出现区域性故障,且故障期间集群中的IAM临时访问密钥发生过期。 集群内工作负载新建或更新等涉及Pod启动,且需要对接存储卷挂载、负载均衡等功能。
  • 漏洞详情 近期Kubernetes社区发布了与Go相关的安全漏洞CVE-2019-9512和CVE-2019-9514。具体的安全问题出现在Go语言的net/http库中,它会影响Kubernetes的所有版本和所有组件。这些漏洞可能导致所有处理HTTP或HTTPS Listener的进程受到DoS攻击。 由于此问题影响范围很广,Go官方及时针对此问题发布了Go 1.12.9和Go 1.11.13版本。 Kubernetes也在v1.13.10 - go1.11.13版本中完成了Go版本的更新。 CCE已发布最新Kubernetes 1.13.10版本对漏洞进行修复,对于已经创建的Kubernetes 1.13版本,2019年9月底将提供补丁进行修复。针对低于Kubernetes 1.13集群版本将提供升级能力。 表1 漏洞信息 漏洞类型 CVE-ID 漏洞级别 披露/发现时间 拒绝服务攻击 CVE-2019-9512 高 2019-08-13 资源管理错误 CVE-2019-9514 高 2019-08-13
  • 参考链接 Netflix报告链接: https://github.com/Netflix/security-bulletins/blob/master/advisories/third-party/2019-002.md Go版本发布链接: https://golang.org/doc/devel/release.html#go1.12 Kubernetes社区PR链接: https://github.com/kubernetes/kubernetes/pull/81520 https://github.com/kubernetes/kubernetes/pull/81522
  • 附:为何影响? 这些攻击大多在HTTP/2传输层进行。如下图所示,该层位于TLS传输之上,但在请求概念之下。事实上,许多攻击都涉及0或1个请求。 从早期的超文本传输协议开始,中间件服务就以请求为导向:日志以请求为分割(而不是连接);速率限制发生在请求级别;并且流量控制也由请求触发。 相比之下,没有多少工具可以根据客户端在HTTP/2连接层的行为来执行记录、速率限制和修正。因此,中间件服务可能会发现更难发现和阻止恶意的HTTP/2连接,并且可能需要添加额外的工具来处理这些情况。 这些攻击媒介允许远程攻击者消耗过多的系统资源。有些攻击足够高效,单个终端系统可能会对多台服务器造成严重破坏(服务器停机/核心进程崩溃/卡死)。其他攻击效率较低的情况则产生了一些更棘手的问题,只会使服务器的运行变得缓慢,可能会是间歇性的,这样的攻击会更难以检测和阻止。
  • 漏洞修复方案 建议您采取以下安全防范措施: 通过设置集群Pod安全策略或admission准入机制强制Pod删除CAP_DAC_OVERRIDE系统权限: securityContext: capabilities: drop: ["DAC_OVERRIDE"] 通过使用集群Pod安全策略或其他admission准入机制限制以root用户启动容器,或设置参数allowPrivilegeEscalation为false: securityContext: allowPrivilegeEscalation: false 通过以下命令对容器内的/etc/hosts文件进行监控,如果该文件的大小异常,请采取相应告警或容器隔离措施。 find /var/lib/kubelet/pods/*/etc-hosts -size +1M
  • 漏洞详情 kubelet的驱逐管理器(eviction manager)中没有包含对Pod中挂载的/etc/hosts文件的临时存储占用量管理,因此在特定的攻击场景下,一个挂载了/etc/hosts的Pod可以通过对该文件的大量数据写入占满节点的存储空间,从而造成节点的拒绝访问(Denial of Service)。 表1 漏洞信息 漏洞类型 CVE-ID 漏洞级别 披露/发现时间 资源管理错误 CVE-2020-8557 中 2020-07-15
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全