OSSN/OSSN-0038
Suds 客户端易受本地攻击者缓存投毒
总结
Suds 是一个 Python SOAP 客户端,用于消费 Web 服务。其默认缓存实现将腌制对象存储到 /tmp 中的一个可预测路径。本地攻击者可以利用这一点,通过符号链接重定向 SOAP 请求,或发起权限提升或代码执行攻击。
受影响的服务 / 软件
Cinder, Nova, Grizzly, Havana, Icehouse
讨论
Python 的 'suds' 包被 oslo.vmware 用于与 SOAP 服务 API 交互,Cinder 和 Nova 在使用 VMware 驱动程序时都依赖于 oslo.vmware。默认情况下,suds 使用磁盘缓存,将序列化的 Python 对象(pickle 文件)放置在已知位置 '/tmp/suds'。本地攻击者可以使用符号链接或将精心制作的文件放置在此位置,这些文件稍后将被 suds 反序列化。
通过操纵缓存的 pickle 文件的内容,攻击者可以重定向或修改 SOAP 请求。或者,pickle 可以在反序列化过程中运行注入的 Python 代码。这可以允许生成 shell 以执行任意操作系统级别的命令,并具有使用 suds 的服务的权限,从而可能导致权限提升。
截至撰写本文时,suds 包的上游维护工作似乎已经停止。但是,供应商发布了已修补的版本,这些版本不再存在可预测的缓存路径问题。已知 Ubuntu 提供了一种修补版本(python-suds_0.4.1-2ubuntu1.1)。
建议的操作
解决此问题的推荐方法是在配置中禁用缓存使用,如下所示
client.set_options(cache=None)
oslo.vmware (0.6.0) 已经发布了一个修复程序,默认情况下禁用了磁盘缓存的使用。Cinder 和 Nova 都已调整了其需求,以包含此修复版本。希望重新启用缓存的部署者应确定其供应商提供的 suds 包是否易受攻击,并考虑上述建议。
联系方式 / 参考文献
- 作者:Tim Kelsey, HPE
- 此 OSSN:https://wiki.openstack.org/wiki/OSSN/OSSN-0038
- 原始 Launchpad Bug:https://bugs.launchpad.net/ossn/+bug/1341954
- OpenStack Security ML:openstack-security@lists.openstack.org
- OpenStack Security Group:https://launchpad.net/~openstack-ossg
- Suds:https://pypi.python.org/pypi/suds
- CVE:CVE-2013-2217