谷歌将首届年度谷歌云平台 (GCP) 大奖颁给在谷歌 Cloud Shell 中找到多个漏洞的荷兰研究员 Wouter ter Maat。该研究员发现了一个容器逃逸漏洞,可导致访问主机 root 以及利用权限容器的能力,并因此获得10万美元的奖励。

谷歌还表示将扩展作为谷歌漏洞奖励计划(VRP)一部分的年度 GCP (Google CloudPlatform)奖励活动的覆盖范围。谷歌将从2020年提交的GCP 产品漏洞报告中遴选高质量报告,共计颁发6个奖项,奖金池为313,337 美元,最低及最高奖金为1000美元和133,337美元。

赏金猎人需要提交一份公开的write-up 才有资格参加该活动,而且有意思的是,谷歌规定 write-up 字数不得超过31,337个字。谷歌还表示,预算有限的研究人员可以免费使用 GCP。

入选漏洞

谷歌 Cloud Shell 是一款面向管理员的基于Linux 和浏览器前端,为谷歌 GCP提供多种资源的访问权限。这些资源包括 gcloud、Docker、Kubernetes、Python、vim、Emacs、Theia等等。GCP 用户可通过 Google Cloud Console 启动 Cloud Shell 实例:

Ter Maat 注意到 Cloud Shell 在和各种资源交互的过程中存在多个问题,首先就是认证问题,结果导致他能够访问主机的 root 权限,重新配置托管在该主机的任意容器。

Ter Maat 在2019年12月发布的一份 write-up 中表示,“当用户看到一个终端窗口时,Cloud Shell 实例即完成。值得注意的是,gcloud 客户端已经认证。如攻击者能够攻陷你的 Cloud Shell,那么它就能访问你所有的 GCP 资源。”

研究员启动 Cloud Shell 后,就能够连接到各种资源,并表示自己“被困在 Docker 容器中”,因为其中只有少量进程在运行。之后他逃逸该容器并通过检查文件系统而访问了完整的主机。Ter Maat 解释称,“我注意到有两个 Docker UNIX 套接字,一个存在于 /run/docker.sock 中,它是在 Cloud Shell(Docker 中的 Docker)中运行的 Docker 客户端的默认路径,第二个存在于 /google/host/var/run/docker.sock中。”从其路径名称可看到,第二个套接字是基于主机的 Docker 套接字。

他指出,“任何能够和基于主机的 Docker 套接字通信的人员都能轻易逃逸该容器并同时获得主机上的 root 访问权限”,并指出自己写了一个快速脚本完成这一目标。

之后,他能够编写新的 “cs-6000.yaml” 配置文件并将老旧配置文件设置为 “/dev/null”,以 root 权限重新配置 Kubernetes,将所有容器从非权限容器切换为权限容器。

Ter Maat 表示,“运行之后你会发现该 pod 中的所有容器将自动重启。现在所有容器均以权限模式运行。”

趋势科技公司指出,恶意控制权限容器会带来多种后果。该公司在去年发布的一份安全公告中指出,“以权限标志运行容器可导致内部团队获得对主机资源的重要访问权限但通过滥用权限容器,网络犯罪分子能够获得对容器的访问权限,之后他们就能以各种方式进行滥用。攻击者能够识别运行在主机上的软件来找到并利用各种漏洞。他们还能够利用容器软件漏洞或错误配置如弱凭证或无认证的容器。由于攻击者具有root 访问权限,因此可以执行并隐藏恶意代码或密币矿机。”

Wouter ter Maat 发布的 write-up 见:

https://offensi.com/2019/12/16/4-google-cloud-shell-bugs-explained-introduction/

声明:本文来自代码卫士,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。