分析Google Workspace全域委托功能中的关键风险
Google Suite是Google在订阅基础上提供的一套云计算生产力和协作软件工具和软件,它包含Google广受欢迎的网上应用,包括Gmail、Google云端硬盘、Google环聊、Google日历和Google文档,现已更名为Google Workspace。研究人员用一种意想不到的方式访问了来自Google Cloud Platform (GCP)的Google Workspace域数据。
研究人员发现,具有必要权限的GCP标识可以为委托用户生成访问令牌,拥有被盗凭证的恶意内部人员或外部攻击者可以使用此访问令牌冒充Google Workspace用户,授予对其数据的未经委托访问或以其名义执行操作。
随着组织越来越依赖基于云的服务,如Google Workspace和Google Cloud Platform GCP,深入研究其安全功能和漏洞的复杂性变得至关重要。
全域委托滥用概述
模拟
下图所示的可能的攻击路径可能是恶意的内部人员利用他们的访问权限,例如,在GCP项目中具有编辑器权限的开发人员。他们可以通过滥用在GoogleWorkspace中被授予全域委托权限的服务帐户来做到这一点,内部人员有权在同一个GCP项目中为服务帐户生成访问令牌。
第二个攻击场景
启用了全域委托权限后,恶意的内部人员可以冒充Google Workspace域中的用户,并使用访问令牌对API请求进行身份验证。通过利用适当的作用域和API访问,内部人员可以访问和检索敏感的Google Workspace数据,这可能会危及存储在域内的电子邮件、文档和其他机密信息。这些攻击突出了全域委托功能的威胁。
如果攻击者获得了附加到计算引擎实例的GCP服务帐户令牌,则会出现最坏的情况。例如,计算引擎默认服务帐户,默认具有编辑器权限,攻击者可以利用全域内的委托功能来产生更大的影响。如果在同一个项目中,存在一个具有全域委托的服务帐户,这可能导致攻击者模仿被委托的服务帐户,并从GCP横向移动,以获得对Google Workspace环境的访问权。
Google Workspace
在研究人员深入研究Google Workspace和GCP中最近出现的复杂安全风险之前,有必要了解这些强大的基于云的服务。
Google Workspace应用程序是基于云的协作工具的集合。组织使用Google Workspace通过各种工具来提高他们的工作效率和沟通,例如:
电子邮件;
日历;
文件存储和共享;
团队沟通;
工作流自动化;
安全;
政府;
Google Workspace提供基于角色的访问控制(RBAC)功能,并允许管理员为用户分配特定的角色,根据用户的职责和需求授予他们预定义的权限集。这些角色包括:
超级管理员;
组织管理;
一般用户管理;
每个角色对组织的Google Workspace环境的不同方面具有特定的权限和控制。Google Workspace超级管理员拥有更高的权限和更广泛的域管理职责,包括向服务帐户授予全域委托权限。
Google Workspace管理员还可以定义特定于应用程序的权限,并限制共享和可见性设置。例如,管理员可以实施防止用户公开共享文件的策略,并限制共享选项,以确保文件保持在委托范围内。
GCP和Google Workspace之间链接的一个常见用例是,托管在GCP上的应用程序需要与Google Workspace服务之一进行交互。这些服务包括:
Gmail
Calendar
Drive
Docs
这种集成允许应用程序访问和操作特定于用户的数据,代表用户执行操作,或者利用Google Workspace的协作和运行功能。
创建与Google服务交互、访问Google API、处理用户数据或代表用户执行操作的应用程序需要一个委托的GCP服务帐户。
什么是服务帐户?
服务帐户是GCP中的一种特殊类型的帐户,它表示非人类实体,如应用程序或虚拟机,它允许他们进行身份验证并与Google API进行交互。服务帐户与应用程序本身相关联,而不是与单个最终用户相关联。
与用户帐户不同,服务帐户不是Google Workspace域的成员。它们不受Google Workspace管理员设置的域策略的约束,只有在被授予全域委托的情况下才能访问用户的数据。
什么是全域委托?
全域委托是Google Workspace中的一个功能,它允许GCP服务帐户访问Google Workspace用户的数据,并代表他们在特定域中进行操作。
当使用全域委托功能时,应用程序可以代表Google Workspace域中的用户进行操作,而不需要单个用户对应用程序进行身份验证和委托。
只有Google Workspace超级管理员才能委托应用程序(作为服务帐户)代表域中的用户访问数据。这种委托称为“将全域内的权限委托给服务帐户”。
全域内的委托是如何工作的?
要使用全域委托功能,需要执行以下步骤:
1.启用全域委托:Google Workspace超级管理员为服务帐户授予全域委托,以及允许该访问的一组OAuth范围。这些范围详细说明了服务帐户可以访问哪些特定服务和特定操作。
例如,如果只是/auth/gmail.readonly被授予,服务帐户将有权读取用户的Gmail邮件,当代表该用户时,但不能读取他们的其他工作区数据,如访问驱动器中的文件。
2.请求Google Workspace访问令牌:应用程序使用适当的凭据向Google Workspace令牌终端发送请求。这包括服务帐户的客户端ID和客户端秘密,以及访问用户数据所需的范围。如果请求是有效的,并且服务帐户已被授予必要的全域委托特权,则令牌终端使用访问令牌进行响应。应用程序可以使用此访问令牌在请求的范围内跨域访问用户数据。
3.API访问:应用程序在API请求中包含访问令牌作为委托标头,它代表服务帐户作为身份验证和委托的证明。
全域委托流
当被授予全域委托时,Google Workspace中的服务帐户可以访问用户数据,代表用户进行操作,并验证对Google API的请求。具体的功能和可访问的数据取决于所定义的范围。
了解全域委托功能的风险和影响
一旦将全域委托授予GCP服务帐户,具有必要权限的GCP标识就可以为同一项目中的委托服务帐户生成访问令牌。然后,恶意的内部人员可以使用此访问令牌冒充Google Workspace用户,授予对用户数据的未经委托的访问权限或代表用户执行操作。
这种情况造成了全域委托权限的敏感性与GCP平台上管理的权限模型之间的不匹配。
Google文档包含一个关于全域委托功能的警告通知,其中概述了该功能的重要功能。Google提到,“只有超级管理员才能管理全域内的委托,并且他们必须指定应用程序可以访问的每个API范围。”
谷歌曾建议不要对服务帐户使用自动角色授予,这会阻止创建默认的谷歌计算引擎服务帐户。为了帮助缓解过多的权限,Google有关于GCP角色推荐的手册。
利用两端审计日志识别可能存在的滥用攻击
如果不分析来自两个平台、GCP和Google Workspace的审计日志,就不可能了解活动全貌,并确定全域内委托功能的任何潜在滥用。服务帐户密钥日志的生成将出现在GCP日志中,而Google密钥生成和API调用执行日志将出现在Google Workspace日志中。
在下图中,有一个来自Cortex web界面的XQL查询,它在GCP审计日志中搜索服务帐户密钥创建。
搜索服务帐户密钥创建
Prisma Cloud RQL语法中的等效查询
下图显示了一个搜索服务帐户委托日志的XQL查询。
搜索Google Workspace访问令牌请求
Prisma Cloud RQL语法中的等效查询
下图显示了研究人员检查了谁给了这个服务帐户全域委托权限,以及什么时候发生了这种情况。
搜索指示已向服务帐户授予全域委托权限的日志
Prisma Cloud RQL语法中的等效查询
下图显示了在Cortex web界面中触发的警报,上面显示Google Workspace管理员已启用对GCP服务帐户的全域委托,并授予他访问敏感范围的权限。
Cortex web界面中的全域委托警报
缓解措施
研究人员已经确定的安全风险在于恶意内部人员滥用全域委托功能所需的初始权限与潜在影响之间的不匹配。
具有域委托权限的服务帐户的最佳安全实践是将它们放置在GCP层次结构中的高级文件夹中。在GCP层次模型中,访问控制是分层的。
在较高级别设置的权限和策略(例如,组织或文件夹)不会自动授予对较低级别文件夹或项目的访问权限。访问控制在层次结构中不向下继承,这意味着较低级别的文件夹或项目不能自动访问较高级别的文件夹或项目。
GCP资源层次树
此策略缓解了潜在恶意内部人员破坏安全的空间,这些内部人员通常只拥有上图所示的GCP层次结构中的较低级文件夹或项目的权限。通过确保只有相同或更高级别文件夹或项目中的实体才能生成对委托服务帐户的访问令牌,可以阻止低级区域中的实体获取服务帐户的访问令牌。这有助于防止滥用全域委托权限,并防止对Google Workspace数据的访问。
总结
自2023年6月以来,研究人员一直在通过各种方式与谷歌讨论这个问题,Axon团队也发现了这个问题,他们也向谷歌进行了报告。
在配置此权限时,安全防御者需要考虑与全域委托功能相关的风险和含义。根据全域委托授予的范围,攻击者可以使用该功能来冒充Google Workspace用户,代表他们执行操作并获得对其数据的未经委托的访问。
必须强调攻击者滥用此功能所需的初始权限与可能的影响之间的不匹配。在最坏的情况下,攻击者或恶意的内部人员可能会泄露敏感的Google Workspace数据,例如存储在域中的电子邮件、文档和其他机密信息。
Cortex XDR功能可以识别和警告各种异常活动,例如授予全域委托权限或创建GCP服务帐户密钥。Cortex XDR能够学习GCP和Google Workspace实体的攻击,并检测异常攻击。
Prisma Cloud CIEM可以通过以下方式帮助降低风险和过度权限访问:
1.风险权限的可见性、警报和自动补救;
2.使用最低权限访问补救措施自动查找未使用的权限;
3.Prisma Cloud威胁检测功能可以对各种与身份相关的异常活动发出警报,例如来自云内部或云外部的异常使用凭据。
4.Prisma Cloud还可以执行运行时操作监控,并为与其云环境相关的任何组件提供治理、风险和遵从性(GRC)要求。