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