容器验证漏洞允许恶意镜像云化 Kubernetes

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 容器验证漏洞允许恶意镜像云化 Kubernetes

640.png


容器镜像的 Kyverno 准入控制器中存在一个高危安全漏洞,可能允许恶意行为者将大量恶意代码导入云生产环境。

Kyverno 准入控制器提供签名验证机制,旨在确保只有经过签名、验证的容器镜像才会被拉入给定的 Kubernetes 集群。


这可以避免任何数量的不良结果,因为被诱骗的容器镜像可能包含各种有效负载,如加密矿工、rootkit、用于容器逃逸和横向移动的漏洞利用工具包、凭证窃取程序等。

但是,可以利用漏洞 ( CVE-2022-47633 ) 来破坏该机制。

ARMO 的研究人员在博客文章中解释说:该漏洞使攻击者能够……将未签名的镜像注入受保护的集群,从而绕过镜像验证策略。”


风险很高:他们警告说,攻击者可以有效地控制受害者的 pod 并使用其所有资产和凭据,包括服务帐户令牌来访问 API 服务器。


该漏洞可以完全绕过镜像签名验证。在 Kubernetes 集群的情况下,这为攻击提供了广泛的目标。任何工作负载都可以安装集群机密和数据卷。


这意味着攻击者可以注入代码,从受害者的 Kubernetes 集群中窃取数据和凭证。

这也使攻击者能够注入他/她自己的代码,并使用受害者的 CPU 进行加密货币挖掘等事情。

当从Kubernetes API 服务器请求通过带有标签的镜像定义的新工作负载时,API 服务器要求 Kyverno 准入控制器验证新工作负载。


为了确定工作负载是否可以进入集群,准入控制器从容器注册表请求镜像清单和签名。

如果他们签出,镜像就会亮起绿灯,容器运行时会根据该镜像启动新的工作负载。

根据该公告,该漏洞的出现是因为控制器的签名验证过程下载了两次镜像清单,但只验证了其中一次下载的签名。


因此,攻击看起来像这样:管理员通过社交工程从恶意注册表或代理中拉取容器映像。首次导入镜像时,恶意注册表会向准入控制器返回一个有效的、良性的、签名的镜像。到目前为止,一切都很好。


然而,然后准入控制器第二次请求签名镜像的清单,以获取变异摘要——即更新容器的可读标签。

这一次,没有发生签名验证,允许恶意注册表返回一个不同的、未签名的恶意镜像,最终是启动和运行的镜像。


根据 ARMO 的分析:这是

[time-of-check-to-time-of-use] TOCTOU


640.png

问题的一个典型例子,它允许攻击者拉取诱饵和开关。由于最终将使用的镜像清单与经过验证的镜像清单不同,这使攻击者能够欺骗客户。

该漏洞在1.8.3版本引入,在1.8.5版本修复;Kyverno 用户应尽快更新。该补丁确保使用与验证签名相同的镜像哈希来更改工作负载规范。

此特定漏洞仅影响带有 Kyverno 的 Kubernetes,但其他镜像签名验证工具需要注意不要受到相同方法的攻击。

社会工程恶意容器攻击


为了进行真实世界的攻击,威胁行为者可以使用现有注册表中的受损帐户来托管恶意镜像,或者他们可以建立自己的私有容器注册表,然后着手说服管理员信任它。


从实际的角度来看:为有经验的攻击者创建恶意注册表并不是一个挑战。攻击者可以使用任何开源注册表软件,进行一些小的修改以使攻击起作用,并在自定义域下的云中运行它。


下一步是说服管理员信任恶意容器,这也不难。来自第三方的容器镜像通常用于启动现成的应用程序,这与应用程序开发人员从npm 等开放存储库中获取预构建代码块的方式非常相似——其理念是不必为常用功能和实用程序重新发明轮子。


只有一小部分 Kubernetes 用户对他们可以从何处提取容器工作负载有限制,因此云管理员在使用第三方注册表时不太可能立即保持警惕:特别是如果他们在地方。


攻击者可以进行网络钓鱼并在多个论坛上发布通知,告知有新版本的软件 XYZ,这里有运行它的 Kubernetes YAML 或 Helm。由于有些人觉得受到镜像签名验证的保护,他们会放松警惕,不会害怕运行镜像。


容器安全:日益受到关注


容器是网络犯罪分子的一个很好的目标,因为它们大多在云中运行,可以访问大量宝贵且昂贵的计算资源:因此,这使攻击者能够窃取计算资源和数据,同时也不会引起注意相对较长的时间。


我们没有确切的统计数据,但很明显,随着容器的广泛采用,这正在成为一个更普遍的问题。


安全团队正在学习如何处理它们,以及一般的 Kubernetes。这不是一个真正的‘盲点’,但容器安全团队仍在学习整个环境,其中有许多被忽视的领域。


由于镜像签名验证的采用仍处于早期阶段,准入控制器代表了那些可能被忽视的领域之一。但它们也是关于供应链软件安全的更广泛对话的一部分,应该引起人们的关注。


SolarWinds 攻击向世界表明,在信任外部代码的安全性方面,这个问题是多么敏感。


