2022年,Kubernetes将继续巩固其作为关键基础设施领域的地位。它已成为小型到大型组织的流行选择。由于显而易见的原因,这种转变使Kubernetes更容易受到攻击。但这并没有就此结束,开发人员经常将Kubernetes部署与其他云原生组件一起使用来构建一个完整的工作系统。不幸的是,这种组合会导致具有更多组件的更复杂的基础架构。这最终会增加脆弱性的表面积和范围。根据RedHat的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漏洞以及我们可以从中学到什么。为了确保我们都在同一页面上,让我们重新审视NISTSP800-53中漏洞的标准定义:系统安全程序、设计、实施或内部控制中可能强制执行的缺陷或弱点(意外触发或故意利用)并导致安全漏洞或违反系统安全策略。在哪里寻找Kubernetes漏洞?有各种受信任的数据源负责识别、收集和发布公共领域中的漏洞。主要有NVD(国家漏洞数据库)CVE数据库、GitHub安全公告、Exploit-DB、供应商通知和官方项目公告。以下是查找Kubernetes漏洞的来源列表:https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=kuberneteshttps://kubernetes.io/docs/reference/issues-security/official-cve-feed/https://groups.google.com/g/kubernetes-security-announcehttps://www.cvedetails.com/vulnerability-list/vendor_id-15867/product_id-34016/Kubernetes-Kubernetes.htmlhttps://github.com/advisories?query=kubernetesKubernetes-related漏洞分类拒绝服务:当合法用户或客户端由于恶意威胁行为者的行为而无法访问服务或系统时,就会出现此漏洞。例如,假设有人正在向您的KubernetesAPI服务器发送大量请求;API服务器可能会停止响应其他合法请求。特权升级:某些系统弱点允许攻击者在安全边界内获得未经授权的访问。容器逃逸是Kubernetes的一个常见弱点,当被黑客利用时,它可以以提升的权限访问主机。绕过某些东西:这是一类漏洞的广义术语,包括身份验证绕过、代码执行绕过、权限绕过等。越界内存缓冲区。它允许恶意行为者访问其他共同托管进程的内存并泄露不需要的信息。任意代码执行:在这里,攻击者利用代码中的缺陷并使用它来执行任意恶意代码,通常是为了获得提升的访问权限、网络访问权限或对主机系统的控制权。目录或文件遍历:利用此漏洞,黑客可以利用代码中的弱点遍历主机系统或网络上的任意文件和目录。2022年重大漏洞盘点一、CVE-2022-0811——CRI-O运行时容器逃逸漏洞今年早些时候,CrowdStrike安全研究人员在Kubernetes使用的容器运行时CRI-O中披露了该漏洞,其CVE等级为9.0(严重)。它允许有权在Kubernetes集群中创建pod的恶意行为者通过滥用kernel.core_pattern参数在主机上设置任意内核参数。该漏洞允许黑客逃离Kubernetes容器并获得对主机的根访问权限,从而可能使他们能够部署恶意软件、窃取数据并在集群内实现横向移动。(1)漏洞详细影响:直接影响软件CRI-O版本1.19+判断主机是否受影响:运行crio--version虽然CRI-O存在该漏洞,但依赖它的软件和平台也可能有漏洞,包括:OpenShift4+OracleContainerEngineforKuberneteshttps://www.crowdstrike.com/blog/cr8escape-new-vulnerability-discovered-in-cri-o-container-engine-cve-2022-0811/(2)预防措施:使用策略来阻止对内核资源的不安全访问,例如PodSecurityAdmissionControllers,从Kubernetes1.25开始取代了PodSecurityPolicies。您还可以使用Kyverno的第三方准入控制器。定期对集群进行扫描和审计,补丁发布第一时间修复漏洞。2.CVE-2022-1708–execSync请求的节点DOS内存不足这是CRI-O容器运行时中的另一个漏洞,可能导致节点上的内存或磁盘空间耗尽,影响系统可用性。它的CVE评分为7.5(高)。任何有权访问KubernetesAPI的人都可以调用execSync,它会同步运行命令或从容器中获取日志。如果命令的输出很大,它可能会填满内存或磁盘,导致节点或其他共同管理服务不可用。CVE-2022-31030也类似于CVE-2022-1708,但CVE-2022-31030是由于containerd容器运行时而不是CRI-O。(1)漏洞详细影响:在CRI-O中发现了一个漏洞,该漏洞会导致任何有权访问KubeAPI的人耗尽节点上的内存或磁盘空间。ExecSync请求在容器中运行命令并记录命令的输出。命令执行后,CRI-O读取此输出的方式是读取与命令输出对应的整个文件。因此,如果命令的输出很大,则有可能在CRI-O读取命令输出时耗尽节点的内存或磁盘空间。此漏洞的最大威胁是系统可用性。https://nvd.nist.gov/vuln/detail/CVE-2022-1708(2)预防措施:使用最小权限原则降低被攻击的风险。如果您不授予在Pod上运行“exec”命令的权限,或者不向与KubernetesAPI服务器交互的应用程序使用的服务帐户授予最低权限,黑客将无法利用此漏洞。发布补丁后立即更新实施。3.CVE-2022-29165–ArgoCD身份验证绕过这个最高得分为10.0的严重漏洞让ArgoCD的用户感到恐慌,ArgoCD是一种流行的GitOps持续交付工具,用于在Kubernetes集群上部署应用程序。该漏洞允许未经身份验证的用户获得匿名访问权限,使他们能够通过发送特制的JSONWeb令牌(JWT)来冒充任何其他用户,包括管理员。利用很容易,因为攻击者不需要ArgoCD中的任何帐户。默认情况下,ArgoCD服务帐户获得集群管理员角色,从而为攻击者提供对Kubernetes集群的完全访问权限。(1)漏洞的详细影响:如果启用对实例的匿名访问,攻击者可以:提升他们的权限,有效地允许他们在集群上获得与ArgoCD实例相同的权限,在默认安装中是集群管理员。这将允许攻击者创建、操纵和删除集群上的任何资源。通过部署具有提升权限的恶意工作负载来泄露数据,绕过ArgoCDAPI强制执行的任何敏感数据编辑:://github.com/argoproj/argo-cd/security/advisories/GHSA-r642-gv9p-2wjj(2)注意事项:禁用对ArgoCD的匿名访问。遵循应用程序服务帐户的最小权限原则。将关键组件端点置于安全边界后,只有受信任的人才能访问该边界。4.CVE-2022-23648–Containerd中的任意主机文件访问此漏洞存在于containerd1.6.1、1.5.10和1.14.12版本中,允许攻击者读取任意主机文件。因此,攻击者可以读取kubelet私钥等机密文件并访问KubernetesAPI服务器/etcd数据库以窃取信息。(1)漏洞影响详解:对攻击者最有吸引力的目标文件将是kubelet的私钥,用于节点kubelet与KubeAPI服务器之间的通信。Kubelet是Kubernetes中绝对可信的组件,它可以要求KubeAPI服务器提供存储在ETCD中的任何信息,例如KubernetesSecrets、ConfigMaps等。这些信息可以被泄露或在本地使用,以访问ETCD中受保护的接口和数据资产。Kubernetes和整个云基础设施。https://nvd.nist.gov/vuln/detail/CVE-2022-23648(2)预防措施:使用Kubescape等持续扫描解决方案检测漏洞。补丁发布后立即实施。5.CVE-2022-0185–Linux内核容器逃逸Linux中文件上下文API中基于堆的缓冲区溢出缺陷可导致越界写入。具有本地访问权限的恶意行为者可能会导致拒绝服务攻击或在主机上运行任意代码。要检测Kubernetes中的这种暴露,您需要找到具有CAP_SYS_ADMIN功能的pod。(1)漏洞具体影响:该问题是“文件系统上下文”组件中的整数下溢问题。当对无符号整数变量的减法低于零并且计算结果环绕整数的最大值而不是显示负值时,会发生整数下溢。当发生这种下溢时,大小检查失败,调用程序可以写入超出内核空间中分配的4kb内存。使用这种“未绑定写入”,攻击者可以更改内核内存中的值,例如,将对自己的访问权限添加到同一节点上运行的任何其他进程。Linux内核在挂载文件系统时使用“文件系统上下文”。这已被“文件上下文API”取代,但对于遗留支持,部分功能已向后移植,问题在于遗留参数的处理。非特权用户本地进程(启用非特权用户命名空间)或具有CAP_SYS_ADMIN特权的进程可能会导致调用遗留代码以利用此漏洞。https://access.redhat.com/security/cve/CVE-2022-0185https://security-tracker.debian.org/tracker/CVE-2022-0185https://ubuntu.com/security/CVE-2022-0185预防:限制Kubernetes部署中的容器功能。部署复杂的检测工具,可以快速发现您的风险并提醒您降低风险。6.CVE-2022-39306–未经授权访问Grafana代码库中的任意端点Grafana实验室针对其开源产品中的一个新的严重漏洞发布了安全公告。该漏洞被追踪为CVE-2022-39328,可能允许攻击者绕过对任意服务端点的授权。这是绕过身份验证的严重漏洞。事实上,大约50%的Kubernetes用户在生产中使用Grafana,这一CVE特别值得注意。(1)漏洞影响详解:未经授权的用户可以恶意查询任意端点。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/(2)预防措施:Grafana发布了一个修复:版本9.2.4。总结容器逃逸是Kubernetes中最常被利用的漏洞之一。在Kubernetes部署中强制执行AppArmor和SELinux等安全配置文件以及pod安全标准可以降低攻击风险。在为您的服务帐户和用户分配角色和权限时,请遵循最小特权原则。这减少了攻击者在集群上获得过多特权的机会,即使他们已经渗透了它。利用Kubescape门户中的RBAC可视化工具来检测具有不必要权限的角色和参与者。使用纵深防御技术使恶意行为者更难实现横向移动和泄露数据。建议经常持续扫描K8s清单文件、代码存储库和集群以查找漏洞。建立一个流程来定期更新Kubernetes集群上的包。使用gVisor等容器沙箱项目,可以通过在多租户系统中提供强隔离来强制执行容器边界并防止容器逃逸和特权升级。
