9月16日,美国网络安全公司Tenable的研究人员发文称,其发现了名为“CloudImposer”的远程代码执行(RCE)漏洞,攻击者可能利用该漏洞劫持影响GCP(Google Cloud Composer,谷歌云平台上的一项托管式工作流程编排服务)的内部软件依赖项。
云中的供应链攻击
具体来说,该漏洞用于编排软件管道,但它也影响了Google服务App Engine和Cloud Function。Tenable称,该漏洞造成了一种称为依赖关系混淆的场景,该技术几年前就已发现,但时至今日依然被云平台提供商广泛误解。
2021年,安全研究员Alex Birsan首次发现了依赖项混淆攻击——当攻击者创建恶意软件包,为其提供与合法内部包相同的名称,并将其发布到公共存储库时,依赖项混淆攻击就会开始。
“当开发人员的系统或构建过程错误地拉取恶意包而不是预期的内部包时,攻击者就会获得对系统的访问权限。”Tenable高级安全研究员Liv Matan在分析中解释道,“这种攻击利用了开发人员对包管理系统的信任,并可能导致未经授权的代码执行或数据泄露。”
他补充说:“令人惊讶和担忧的是,即使是像Google这样的领先的技术供应商,也缺乏对如何防止依赖关系混淆的认识。不幸的是,这种类型的依赖关系可以被利用在云中执行供应链攻击,这些攻击‘比本地攻击的危害要大得多’。”
“例如,云服务中的一个恶意包可以部署到数百万用户并造成伤害。”Matan观察到。因此,从本质上讲,GCP中的一个错误命令可能会在无数云部署中产生连锁反应,使攻击者能够访问客户的企业云环境。
有风险的文档导致缺陷
Tenable称,该漏洞的第一个迹象是关于GCP和Python软件基金会的Google文档,该文档在云部署中引入了依赖关系混淆的可能性。研究人员进一步挖掘发现,Google本身对GCP应用了相同的风险实施建议,从而引入了漏洞。
具体来说,Google建议想要在GCP服务App Engine、Cloud Function和Cloud Composer服务中使用私有Python包的用户使用所谓的“–extra-index-url”参数。
“除了应用程序或用户打算从中安装私有依赖项的指定私有注册表之外,此参数还查找公共注册表(PyPI),”Matan解释说,“这种行为为攻击者进行依赖关系混淆攻击打开了大门。”
研究人员推断,有“众多GCP客户”遵循了Google的风险实施建议,并最终发现Google在自己的内部服务中安装私有软件包时,也采用了自己的建议。
具体来说,Tenable研究人员发现,Google使用有风险的–extra-index-url参数来安装公共注册表中缺少的私有代码包,允许攻击者将恶意包上传到公共注册表,并接管管道。
Google修复和其他缓解措施
据Tenable称,研究人员负责任地向Google披露了文档和Cloud Imposer RCE漏洞,后者迅速做出响应并采取行动。
具体来说,谷歌修复了Google Cloud Composer中存在的漏洞,该漏洞在从私有注册表安装私有包时使用了“–extra-index-url”参数。
Google还检查了易受攻击的软件包实例的校验和,并通知Tenable,据Google所知,没有证据表明Cloud Imposer曾被利用过。
Google还确认,虽然Tenable发现的漏洞利用代码在Google的内部服务器中运行,但它很可能不会在客户环境中运行,因为它无法通过集成测试。
此外,Google修复了有风险的文档,现在建议GCP客户使用“–index-url”参数替代“–extra-index-url”参数,并且这家科技巨头已经采纳了Tenable的建议,建议GCP客户使用GCP Artifact Registry的虚拟存储库来安全地控制Python包管理器的搜索顺序。
GCP客户应分析其软件包安装过程的环境,以防止违规,特别是在Python中搜索–extra-index-url参数的使用,以确保他们不易受到依赖项混淆攻击。
Matan总结道:“云提供商和云客户将负责任的安全实践相结合,可大大减轻与云供应链攻击相关的风险。”
来源|Tenable官网、Dark Reading
编译|郑惠敏
审核|张羽翔