行业资讯

立即注册 咨询客服

当前位置:首页 > 行业资讯> 研究人员在IBM的云基础架构中发现了安全隐患

研究人员在IBM的云基础架构中发现了安全隐患

发布时间:2022年12月02日 10:16:00    来源: A5互联

安全研究人员最近调查了 IBM Cloud 的数据库即服务基础架构,发现了几个安全问题,这些问题使他们能够访问用于为客户部署构建数据库映像的内部服务器。演示的攻击突出了一些常见的安全疏忽,这些疏忽可能导致云基础设施中的供应链受损。

该攻击由安全公司 Wiz 的研究人员开发,结合了 IBM Cloud Databases for PostgreSQL 服务中的特权升级漏洞、散布在环境中的明文凭据以及允许在基础架构内横向移动的过于宽松的内部网络访问控制。

PostgreSQL 是云环境中一个有吸引力的目标

Wiz 对 IBM Cloud Databases for PostgreSQL 的审计是一个更大的研究项目的一部分,该项目分析了主要云提供商的 PostgreSQL 部署,这些云提供商提供该数据库引擎作为其托管数据库即服务解决方案的一部分。今年早些时候,Wiz 研究人员还发现并披露了 Microsoft Azure和谷歌云平台 (GCP)的 PostgreSQL 实现中的漏洞。

开源的 PostgreSQL 关系数据库引擎已经开发了 30 多年,重点是稳定性、高可用性和可扩展性。然而,这个复杂的软件并没有设计适合多租户云环境的权限模型,在这些环境中,数据库实例需要相互隔离,并与底层基础设施隔离。

PostgreSQL 具有强大的功能,管理员可以通过这些功能更改服务器文件系统,甚至可以通过数据库查询执行代码,但这些操作是不安全的,需要在共享云环境中加以限制。同时,数据库复制、创建检查点、安装扩展和事件触发器等其他管理操作需要可供客户使用,以便服务正常运行。这就是为什么云服务提供商 (CSP) 必须想出变通办法并对 PostgreSQL 的权限模型进行修改以启用这些功能,即使客户仅使用有限的帐户进行操作也是如此。

通过SQL注入提权

在分析 IBM Cloud 的 PostgreSQL 实施时,Wiz 研究人员研究了可供用户使用的逻辑复制机制。此功能是使用多个数据库函数实现的,包括一个名为 create_subscription 的函数,该函数由名为 ibm 的数据库超级用户拥有和执行。

当他们检查这个函数的代码时,研究人员注意到一个 SQL 注入漏洞,这是由于对传递给它的参数的不正确清理造成的。这意味着他们可以将任意 SQL 查询传递给该函数,然后该函数将以 ibm 超级用户身份执行这些查询。研究人员通过 PostgreSQL COPY 语句利用此漏洞在托管数据库实例并打开反向 shell 的底层虚拟机上执行任意命令。

通过 Linux 系统上的 shell,他们开始进行一些侦察以了解其环境,例如列出正在运行的进程、检查活动网络连接、检查列出系统用户的 /etc/passwd 文件的内容以及在 Linux 上运行端口扫描。内部网络发现其他服务器。广泛的端口扫描引起了 IBM 安全团队的注意,他们联系了 Wiz 团队询问他们的活动。

在讨论了我们的工作并与他们分享了我们的想法之后,他们友好地允许我们继续我们的研究并进一步挑战安全边界,这也反映了企业健康的安全文化。

存储的凭据导致供应链攻击

收集到的信息(例如环境变量)告诉研究人员他们位于 Kubernetes (K8s) pod 容器中,在搜索文件系统后,他们发现 K8s API 访问令牌本地存储在名为 /var/run/secrets/kubernetes 的文件中。 io/服务帐户/令牌。API 令牌允许他们收集有关 K8s 集群的更多信息,但事实证明,所有 Pod 都与他们的帐户相关联,并且在同一命名空间下运行,但这并不是死胡同。

K8s 是一个用于软件部署的容器编排系统,其中容器通常是从镜像部署的——预构建包,其中包含容器及其预配置服务运行所需的所有文件。这些图像通常存储在容器注册表服务器上,可以是公共的也可以是私有的。就 IBM Cloud 而言,它是一个需要身份验证的私有容器注册表。

研究人员使用 API 令牌读取其命名空间中 pod 的配置,并在这些配置文件中找到了四个不同内部容器注册表的访问密钥。在 IBM Cloud 的身份和访问管理 (IAM) API 中对这个新发现的密钥的描述表明它对容器注册表具有读写权限,这将使研究人员能够用恶意镜像覆盖现有镜像。

但是后来发现密钥描述不准确,只能下载图片。这种访问级别具有安全隐患,但不会对其他 IBM Cloud 客户构成直接威胁,因此研究人员继续推进。

容器镜像可能包含许多在部署期间使用并随后被删除的敏感信息,包括源代码、引用基础架构中其他服务的内部脚本,以及访问它们所需的凭据。因此,研究人员决定从注册表服务下载所有图像,并使用自动化工具扫描它们的秘密,例如凭据和 API 令牌。

研究人员说,为了全面扫描秘密,我们解压缩了图像并检查了构成每张图像的文件组合,容器镜像基于一层或多层;每个人都可能无意中包含秘密。例如,如果秘密存在于一层中但从下一层中删除,则它在容器内将完全不可见。因此,单独扫描每一层可能会揭示更多的秘密。

容器镜像的 JSON 清单文件有一个“历史”部分,其中列出了在每个镜像的构建过程中执行的历史命令。在几个这样的文件中,研究人员发现了将密码作为命令行参数传递给它们的命令。其中包括 IBM Cloud 内部 FTP 服务器和构建工件存储库的密码。

最后,研究人员测试了他们是否可以从容器中访问这些服务器,结果证明他们可以。这种过于宽松的网络访问与提取的凭据相结合,使他们能够覆盖构建工件存储库中的任意文件,自动化 IBM Cloud 构建过程使用该存储库来创建容器映像。这些图像随后用于客户部署,为供应链攻击打开了大门。

我们对 IBM Cloud Databases for PostgreSQL 的研究强化了我们从其他公司那里学到的东西

云供应商,对 PostgreSQL 引擎的修改有效地引入了新的

服务的漏洞,这些漏洞可能已被恶意行为者利用,作为广泛利用链的一部分,最终导致对平台的供应链攻击。

其他经验教训

虽然所有这些问题都已私下报告给 IBM Cloud 团队并由其修复,但它们并不是 IBM 独有的。据 Wiz 团队称,“分散的秘密”问题在所有云环境中都很常见。

自动构建和部署工作流程通常会在配置文件、Linux bash 历史记录、日志文件等不同地方留下秘密,开发人员在部署完成后忘记清除这些秘密。此外,一些开发人员不小心将他们的整个 .git 和 CircleCI 配置文件上传到生产服务器。Wiz 团队经常发现的被遗忘的秘密包括云访问密钥、密码、CI/CD 凭证和 API 访问令牌。

在 IBM Cloud 攻击中发挥关键作用的另一个普遍问题是生产服务器和内部 CI/CD 系统之间缺乏严格的访问控制。这通常允许攻击者横向移动并在企业的基础设施中获得更深的立足点。

最后,私有容器注册表可以向攻击者提供超出凭据的大量信息。它们可以揭示有关基础设施内部关键服务器的信息,或者可以包含揭示其他漏洞的代码。Wiz 团队表示,企业应确保其容器注册表解决方案实施适当的访问控制和范围界定。