华为云用户手册

  • 漏洞修复方案 华为云CCE容器服务: 华为云容器引擎已修复runc漏洞CVE-2019-5736。 自建Kubernetes或使用开源容器引擎: 升级Docker到18.09.2版本,由于开源Docker在17.06之后的版本做了较大变更,涉及架构解耦重构,该办法可能会导致用户容器业务中断,建议做好充分验证,并按节点逐步滚动升级。 仅升级runc,对于17.06等Docker版本,可以不中断已运行业务,当前runc官方尚未发布包含漏洞修复补丁的新版本,如果要单独升级runc,用户可自行编译。 另特别提醒,本次Docker官方补丁使用了高版本Linux内核的系统调用,在低版本内核部分版本上可能会失效,若补丁失效时,建议升级至3.17以上内核。华为云CCE容器服务提供的补丁针对官方补丁进行了优化适配,已验证在多版本内核上均可生效。
  • 漏洞影响 本次漏洞典型的攻击方式是通过恶意镜像:在恶意镜像中,将攻击函数隐藏在恶意动态库如(libseccomp.so.2)中,并使执行命令指向/proc/self/exe。 当runc动态编译时,会从容器镜像中载入动态链接库,导致加载恶意动态库;当打开/prco/self/exe即runc时,会执行恶意动态链接库中的恶意程序,由于恶意程序继承runc打开的文件句柄,可以通过该文件句柄替换host上的runc。 此后,再次执行runc相关的命令,则会产生逃逸。 该漏洞影响范围如下: 本次漏洞对所有采用runc的容器引擎均生效,runc是Docker容器的核心组件,因此对绝大部分容器均会产生影响。其中主要影响的是多用户共享节点的场景,可导致某用户通过渗透进而控制节点并攻击整集群。 华为云CCE容器服务: CCE容器服务创建的Kubernetes集群属于单租户专属,不存在跨租户共享,影响范围较小,对于多用户场景需要关注。 当前CCE采用华为优化的Docker容器,其中RUNC采用静态编译,目前公开披露的攻击方法无法成功入侵。 华为云CCI容器实例服务: CCI引擎采用华为Kata容器引擎,提供单节点上多容器高安全的hypervisor级别的隔离能力,并没有采用runc容器,因此本次漏洞将不会对CCI产生影响。
  • 漏洞详情 2019年6月18日,Redhat发布安全公告,Linux内核处理器TCP SACK模块存在3个安全漏洞(CVE-2019-11477、CVE-2019-11478、CVE-2019-11479),这些漏洞与最大分段大小(MSS)和TCP选择性确认(SACK)功能相关,攻击者可远程发送特殊构造的攻击包造成拒绝服务攻击,导致服务器不可用或崩溃。 华为云CCE团队已经紧急修复Linux内核SACK漏洞,并已发布解决方案。 参考链接: https://www.suse.com/support/kb/doc/?id=7023928 https://access.redhat.com/security/vulnerabilities/tcpsack https://www.debian.org/lts/security/2019/dla-1823 https://wiki.ubuntu.com/SecurityTeam/KnowledgeBase/SACKPanic? https://lists.centos.org/pipermail/centos-announce/2019-June/023332.html https://github.com/Netflix/security-bulletins/blob/master/advisories/third-party/2019-001.md 表1 漏洞信息 漏洞类型 CVE-ID 漏洞级别 披露/发现时间 华为云修复时间 输入验证错误 CVE-2019-11477 高 2019-06-17 2019-07-06 资源管理错误 CVE-2019-11478 高 2019-06-17 2019-07-06 资源管理错误 CVE-2019-11479 高 2019-06-17 2019-07-06
  • 附:TCP SACK介绍 TCP是面向连接的协议。当双方希望通过TCP连接进行通信时,他们通过TCP握手交换某些信息建立连接,例如发起一个TCP请求,通过SYN发送初始序列ID,确认ID,连接使用的最大数据包段大小(MSS),认证信息和处理选择性确认(SACK)等。整体TCP连接通过我们熟知的三次握手最终建立。 TCP通过一个数据段单元发送和接收用户数据包。 TCP数据段由TCP头,选项和用户数据组成。每个TCP段都有序列号(SEQ)和确认号(ACK)。 接收方通过SEQ号和ACK号来跟踪成功接收了哪些段。ACK号下一个预期接受的段。 示例: 上图中用户A通过13个100字节的段发送1k字节的数据,每个段具有20字节的TCP头,总计是13个段。在接收端,用户B接收了段1,2,4,6,8-13,而段3,5和7丢失,B没有接收到。 通过使用ACK号,用户B告诉A,他需要段3,用户A收到B接收到2,而没有收到3,A将重新发送全部段,尽管B已经收到了4,6和8-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
  • 漏洞详情 近期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
  • 附:为何影响? 这些攻击大多在HTTP/2传输层进行。如下图所示,该层位于TLS传输之上,但在请求概念之下。事实上,许多攻击都涉及0或1个请求。 从早期的超文本传输协议开始,中间件服务就以请求为导向:日志以请求为分割(而不是连接);速率限制发生在请求级别;并且流量控制也由请求触发。 相比之下,没有多少工具可以根据客户端在HTTP/2连接层的行为来执行记录、速率限制和修正。因此,中间件服务可能会发现更难发现和阻止恶意的HTTP/2连接,并且可能需要添加额外的工具来处理这些情况。 这些攻击媒介允许远程攻击者消耗过多的系统资源。有些攻击足够高效,单个终端系统可能会对多台服务器造成严重破坏(服务器停机/核心进程崩溃/卡死)。其他攻击效率较低的情况则产生了一些更棘手的问题,只会使服务器的运行变得缓慢,可能会是间歇性的,这样的攻击会更难以检测和阻止。
  • 漏洞详情 Kubernetes官方发布安全公告,其核心组件kube-proxy存在主机边界绕过漏洞(CVE-2020-8558)。利用漏洞攻击者可能通过同一局域网下的容器,或在集群节点上访问同一个二层域下的相邻节点上绑定监听了本地127.0.0.1端口的TCP/UDP服务,从而获取接口信息。如果绑定在端口上的服务没有设置身份验证,则会导致该服务容易受到攻击。例如,如果集群管理员运行监听了127.0.0.1:1234的TCP服务,由于这个bug,该服务将有可能被与该节点在同一局域网中的其他主机,或与该服务运行在同一节点上的容器所访问。如果端口1234上的服务不需要额外的认证(因为假设只有其他localhost进程可以),那么很容易受到利用此bug进行攻击。 华为云提醒使用kube-proxy的用户及时安排自检并做好安全加固。 详情请参考链接:https://github.com/kubernetes/kubernetes/issues/92315 表1 漏洞信息 漏洞类型 CVE-ID 漏洞级别 披露/发现时间 代码注入 CVE-2020-8558 高 2020-07-08
  • 漏洞修复方案 建议您采取以下安全防范措施: 通过设置集群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
  • 漏洞影响 由于kube-apiserver中在升级请求的代理后端中允许将请求传播回源客户端,攻击者可以通过截取某些发送至节点kubelet的升级请求,通过请求中原有的访问凭据转发请求至其他目标节点,从而造成被攻击节点的权限提升漏洞。该漏洞为中危漏洞,CVSS评分为6.4。 如果有多个集群共享使用了相同的CA和认证凭证,攻击者可以利用此漏洞攻击其他集群,这种情况下该漏洞为高危漏洞。 对于此次漏洞的跨集群攻击场景,CCE集群使用了独立签发的CA,同时不同集群间认证凭据完全隔离,跨集群场景不受影响。 从v1.6.0之后到下列修复版本的所有kube-apiserver组件均包含漏洞代码: kube-apiserver v1.18.6 kube-apiserver v1.17.9 kube-apiserver v1.16.13 下列应用场景在此次漏洞的影响范围内: 如果集群运行业务中存在多租户场景,且以节点作为不同租户间隔离的安全边界。 不同集群间共享使用了相同的集群CA和认证凭据。
  • 判断方法 若CCE集群中安装了NGINX Ingress控制器插件,且版本号在3.0.7以下,则受该漏洞影响,否则不受影响。判断方法如下: 使用kubectl查找与cceaddon-nginx-ingress相关的Pod: kubectl get po -A | grep cceaddon-nginx-ingress 若返回如上图,则代表集群中安装了NGINX Ingress控制器插件。 检查NGINX Ingress控制器插件使用的nginx-ingress镜像版本: kubectl get deploy cceaddon-nginx-ingress-controller -nkube-system -oyaml|grep -w image 如上图,若当前安装的NGINX Ingress控制器插件对应的社区nginx-ingress版本低于v1.11.2,则涉及该漏洞。
  • 漏洞消减方案 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组件。
  • 漏洞影响 Fluent Bit 版本2.0.7 - 3.0.3中存在堆缓冲区溢出漏洞,该漏洞存在于Fluent Bit的嵌入式http服务器对跟踪请求的解析中,由于在解析/api/v1/traces 端点的传入请求时,在解析之前未正确验证input_name的数据类型,可通过在请求的“inputs”数组中传递非字符串值(如整数值),可能导致内存崩溃,成功利用该漏洞可能导致拒绝服务、信息泄露或远程代码执行。 CCE集群中安装了云原生日志采集插件,且版本为1.3.4-1.5.1时则涉及该漏洞。
  • 判断方法 您可以在节点上执行命令查看容器引擎使用的cgroup。 容器引擎为containerd的节点,执行以下命令: crictl info |grep -i systemdCgroup 显示如下: "systemdCgroup": false 容器引擎为docker的节点,执行以下命令: docker info |grep "Cgroup" 显示如下: Cgroup Driver: cgroupfs 表明容器引擎使用的cgroup系统为cgroupfs,并未使用systemd cgroup,不受此漏洞影响。
  • 漏洞详情 runc是一个基于OCI标准实现的一个轻量级容器运行工具,是Docker、Containerd、Kubernetes等容器软件的核心基础组件。近日,runc社区发布最新版本,修复了一处高危级别的容器逃逸漏洞(CVE-2024-21626)。由于内部文件描述符泄漏,攻击者可通过控制容器进程的工作目录,或命令路径,将其设置为文件描述符的父级目录下的路径,读写主机任意文件,实现容器逃逸。 详细信息请参见:runc容器逃逸漏洞预警(CVE-2024-21626)
  • 漏洞影响 Linux系统内核在3.15-6.8中的netfilter: nf_tables组件存在释放后重利用漏洞,nft_verdict_init() 函数允许在钩子判定中使用正值作为丢弃错误,当 NF_DROP 发出类似于 NF_ACCEPT 的丢弃错误时,nf_hook_slow() 函数会导致双重释放漏洞,本地攻击者利用此漏洞可将普通用户权限提升至 root 权限。 该漏洞是一个本地提权漏洞,需要攻击者先渗透到集群的node节点,利用难度较高。
  • 判断方法 对于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}'
  • 漏洞详情 业界披露了Linux Kernel openvswitch模块权限提升漏洞(CVE-2022-2639)的漏洞细节。由于 openvswitch模块中reserve_sfa_size()函数在使用过程中存在缺陷,导致本地经过身份认证的攻击者可以利用漏洞提升至root权限。目前漏洞poc已公开,风险较高。 表1 漏洞信息 漏洞类型 CVE-ID 漏洞级别 披露/发现时间 权限提升 CVE-2022-2639 高 2022-09-01
  • 漏洞详情 containerd开源社区中披露了一个安全漏洞,在containerd创建容器的场景,非root容器进程的初始inheritalbe capability不为空,可能会造成在execve执行可执行文件时提升到允许的cap集合。该问题已被收录为CVE-2022-24769。 表1 漏洞信息 漏洞类型 CVE-ID 漏洞级别 披露/发现时间 权限提升 CVE-2022-24769 低 2022-3-24
  • 漏洞影响 containerd创建容器时默认把 Linux Process capabilities配置到 Inheritable 集合上,这会导致在容器内的进程在以 Non-Root 用户 execve() 执行可执行文件时Inheritable和文件的Inheritable集合的交集被添加到执行完execve后的进程的Permited集合中,出现非预期的“越权“行为。需要说明的是,这个越权并没有突破 execve 前的进程权限,仅仅是继承之前的 capabilities。 该漏洞的影响范围如下: 1. CCE Turbo集群,使用了低于1.4.1-98版本的containerd作为kuberentes CRI运行时。 2. CCE集群containerd版本低于1.5.11以下的集群。
  • 漏洞详情 crowdstrike安全团队披露CRI-O 1.19版本中存在一个安全漏洞,攻击者可以利用该漏洞绕过保护措施并在主机上设置任意内核参数。这将导致任何有权在使用CRI-O的Kubernetes集群上部署Pod的用户都可以滥用kernel.core_pattern内核参数,在集群中的任何节点上以root身份实现容器逃逸和执行任意代码。 该问题已被收录为CVE-2022-0811。 表1 漏洞信息 漏洞类型 CVE-ID 漏洞级别 披露/发现时间 容器逃逸 CVE-2022-0811 高 2021-03-16
  • 相关链接 Red Hat社区漏洞公告:https://access.redhat.com/security/cve/cve-2022-0811 cr8escape: New Vulnerability in CRI-O Container Engine Discovered by CrowdStrike:https://www.crowdstrike.com/blog/cr8escape-new-vulnerability-discovered-in-cri-o-container-engine-cve-2022-0811/
  • 相关链接 内核修复commit:https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=24f6008564183aa120d07c03d9289519c2fe02af Red Hat社区漏洞公告:https://access.redhat.com/security/cve/cve-2022-0492
  • 漏洞影响 该漏洞为Linux内核权限校验漏洞,根因为没有针对性的检查设置release_agent文件的进程是否具有正确的权限。在受影响的OS节点上,工作负载使用了root用户运行进程(或者具有CAP_SYS_ADMIN权限),并且未配置seccomp时将受到漏洞影响。 CCE集群受该漏洞影响的范围如下: x86场景EulerOS 2.5和CentOS镜像不受该漏洞影响。 内核版本小于4.19.36-vhulk1907.1.0.h962.eulerosv2r8.aarch64的EulerOS arm版本。 内核版本小于4.18.0-147.5.1.6.h541.eulerosv2r9.x86_64的EulerOS x86版本。 内核版本为4.15.0-136-generic以及以下内核版本的Ubuntu节点。
  • 漏洞详情 国外安全研究人员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
  • 漏洞处理方案 目前RedHat、Ubuntu、Debian、SUSE等各大Linux厂商均已发布补丁版本修复了该漏洞,请受影响的用户升级到安全版本,若无法及时升级,可参考厂商官方提供的建议进行缓解。 RedHat;Ubuntu:USN-5252-1、USN-5252-2;Debian、SUSE EulerOS已发布补丁,升级polkit rpm包即可。 升级方法如下 yum clean all yum makecache yum update polkit rpm -qa | grep polkit 检查是否已经修复为对应版本 EulerOS 2.10 修复版本为polkit-0.116-6.h4 EulerOS 2.9 修复版本为polkit-0.116-5.h7 EulerOS 2.8 修复版本为polkit-0.115-2.h14 EulerOS 2.5 修复版本为polkit-0.112-14.h15 若系统没有可用的补丁,可通过将pkexec中的SUID-bit删除进行临时规避,命令如:# chmod 0755 /usr/bin/pkexec 注:修复漏洞前请将资料备份,并进行充分测试。
  • 漏洞详情 国外安全研究团队披露在polkit的pkexec程序中存在一处权限提升漏洞(CVE-2021-4034,亦称PwnKit),攻击者通过在其默认配置中利用此漏洞实现用任何非特权用户获取易受攻击主机的完全root权限,目前漏洞POC/EXP已公开,风险较高。 Polkit(PolicyKit)是一个用于在类Unix操作系统中控制系统范围权限的组件。pkexec是Plokit框架中的一部分,执行具有提升权限的命令,是sudo的替代方案。请使用Polkit的用户及时安排自检并做好安全加固。 参考链接:https://www.qualys.com/2022/01/25/cve-2021-4034/pwnkit.txt 表1 漏洞信息 漏洞类型 CVE-ID 漏洞级别 披露/发现时间 权限提升 CVE-2021-4034 高 2022-01-28
  • 漏洞详情 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
共100000条