跳转到: 导航, 搜索

OSSN/OSSN-0074


Nova 元数据服务不应用于存储敏感信息

总结

最近的安全报告强调了用户可能正在使用元数据服务来存储安全敏感信息的情况。

Nova 元数据服务不应被视为计算实例所需的机密信息的安全存储库。

受影响的服务 / 软件

Nova,所有版本

讨论

Nova 的一个最新漏洞报告指出,元数据服务会遵守 `X-Forwarded-For` HTTP 头部。此头部通常由代理提供,以便最终服务可以识别请求的来源 IP。

Nova 元数据服务通常使用传入请求的源 IP 地址来响应与发出请求的计算实例相关的适当数据。这是一种弱身份验证,旨在确保一个租户的元数据不会意外地提供给另一个租户。

如果请求包含 `X-Forwarded-For` HTTP 头部,则元数据服务将使用该头部进行源身份验证,而不是实际的 TCP/IP 源。

在云中具有计算实例访问权限的攻击者可以向元数据服务发送请求,并在请求中包含 `X-Forwarded-For` 头部,从而有效地伪造其源,并导致元数据服务提供本不应提供给该实例的信息。

考虑以下情况:Alice 创建了一个计算实例。她将该实例的 root 密码放置在元数据服务中。该实例被分配了一个 10.1.2.2 IP 地址。Alice 认为她的实例的 root 密码在元数据服务中是安全的。

Alice 通过运行类似于以下命令来检索元数据:`curl http://169.254.169.254/latest/meta-data` 这将检索为 Alice 的计算实例存储的任何元数据,该实例的 IP 地址为 10.1.2.2

Bob 有一个 IP 地址为 10.1.9.9 的计算实例,但是 Bob 想要访问 Alice 计算实例的元数据。如果 Bob 运行与 Alice 类似的命令,但包含如下自定义头部,他将获得访问 Alice 所有元数据的权限,包括她选择在那里存储的 root 密码:`curl -H "X-Forwarded-For: 10.1.2.2" http://169.254.169.254/latest/meta-data`

Nova 元数据服务是 OpenStack 中的一个有用工具,但显然并非旨在作为用于存储敏感数据(如私钥或密码)的强身份验证系统。

建议的操作

不应使用元数据服务来存储敏感信息。

IP 转发问题本身并不是一个缺陷,它存在是为了允许元数据服务为位于代理后面的实例提供 IP 地址,这在更复杂的部署中可能发生。

云用户如果需要存储计算实例操作所需的敏感信息,则应考虑使用 Config Drive 来提供此服务。它的操作与单个计算实例的绑定更加紧密。

如果无法使用 config drive,运营商应考虑其他缓解措施,例如在元数据服务前面放置一个代理,该代理可以过滤掉这些恶意活动。

联系方式 / 参考文献

作者:Robert Clark,IBM

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

原始 LaunchPad Bug:https://bugs.launchpad.net/nova/+bug/1563954

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

OpenStack Security Group:https://launchpad.net/~openstack-ossg

Config Drive:https://docs.openstack.org/user-guide/cli-config-drive.html