跳转到: 导航, 搜索

OSSN/OSSN-0088

Glance metadef API 可能导致资源泄露

总结

Metadef API 存在漏洞,可能将信息泄露给未经授权的用户。此外,目前没有限制 metadef 命名空间、对象、属性、资源和标签的创建数量。恶意用户可能会利用这一点,填满 Glance 数据库,导致拒绝服务 (DoS) 状况。

受影响的服务 / 软件

Glance, Horizon

讨论

没有对 metadef 命名空间、对象、属性、资源和标签的创建进行限制,这可能导致信息泄露给未经授权的用户或项目外部的用户。恶意用户可以利用 metadef API 缺乏限制的特点,通过创建无限数量的资源来填满 Glance 数据库,从而发起类似拒绝服务 (DoS) 的攻击。

Glance 允许通过策略控制 metadef API。但是,metadef API 的默认策略设置允许所有用户创建或读取 metadef 信息。

由于 metadef 资源没有被正确隔离到所有者,因此在使用具有潜在敏感名称的资源(例如内部基础设施细节、客户名称等)时,可能会无意中将这些信息暴露给恶意用户。

建议的操作

由于这些根本问题从 API 引入以来一直存在,Glance 项目建议操作员将其部署中的创建/修改/删除 API 限制为仅管理员可用,并为所有用户提供读取访问权限。


以下是在当前稳定的 OpenStack 发行版中,在 policy.json 或 policy.yaml 中将创建/修改/删除 metadef API 限制为仅管理员可用,并为普通用户提供读取访问权限的示例:

---- begin example policy.json/policy.yaml snippet ----
"metadef_default": "",
"metadef_admin": "role:admin",

"get_metadef_namespace": "rule:metadef_default",
"get_metadef_namespaces": "rule:metadef_default",
"modify_metadef_namespace": "rule:metadef_admin",
"add_metadef_namespace": "rule:metadef_admin",
"delete_metadef_namespace": "rule:metadef_admin",

"get_metadef_object": "rule:metadef_default",
"get_metadef_objects": "rule:metadef_default",
"modify_metadef_object": "rule:metadef_admin",
"add_metadef_object": "rule:metadef_admin",
"delete_metadef_object": "rule:metadef_admin",

"list_metadef_resource_types": "rule:metadef_default",
"get_metadef_resource_type": "rule:metadef_default",
"add_metadef_resource_type_association": "rule:metadef_admin",
"remove_metadef_resource_type_association": "rule:metadef_admin",

"get_metadef_property": "rule:metadef_default",
"get_metadef_properties": "rule:metadef_default",
"modify_metadef_property": "rule:metadef_admin",
"add_metadef_property": "rule:metadef_admin",
"remove_metadef_property": "rule:metadef_admin",

"get_metadef_tag": "rule:metadef_default",
"get_metadef_tags": "rule:metadef_default",
"modify_metadef_tag": "rule:metadef_admin",
"add_metadef_tag": "rule:metadef_admin",
"add_metadef_tags": "rule:metadef_admin",
"delete_metadef_tag": "rule:metadef_admin",
"delete_metadef_tags": "rule:metadef_admin",
---- end example policy.json/policy.yaml snippet ----

如果操作员的用户依赖于 metadef API,可以选择将其保持对所有用户可访问。在这种情况下,建议对用户进行关于资源名称中潜在信息泄露的教育,以便更改易受攻击的做法作为缓解措施。

要重新启用对所有用户的 metadef 策略,操作员可以在相应的 policy.json 或 policy.yaml 中进行更改,如下所示;(假设 metadef 创建/修改/删除策略配置为使用规则:metadeta_admin,如上例所示)

---- begin example policy.json/policy.yaml snippet ----
"metadef_admin": "",
---- end example policy.json/policy.yaml snippet ----

联系方式 / 参考文献

作者

  • Abhishek Kekane, Red Hat
  • Lance Bragstad, Red Hat


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

原始 LaunchPad Bug:https://bugs.launchpad.net/glance/+bug/1545702

原始 LaunchPad Bug:https://bugs.launchpad.net/glance/+bug/1916926

原始 LaunchPad Bug:https://bugs.launchpad.net/glance/+bug/1916922

邮件列表:[Security] openstack-security@lists.openstack.org

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