OSSN/OSSN-0027
< OSSN
Neutron ARP 缓存投毒漏洞
总结
Neutron 防火墙驱动 'iptables_firewall' 未能防止 ARP 缓存投毒,因为该驱动目前仅支持基于 MAC 地址和 IP 地址的反欺骗规则。然而,ARP 过滤功能在 Nova Networking 中可用。
受影响的服务 / 软件
Neutron, Grizzly, Havana, Icehouse, Juno
讨论
在使用 Nova Networking 的部署中,可以通过 libvirt 网络过滤器功能提供以下反欺骗规则:
- no-mac-spoofing
- no-ip-spoofing
- no-arp-spoofing
- nova-no-nd-reflection
- allow-dhcp-server
然而,在使用 Neutron 的部署中,'iptables_firewall' 驱动仅处理 MAC 和 IP 反欺骗规则,使其容易受到 ARP 投毒和相关攻击。这种功能差异是一种安全漏洞,尤其是在与其它租户或服务共享网络的场景下。
ARP 投毒可能导致拒绝服务攻击以及中间人攻击,从而损害共享网络上的租户隔离。恶意主机可以在共享网络上发送精心构造的 ARP 数据包,以操纵同一网络上另一主机的 ARP 表。这种操纵可以设计成恶意主机接收来自目标主机的流量,而不是网络网关。一旦流量被拦截,恶意主机就有多种选择。它可以查询敏感信息,在传递给真正的网关之前对其进行操纵,或者丢弃数据包以创建拒绝服务攻击。
可以通过以下方式进行演示:
- 创建一个私有网络/子网 10.0.0.0/24
- 启动 2 个连接到该私有网络的虚拟机:VM1 IP 10.0.0.3,VM2 IP 10.0.0.4
- 登录到 VM1 并安装 ettercap 工具(请参阅参考资料)
- 启动命令:ettercap -T -w dump -M ARP /10.0.0.4/ // output 在 VM1 上。这将导致来自 VM2 的流量在转发到网关之前先通过 VM1。
- 登录到 VM2 并 ping 任何有效的互联网站点,ping 应该成功。
- VM2 的 ping 生成的 ICMP 流量将在 VM1 上可见。
- 检查 VM2 上的 ARP 表将显示与网关关联的 MAC 地址是 VM1 的 MAC 地址。
如果 VM1 丢弃来自 VM2 的数据包而不是将其转发到网关,则可以使用此技术造成拒绝服务攻击。
建议的操作
请密切关注使用基于 Neutron 的 VLAN 的网络。安装适当的 IDS 和流量监控工具,尤其要关注 ARP 数据包监控。
Neutron 开发团队计划在未来的版本中解决此问题
联系方式 / 参考文献
- 作者:Tim Kelsey, HPE
- 此 OSSN:https://wiki.openstack.org/wiki/OSSN/OSSN-0027
- 原始 LaunchPad Bug:https://bugs.launchpad.net/neutron/+bug/1274034
- OpenStack Security ML:openstack-security@lists.openstack.org
- OpenStack Security Group:https://launchpad.net/~openstack-ossg
- Ettercap:http://ettercap.github.io/ettercap
- ARP 投毒