赞
踩
在过去的一年里,Kubernetes继续稳固其在关键基础设施领域的地位,成为无论是小型还是大型组织都广受欢迎的选择。然而,随着更多开发人员将Kubernetes部署与其他云原生组件相结合,构建出更加完善的工作系统时,这也使得Kubernetes更容易遭受攻击。更多的组件和更加复杂的基础架构也增加了易受攻击的范围,这是需要我们运维人员关注的。
根据 Red Hat 的2022 年 Kubernetes 安全状况报告:
https://www.redhat.com/rhdc/managed-files/cl-state-of-kubernetes-security-report-2022-ebook-f31209-202205-en.pdf,去年接受调查的人中有 93% 报告了至少一次影响 Kubernetes 环境的事件。在报告的全部安全事件中,53% 是由于配置错误造成的,38% 是由于利用漏洞造成的。该趋势表明漏洞数量增加主要是由于攻击面的增加和漏洞管理的复杂性。
在本文中,我们讨论了 2022 年 Kubernetes 漏洞以及我们可以从中学到什么。为了确保我们都在同一页面上,让我们重温一下 NIST SP 800-53中的标准漏洞定义:系统安全程序、设计、实施或内部控制中的缺陷或弱点可能会被执行(意外触发或故意利用)并导致安全漏洞或违反系统安全政策。
有各种受信任的数据源负责识别、收集和发布公共领域中的漏洞。主要有 NVD(国家漏洞数据库)CVE(Common Vulnerabilities & Exposures)数据库、GitHub 安全公告、Exploit-DB、供应商通知和官方项目公告。
以下是查找 Kubernetes 漏洞的来源列表:
今年早些时候, CrowdStrike安全研究人员披露了 Kubernetes 使用的容器运行时 CRI-O 中的这个漏洞,其 CVE 评分为 9.0(严重)。它允许具有访问权限的恶意行为者在 Kubernetes 集群中创建 pod,以通过滥用 kernel.core_pattern 参数在主机上设置任意内核参数。该漏洞允许黑客逃离 Kubernetes 容器并获得对主机的 root 访问权限,从而可能使他们能够部署恶意软件、窃取数据并在集群中实现横向移动。
直接受影响的软件 CRI-O 版本1.19 + 要确定主机是否受到影响:
run crio —version
虽然该漏洞存在于 CRI-O 中,但依赖它的软件和平台也可能存在漏洞,包括:
https://www.crowdstrike.com/blog/cr8escape-new-vulnerability-discovered-in-cri-o-container-engine-cve-2022-0811/
这又是 CRI-O 容器运行时中的一个漏洞,会导致节点上的内存或磁盘空间耗尽,从而影响系统可用性。它的 CVE 评分为 7.5(高)。任何有权访问 Kubernetes API 的人都可以调用 execSync,它运行命令或从容器同步获取日志。如果命令的输出量很大,可能会把内存或磁盘填满,导致节点或其他共管服务不可用。
CVE-2022-31030也类似于 CVE-2022-1708,但 CVE-2022-31030 是由于 containerd 容器运行时而不是 CRI-O。
在 CRI-O 中发现了一个漏洞,该漏洞会导致任何有权访问 Kube API 的人在节点上耗尽内存或磁盘空间。ExecSync 请求在容器中运行命令并记录命令的输出。命令执行后,CRI-O 会读取此输出,并以读入与命令输出对应的整个文件的方式读取。因此,如果命令的输出很大,则可能耗尽CRI-O 读取命令输出时节点的内存或磁盘空间。此漏洞的最大威胁是系统可用性。
https://nvd.nist.gov/vuln/detail/CVE-2022-1708
这个得分最高为 10.0 的严重漏洞让 ArgoCD 的用户感到恐慌,ArgoCD 是一种流行的 GitOps 持续交付工具,用于在 Kubernetes 集群上部署应用程序。该漏洞允许未经身份验证的用户获得匿名访问权限,使他们能够通过发送特制的 JSON Web 令牌 (JWT) 来冒充包括管理员在内的任何其他用户。
利用很容易,因为攻击者不需要 ArgoCD 中的任何帐户。默认情况下,ArgoCD 服务帐户获得集群管理员角色,从而使攻击者能够完全访问 Kubernetes 集群。
如果启用了对实例的匿名访问,攻击者可以:
提升他们的权限,有效地允许他们在集群上获得与 Argo CD 实例相同的权限,在默认安装中是集群管理员。这将允许攻击者创建、操纵和删除集群上的任何资源。
通过部署具有提升权限的恶意工作负载来泄露数据,从而绕过 Argo CD API 强制执行的敏感数据的任何编辑
该漏洞的补丁已经发布在以下 Argo CD 版本中:
https://github.com/argoproj/argo-cd/security/advisories/GHSA-r642-gv9p-2wjj
该漏洞存在于containerd版本 1.6.1、1.5.10 和 1.14.12 中,允许攻击者读取任意主机文件。因此,攻击者可以读取 kubelet 私钥等机密文件,并可以访问 Kubernetes API 服务器/etcd 数据库来窃取信息。
攻击者最有吸引力的目标文件将是 kubelet 的私钥,用于节点 kubelet 和 KubeAPI 服务器之间的通信。Kubelet 是 Kubernetes 中绝对可信的组件,它可以要求 KubeAPI 服务器提供存储在 ETCD 中的任何信息,例如Kubernetes Secrets、ConfigMaps 等。这些信息可以被泄露或在本地使用,以访问 ETCD 中受保护的接口和数据资产。Kubernetes 乃至整个云基础设施。
https://nvd.nist.gov/vuln/detail/CVE-2022-23648
Linux 中的文件上下文 API 中基于堆的缓冲区溢出缺陷会导致越界写入。然后,具有本地访问权限的恶意行为者可能会导致拒绝服务攻击或在主机上运行任意代码。要检测 Kubernetes 中的此漏洞暴露,您需要找到具有 CAP_SYS_ADMIN 功能的 pod。
该问题是“文件系统上下文”组件中的整数下溢问题。整数下溢发生在对无符号整数变量的减法低于零并且计算结果环绕整数的最大值而不是显示负值时。当发生这种下溢时,大小检查失败,并且调用程序可以写入超出内核空间中分配的 4kb 内存的范围。使用这种“未绑定写入”,攻击者可以更改内核内存中的值,例如,将对自己的访问权限添加到同一节点上运行的任何其他进程。
“文件系统上下文”在 Linux 内核挂载文件系统时使用。这已被“文件上下文 API”取代,但对于遗留支持,部分功能已向后移植,问题在于遗留参数的处理。非特权用户本地进程(在启用非特权用户命名空间的情况下)或具有 CAP_SYS_ADMIN 特权的进程可能导致遗留代码的调用,从而利用此漏洞。
- https://access.redhat.com/security/cve/CVE-2022-0185
-
- https://security-tracker.debian.org/tracker/CVE-2022-0185
-
- https://ubuntu.com/security/CVE-2022-0185
预防措施:
Grafana Labs针对其开源产品中的一个新的严重漏洞发布了安全公告。该漏洞标记为CVE-2022-39328,可让攻击者绕过任意服务端点的授权。这是一个绕过身份验证的严重漏洞。大约 50% 的 Kubernetes 用户在生产中使用 Grafana 这一事实使得这个 CVE 特别值得注意。
未经身份验证的用户可以恶意查询任意端点。
https://grafana.com/blog/2022/11/08/security-release-new-versions-of-grafana-with-critical-and-moderate-fixes-for-cve-2022-39328-cve-2022-39307-and-cve-2022-39306/
在日常使用 Kubernetes 时,容器逃逸是最常被利用的漏洞之一,而要避免这种情况的发生,我们可以实施 AppArmor 和 SELinux 等安全配置文件以及 Pod 安全标准,从而减少遭受攻击的风险。
当为服务帐户和用户分配角色和权限时,我们需要按照最小权限原则进行,这可以减少攻击者在集群上获得过多特权的机会,即使他们已经渗透了它。我们可以使用 Kubescape 门户中的 RBAC 可视化工具来检测具有不必要权限的角色和参与者。 为了保护 Kubernetes 集群的安全,我们可以采用纵深防御技术,从而使恶意行为者更难实现横向移动和泄露数据。
建议我们对 K8s 清单文件、代码存储库和集群进行频繁且持续的扫描以查找漏洞,并建立一个流程来定期更新 Kubernetes 集群上的软件包。此外,我们还可以使用容器沙箱项目(如 gVisor),通过在多租户系统中提供强隔离来加强容器边界并防止容器逃逸和特权升级。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。