信息来源:nosec
近期,有安全研究人员在发现了Linux、Unix系统上一个新的漏洞,可让攻击者劫持受影响设备上的VPN连接,将任意payload注入IPv4和IPv6的TCP数据流中。
他们已向发行版Linux厂商和Linux内核安全团队,以及其他受影响的公司(例如Systemd,Google,Apple,OpenVPN和WireGuard)通报了该漏洞(CVE-2019-14899)。
根据研究人员的说法,该漏洞会影响绝大多数Linux发行版和类Unix操作系统,包括FreeBSD、OpenBSD、macOS、iOS和Android在内。
目前可以找到的受影响的操作系统如下所示,未来这个列表可能还会增长:
• Ubuntu 19.10 (systemd)
• Fedora (systemd)
• Debian 10.2 (systemd)
• Arch 2019.05 (systemd)
• Manjaro 18.1.1 (systemd)
• Devuan (sysV init)
• MX Linux 19 (Mepis+antiX)
• Void Linux (runit)
• Slackware 14.2 (rc.d)
• Deepin (rc.d)
• FreeBSD (rc.d)
• OpenBSD (rc.d)
所有VPN应用都受到影响
根据新墨西哥大学的研究人员William J. Tolley, Beau Kujath和Jedidiah R. Crandall所发布的报告,这个安全漏洞可让邻近网络攻击者了解到是否有另一个用户连接到VPN,其被分配的虚拟IP地址,是否访问了某个特定网站。
此外,攻击者可以通过计算加密包的数量或检查它们的大小来确定确切的seq和ack数目。这样就能将恶意数据注入TCP流,劫持连接。
目前已确定CVE-2019-14899可以对OpenVPN、WireGuard和IKEv2/IPSec发起攻击,研究人员正在测试如何对Tor进行攻击。
研究人员还指出,漏洞和所使用的VPN技术无关,即使VPN流量都经过了各种加密,但根据数据包的大小以及数据包的数量就足以确定数据包的类型。
在Ubuntu 19.10发布之前,这种攻击对我们所测试的任何Linux发行版都不起作用,此时我们注意到rp_filter被设置为loose模式,也就是在2018年11月28日,systemd存储库中的sysctl.d/50-default.conf的默认设置从“strict”模式更改为“loose”模式,而在此日期之后使用默认配置的systemd都会受到该攻击的影响。我们测试的大多数其他init系统的Linux发行版系统都将该值设置为0(Linux内核的默认值)。
总而言之,研究人员发现,在2018年11月28日之后发布的所有systemd版本的发行版系统都存在漏洞。
因此,在此日期之后出现的systemd版本的Linux发系统若没有更改默认配置,都容易受到攻击。
而且这个漏洞会影响各种init系统,并不仅是与systemd相关。
此外,网络安全顾问Noel Kuntze在回应漏洞报告时表示,只有基于路由的VPN应用受到该漏洞的影响。
一名据称是亚马逊网络服务的员工表示,亚马逊的Linux发行版系统和AWS VPN产品不受这一漏洞影响。
防御方法
根据研究人员的说法,可以通过启用反向路径过滤、伪造IP过滤或借助加密数据包大小和时间来实现防御。
以下是进行攻击所需的步骤,旨在劫持目标的VPN连接:
1.确定VPN客户机的虚拟IP地址
2.根据虚拟IP地址得到活动链接
3.使用加密回复主动发包,以确定连接的seq和ack数目,从而劫持TCP会话