跳转到: 导航, 搜索

OSSN/OSSN-0087


OpenStack Manila 向消费者泄露 Ceph 用户凭据

总结

OpenStack Manila 用户可以请求访问共享资源,访问对象可以是 Ceph 集群中的任意 cephx 用户,包括具有特权的预先存在的用户。他们随后可以通过 Manila API 获取这些预先存在的 ceph 用户的访问密钥。要挂载 Native CephFS manila 共享资源,需要一个 cephx 客户端用户名和访问密钥。有了密钥,manila 用户可以冒充预先存在的 ceph 用户,并获得操作资源的权限,而这些权限本不应该属于 manila 用户。甚至有可能以这种方式获取默认 Ceph “admin” 用户的密钥,并以 Ceph 管理员的身份执行任何命令。


受影响的服务 / 软件

  • OpenStack 共享文件系统服务 (Manila) 版本 Mitaka (2.0.0) 到 Victoria (11.0.0)
  • Ceph Luminous(<=v12.2.13)、Mimic(<=v13.2.10)、Nautilus(<=v14.2.15)、Octopus(<=v15.2.7)


讨论

OpenStack Manila 可以为用户提供 Native CephFS 共享文件系统。当用户通过 Manila 创建“共享资源”(共享文件系统的简称)时,Ceph 集群上会创建一个 CephFS “子卷”并导出。创建共享资源后,用户可以使用 “cephx” 客户端用户名指定谁可以访问该共享资源。cephx 客户端对应于 Ceph 客户端用户 [2]。提供访问权限时,会通过 manila 返回一个客户端用户的“访问密钥”。

访问任何 Ceph 资源都需要一个 ceph 客户端用户帐户。这包括与 Ceph 集群基础设施守护进程(ceph-mgr、ceph-mds、ceph-mon、ceph-osd)交互,或通过 RBD、RGW 或 CephFS 消费 Ceph 存储。部署和编排服务,如 ceph-ansible、nfs-ganesha、kolla、tripleo,需要 ceph 客户端用户才能工作,OpenStack 服务,如 cinder、manila、glance 和 nova,也需要它们与 Ceph 交互。为了说明此漏洞,我们将它们称为 Ceph 集群中的“预先存在”用户。另一个预先存在用户的例子包括默认在 ceph 集群上创建的“admin”用户。

理论上,manila 的 cephx 用户与 ceph 客户端用户没有区别。当 manila 用户请求访问共享资源时,如果不存在相应的 ceph 用户帐户,则会创建一个。如果 ceph 用户帐户已经存在,则会调整该用户的现有权限,以允许他们访问所请求的 manila 共享资源。此机制无法合理地知道需要防止未经授权滥用的预先存在的 ceph 客户端用户。因此,存在 manila 用户冒充预先存在的 ceph 用户以窃取其访问密钥的风险。

为了解决此问题,manila 使用的 ceph 接口已修补,不再允许 manila 声明它未创建的预先存在的用户帐户。因此,这意味着 manila 用户不能使用与 manila 外部存在的 ceph 客户端用户对应的 cephx 用户名。

建议的操作

  1. 升级您的 Ceph 软件到 Ceph 的最新修补版本,以利用此漏洞的修复程序。
  2. 审核通过 manila 提供的 cephx 访问密钥。您可以使用“ceph auth ls”并确保没有客户端受到损害。如果受到损害,您可能需要删除并重新创建客户端凭据以防止未经授权的访问。
  3. 还可以通过枚举所有 CephFS 共享资源及其访问规则作为系统管理员来在 manila 上执行审核。如果使用了保留的 ceph 客户端用户名,您可以拒绝访问并在 ceph 上重新创建客户端凭据以刷新访问密钥。


OpenStack 共享文件系统服务 (manila) 不需要任何代码更改。使用升级后的 Ceph,当 manila 用户尝试为他们无法使用的 cephx 用户名提供共享访问权限时,访问规则的“状态”属性设置为“error”,因为此操作不再允许。

补丁

Ceph 社区提供了以下补丁

Ceph Octopus: https://github.com/ceph/ceph/commit/1b8a634fdcd94dfb3ba650793fb1b6d09af65e05

Ceph Nautilus: https://github.com/ceph/ceph/commit/7e3e4e73783a98bb07ab399438eb3aab41a6fc8b

Ceph Luminous: https://github.com/ceph/ceph/commit/956ceb853a58f6b6847b31fac34f2f0228a70579

修复包含在 Ceph Nautilus (14.2.16) 和 Ceph Octopus (15.2.8) 的最新版本中。Ceph 社区为 Luminous 提供了补丁,作为对可能使用 OpenStack Manila 的用户的礼貌,但是 Ceph 社区不再为 Luminous 或 Mimic 发布版本,因为它们已达到生命周期结束。有关 ceph 版本的更多信息,请参见 此处


联系方式 / 参考文献

作者

  • Pacha Ravi, Goutham gouthamr@redhat.com (Red Hat)

鸣谢

  • Garbutt, John john@johngarbutt.com (StackHPC)
  • Babel, Jahson jahson.babel@cc.in2p3.fr (Centre de Calcul de l'IN2P3)


此 OSSN:https://wiki.openstack.org/wiki/OSSN/OSSN-0087

原始 LaunchPad Bug:https://launchpad.net/bugs/1904015

邮件列表:[Security] 标签在 openstack-discuss@lists.openstack.org 上

OpenStack 安全项目:https://launchpad.net/~openstack-ossg

CVE:CVE-2020-27781