Kyverno 是首批实施签名验证的安全工具之一,新功能可能会带来新的错误。


希望这一发现能使它成为一种更安全的机制,并将帮助业界克服 Kubernetes 中验证软件的问题。


640.png


640.png

攻击者的目标可能是将未签名的镜像注入到只应运行签名镜像的集群中。


640.png

https://www.armosec.io/blog/cve-2022-47633-kyvernos-container-image-signature-verification/

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
28天前
|
人工智能 弹性计算 运维
ACK Edge与IDC:高效容器网络通信新突破
本文介绍如何基于ACK Edge以及高效的容器网络插件管理IDC进行容器化。
|
30天前
|
监控 NoSQL 时序数据库
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
222 77
|
17天前
|
存储 Kubernetes 开发者
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
Docker 是一种开源的应用容器引擎,允许开发者将应用程序及其依赖打包成可移植的镜像,并在任何支持 Docker 的平台上运行。其核心概念包括镜像、容器和仓库。镜像是只读的文件系统,容器是镜像的运行实例,仓库用于存储和分发镜像。Kubernetes(k8s)则是容器集群管理系统,提供自动化部署、扩展和维护等功能,支持服务发现、负载均衡、自动伸缩等特性。两者结合使用,可以实现高效的容器化应用管理和运维。Docker 主要用于单主机上的容器管理,而 Kubernetes 则专注于跨多主机的容器编排与调度。尽管 k8s 逐渐减少了对 Docker 作为容器运行时的支持,但 Doc
90 5
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
|
23小时前
|
Kubernetes Linux 虚拟化
入门级容器技术解析:Docker和K8s的区别与关系
本文介绍了容器技术的发展历程及其重要组成部分Docker和Kubernetes。从传统物理机到虚拟机,再到容器化,每一步都旨在更高效地利用服务器资源并简化应用部署。容器技术通过隔离环境、减少依赖冲突和提高可移植性,解决了传统部署方式中的诸多问题。Docker作为容器化平台,专注于创建和管理容器;而Kubernetes则是一个强大的容器编排系统,用于自动化部署、扩展和管理容器化应用。两者相辅相成,共同推动了现代云原生应用的快速发展。
24 10
|
21小时前
|
Ubuntu NoSQL Linux
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
19 6
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
|
29天前
|
人工智能 运维 监控
阿里云ACK容器服务生产级可观测体系建设实践
本文整理自2024云栖大会冯诗淳(花名:行疾)的演讲,介绍了阿里云容器服务团队在生产级可观测体系建设方面的实践。冯诗淳详细阐述了容器化架构带来的挑战及解决方案,强调了可观测性对于构建稳健运维体系的重要性。文中提到,阿里云作为亚洲唯一蝉联全球领导者的容器管理平台,其可观测能力在多项关键评测中表现优异,支持AI、容器网络、存储等多个场景的高级容器可观测能力。此外,还介绍了阿里云容器服务在多云管理、成本优化等方面的最新进展,以及即将推出的ACK AI助手2.0,旨在通过智能引擎和专家诊断经验,简化异常数据查找,缩短故障响应时间。
阿里云ACK容器服务生产级可观测体系建设实践
|
15天前
|
Prometheus Kubernetes 监控
OpenAI故障复盘 - 阿里云容器服务与可观测产品如何保障大规模K8s集群稳定性
聚焦近日OpenAI的大规模K8s集群故障,介绍阿里云容器服务与可观测团队在大规模K8s场景下我们的建设与沉淀。以及分享对类似故障问题的应对方案:包括在K8s和Prometheus的高可用架构设计方面、事前事后的稳定性保障体系方面。
|
7天前
|
人工智能 运维 监控
容器服务Kubernetes场景下可观测体系生产级最佳实践
阿里云容器服务团队在2024年继续蝉联Gartner亚洲唯一全球领导者象限,其可观测体系是运维的核心能力之一。该体系涵盖重保运维、大规模集群稳定性、业务异常诊断等场景,特别是在AI和GPU场景下提供了全面的观测解决方案。通过Tracing、Metric和Log等技术,阿里云增强了对容器网络、存储及多集群架构的监控能力,帮助客户实现高效运维和成本优化。未来,结合AI助手,将进一步提升问题定位和解决效率,缩短MTTR,助力构建智能运维体系。
|
29天前
|
运维 Kubernetes 调度
阿里云容器服务 ACK One 分布式云容器企业落地实践
阿里云容器服务ACK提供强大的产品能力,支持弹性、调度、可观测、成本治理和安全合规。针对拥有IDC或三方资源的企业,ACK One分布式云容器平台能够有效解决资源管理、多云多集群管理及边缘计算等挑战,实现云上云下统一管理,提升业务效率与稳定性。
|
2月前
|
运维 Kubernetes 数据安全/隐私保护
K8S 拉取私有仓库镜像
在Kubernetes中从私有仓库拉取镜像时,需先创建包含认证信息的Secret,然后在Pod或Deployment中引用此Secret。本文通过具体步骤演示了如何创建Secret、更新Kubernetes资源配置文件以引用Secret,并验证了镜像拉取及应用运行的成功。
132 6
下一篇
开通oss服务