跳转到: 导航, 搜索

OSSN/OSSN-0064

默认使用 Keystone admin_token_auth 导致不安全操作

总结

OpenStack 部署者经常将一个仅用于初始安装的 Keystone 设置保留在其默认值。

攻击者可以通过提供字符串 "ADMIN" 作为 token 来获得 Keystone API 的管理员访问权限。

受影响的服务 / 软件

Keystone, Folsom, Grizzly, Havana, Icehouse, Juno, Kilo, Liberty, Mitaka

讨论

Keystone 服务支持一个名为 "admin_token_auth" 的身份验证中间件。它提供了一个简单的 token 用于访问 Keystone API,旨在仅用于 Keystone 的初始设置,允许部署者访问 Keystone API,从而可以设置适当的 Keystone 管理员帐户。

"admin_token_auth" 方法通过 keystone-paste.ini 文件进行配置。该方法验证的 "ADMIN_TOKEN" token 在 keystone.conf 文件中设置。

一些部署会从示例版本复制这些文件并直接使用,这意味着一些生产 OpenStack 云可能启用了 "admin_token_auth",并且 "ADMIN_TOKEN" 设置为默认值 "ADMIN"。

使用默认 Keystone 配置文件进行的 OpenStack 部署很可能受到攻击者的利用,攻击者可以使用 "ADMIN" token 访问 API。

建议的操作

"ADMIN_TOKEN" 用于 Keystone 部署的引导已弃用,将在未来的版本中移除。鼓励部署者使用 keystone-manage CLI 工具的 'bootstrap' 功能来引导 Keystone

 $ keystone-manage bootstrap --bootstrap-password s3cr3t

现有部署应从 keystone-paste.ini 中的 API 管道中删除 "admin_token_auth" 中间件。

开始错误的 keystone-paste.ini 片段

   [pipeline:public_api]
   pipeline =  [...] token_auth admin_token_auth json_body [...]
   [pipeline:admin_api]
   pipeline = [...] token_auth admin_token_auth json_body [...]
   [pipeline:api_v3]
   pipeline = [...] token_auth admin_token_auth json_body [...]

结束错误的 keystone-paste.ini 片段

开始正确的 keystone-paste.ini 片段

   [pipeline:public_api]
   pipeline = [...] token_auth json_body [...]
   [pipeline:admin_api]
   pipeline = [...] token_auth json_body [...]
   [pipeline:api_v3]
   pipeline = [...] token_auth json_body [...]

结束正确的 keystone-paste.ini 片段

联系方式 / 参考文献