跳转到: 导航, 搜索

OSSN/OSSN-0024


python-keystoneclient 的日志语句中暴露敏感数据

总结

Python-keystoneclient 是 OpenStack Identity API 的客户端工具,由 Keystone 项目实现。 各种 OpenStack 服务,包括 OpenStack Dashboard,依赖 python-keystoneclient 来使用 OpenStack Identity API 服务。 python-keystoneclient 中的特定日志级别设置可能导致用户敏感数据(例如密码或令牌)在日志语句中暴露。

受影响的服务 / 软件

Python-keystoneclient=<0.10.0

讨论

Python-keystoneclient 提供了一个接口,用于向 OpenStack Identity 服务 Keystone 发出 Identity API 请求。 Python-keystoneclient 在向 Keystone 服务器发送请求或接收响应时,会处理用户敏感数据,例如用户密码和令牌。 像所有 OpenStack 项目一样,python-keystoneclient 使用 python logger 来记录请求/响应活动。 当 python-keystoneclient 以 DEBUG 日志级别运行时,与请求/响应关联的敏感数据,例如用户密码和令牌,将在日志语句中暴露。 例如

 $ keystone --debug user-list
 DEBUG:keystoneclient.session:REQ: curl -i -X POST
     http://10.0.0.15:5000/v2.0/tokens -H "Content-Type:application/json"
     -H "User-Agent: python-keystoneclient"
 DEBUG:keystoneclient.session:REQ BODY: {"auth": {"tenantName": "admin",
     "passwordCredentials": {"username": "admin", "password": "stack"
     }}}


攻击者如果能够访问日志语句,则可能利用这些敏感数据。

Python-keystoneclient 被 Horizon 和其他使用 Identity 服务的服务用于针对 Identity API 服务 Keystone 验证用户身份。 用户向这些服务提供密码或令牌进行身份验证,可能会导致这些敏感数据被捕获在各自服务的日志语句中。

建议的操作

python-keystoneclient 的 0.10.1 版本已通过不在日志语句中暴露用户密码和令牌信息来解决此问题。 使用 python-keystoneclient 0.10.1 或更高版本的任何服务不受此问题影响。 使用旧版本的其他服务应升级到已修复版本的 python-keystoneclient。

对于依赖 pythone-keystoneclient 的服务的全新安装,请确保它使用至少 0.10.1 版本的 python-keystoneclient。 一种方法是在 requirments.txt 文件中设置特定版本。 例如,在 Horizon 中,更新 horizon/requirements.txt 文件

 python-keystoneclient>=0.10.1


对于现有安装,请将 python-keystoneclient 升级到最新版本。 例如,可以使用 python 包管理器 (PIP) 来升级现有安装。

 $ pip install python-keystoneclient --upgrade


另一种方法是永远不要以 DEBUG 模式运行生产系统中的日志级别。

联系方式 / 参考文献