OSSN/OSSN-0054
< OSSN
Horizon 登录页面潜在拒绝服务攻击
总结
Horizon 使用基于 Python 的 Django Web 框架。该框架的旧版本允许未经授权的用户填满会话存储数据库,导致 Horizon 拒绝服务。Django 已经发布了修复补丁,但仅适用于 Kilo 及更高版本的 Horizon。
受影响的服务 / 软件
Horizon, Django, Essex, Folsom, Grizzly, Havana, Icehouse, Juno
讨论
Django 会记录来自 Web 请求的会话 ID,即使该请求来自未经授权的用户。这允许攻击者用无效的会话信息填充会话存储数据库,从而可能导致拒绝服务,因为数据库被无用的会话信息填满。
建议的操作
Django 开发者已经发布了针对此问题的修复补丁,该补丁包含在软件版本 1.4.21、1.7.9 和 1.8.3 中。Horizon 管理员应确保他们使用的是最新的 Django 版本,以避免受到此漏洞的影响。
低于 Kilo 版本的 Horizon 无法运行修复后的 Django 版本,可能需要升级到更新版本的 OpenStack。管理员可以通过尝试使用以下脚本将无效会话注入会话存储数据库,然后查询会话存储数据库以检查是否记录了多个 'aaaaa' 会话 ID 来测试他们的部署是否受到影响。
for i in {1..100}
do
curl -b "sessionid=aaaaa;" http://HORIZON__IP/auth/login/ &> /dev/null
done
如果可能,受影响的用户应升级到 Kilo 或更高版本的 Horizon,以便使用修复后的 Django 版本。
联系方式 / 参考文献
- 作者:Robert Clark, IBM
- 此 OSSN: https://wiki.openstack.org/wiki/OSSN/OSSN-0054
- Django 修复: https://django.ac.cn/weblog/2015/jul/08/security-releases/
- Django CVE: CVE-2015-5143
- 原始 LaunchPad Bug: https://bugs.launchpad.net/horizon/+bug/1457551
- OpenStack Security ML:openstack-security@lists.openstack.org
- OpenStack Security Group:https://launchpad.net/~openstack-ossg