新的 Linux 漏洞使攻击者可以劫持 VPN 连接!
近日,安全研究人员发现了一个新漏洞,使潜在的攻击者可以劫持受影响的 * NIX 设备上的 VPN 连接,并将任意数据有效载荷注入 IPv4 和 IPv6 TCP 流中。
他们向发行版和 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 实现都会受到影响
该安全漏洞“使邻近网络的攻击者可以确定是否有其他用户连接到 VPN,VPN 服务器已为他们分配虚拟 IP 地址以及给定网站的活动连接”。
——William J. Tolley,Beau Kujath 和 Jedidiah R. Crandall,新墨西哥大学的 Breakpointing Bad 研究人员。
研究人员表示,“此外,我们还可以通过计算加密的数据包或检查它们的大小来确定确切的 seq 和 ack 数字。这使我们能够将数据注入 TCP 流并劫持连接。”
利用 CVE-2019-14899 进行的攻击可对抗 OpenVPN、WireGuard 和 IKEv2 / IPSec,但研究人员仍在测试其针对 Tor 的可行性。
他们还指出,所使用的 VPN 技术似乎并不重要,因为即使他们从目标那里得到的响应是加密的,假设数据包的大小和发送的数据包的数量足以找到通过加密的 VPN 隧道发送的数据包的类型,攻击在测试中也是有效的。
在 Ubuntu 19.10 发行之前,这种攻击对我们测试过的任何 Linux 发行版都没有作用,并且我们注意到 rp_filter 设置被设置为“loose”模式。我们看到 systemd 储存库中 sysctl.d / 50-default.conf 中的默认设置已于 2018 年 11 月 28 日从“strict”模式更改为“loose”模式,因此在此日期之后使用未修改配置的 systemd 版本进行分发,很容易受到攻击。我们测试的大多数使用其他 init 系统的 Linux 发行版都将值保留为 0(Linux 内核的默认值)。
研究人员发现,他们测试的大多数 Linux 发行版都容易受到利用此缺陷的攻击的攻击。此外,所有使用 2018 年 11 月 28 日之后发布的 systemd 版本的发行版(带有从 Strict 模式切换到 loose 模式的反向路径过滤)都容易受到攻击。
值得注意的是,尽管某些发行版本的特定 systemd 版本易受攻击,但已知该漏洞会影响各种 init 系统,并且与 systemd 有关,如上面可用的受影响的操作系统列表所示。
此外,网络安全顾问 Noel Kuntze 在对公开报告的回复中表示,此漏洞仅影响基于路由的 VPN 实施。
一名据称是 Amazon Web Services 的员工还表示,利用此漏洞的攻击未影响 Amazon Linux 发行版和 AWS VPN 产品。
有可能缓解
根据研究人员的说法,缓解是可能的,并且有可能通过打开反向路径过滤,使用 bogon 过滤(过滤虚假的 IP 地址)或在加密的数据包大小和定时的帮助下实现。
这些是运行旨在利用此漏洞并劫持目标的 VPN 连接的攻击所需的步骤:
确定 VPN 客户端的虚拟 IP 地址
使用虚拟 IP 地址推断活动连接
使用对未经请求的数据包的加密答复来确定劫持 TCP 会话的活动连接的顺序和确认号,从而劫持 TCP 会话
在此处公开提供的公开报告中,详细说明了在 Linux 发行版上重现该漏洞的完整过程。
该研究小组计划在找到适当的解决方法后,计划发表一篇对该漏洞及其含义进行深入分析的论文。