OSSN/OSSN-0014
多个 Cinder 驱动设置了不安全的文件权限
总结
多个 Cinder 卷驱动为各种文件和目录设置了不安全的文件权限。这些权限使得任何能够访问 Cinder 主机的用户以及在其上运行的任何进程都可以读取和写入这些文件。这使得用户块存储数据面临潜在的泄露、损坏或破坏风险。
受影响的服务 / 软件
Cinder, Folsom, Grizzly, Havana, Icehouse
讨论
多个 Cinder 驱动设置了允许“组”和“其他”用户进行读写访问的文件权限。受影响的驱动包括
- GPFS
- GlusterFS
- Huawei
- NetApp/NFS
- Nexenta
- NFS
- Scality
本质上,用户卷对所有能够访问 Cinder 主机的用户开放。在主机上运行的守护进程也能够访问受影响的用户卷。宽松的文件权限可能被利用来泄露、修改、损坏或破坏用户卷数据。
Icehouse 及更早版本的所有 Cinder 版本都存在漏洞,只有一个例外:使用 Icehouse GPFS 驱动的系统。
此问题由 SUSE 的 Dirk Mueller 报告。
建议的操作
Icehouse 版本的 GPFS 驱动程序修复了文件权限问题,并且尽可能以非 root 模式执行 shell 命令。不幸的是,将 GPFS 驱动程序的修复程序回移植到更早的 OpenStack 版本是不切实际的。预计其他受影响的驱动程序将在 OpenStack Juno 版本中得到修复。
仅仅修改文件权限并不能缓解此问题,因为受影响的几个驱动程序当前需要宽松的文件权限才能正常工作。此外,无法统一将文件操作限制为非 root 用户,因为通常情况下,文件可能在一个主机上使用一个 uid 创建,但在另一个主机上使用不同的 uid 挂载。
您可以通过在 Cinder 主机上执行以下命令来检查正在使用的驱动程序
> grep "^volume_driver" /etc/cinder/cinder.conf
您应该将上述命令的结果与“讨论”部分中已知的易受攻击的驱动程序列表进行比较,以查看您是否受到影响。如果您正在运行 Icehouse 版本的 Cinder 并且 GPFS 驱动程序是唯一使用的驱动程序,则您的 Cinder 系统不会受到此问题的影响。
在您的系统很可能存在漏洞的情况下,您应该尽可能地限制对 Cinder 主机的访问。您还应该探索替代方案,例如应用强制访问控制策略(SELinux、AppArmor 等)或使用 NFS uid squashing 来控制对文件的访问,以最大限度地减少可能的暴露。
联系方式 / 参考文献
- 作者:Nathan Kinder, Red Hat
- 此 OSSN:https://wiki.openstack.org/wiki/OSSN/OSSN-0014
- 原始 LaunchPad Bug:https://bugs.launchpad.net/cinder/+bug/1260679
- OpenStack Security ML:openstack-security@lists.openstack.org
- OpenStack Security Group:https://launchpad.net/~openstack-ossg