LWN:让middlebox变成网络攻击工具!

关注了就能看到更多这么棒的文章哦~

Weaponizing middleboxes

By Jake Edge
September 21, 2021
DeepL assisted translation
https://lwn.net/Articles/869842/

不幸的是,当今互联网内总是摆脱不了 middlebox 这个部分。虽然 middlebox 与路由器位于相同的位置,但它们的目的并不是转发数据包,而是要监测和操纵它们看到的数据包。这些设备对那些在他们管理之下的用户来说不是什么好事,但互联网的位置则只有在试图与这些用户通信时才会受到 middlebox 的影响。或者说,人们一直是这样认为的。根据最近报道的一些研究,其实已经证明了 middlebox 中间箱可以被滥用,从而在网络的位置造成拒绝服务(DoS)攻击。

虽然它没有跟过去几年中其他类似重磅安全研究报告一样得到一个吸引人眼球的名字,但这个 "将 TCP Reflected Amplification 变成攻击工具" 的网站描述的是一个影响非常大的攻击风险。研究人员 Kevin Bock、Abdulrahman Alaraj、Yair Fax、Kyle Hurley、Eric Wustrow 和 Dave Levin 发现各种 middlebox 的 TCP/IP 代码实现中都存在缺陷,从而可以被放大用来进行 DoS 攻击。他们研究的 middlebox 是那些由政府组织为了审查过滤目的而部署的 middlebox,但 "哪怕是在那些不进行审查过滤的国家或州中出于善意目的来部署的防火墙以及入侵防御系统也可能被我们发现的技术变成攻击武器"。

值得注意的是,发现的问题位于这些 middlebox 的 TCP/IP 实现中,而不是来自协议本身。这些问题也许可以被修复,但研究人员很怀疑是否真的会有人去修复:

要想彻底解决这个问题的话,就需要各国投入资金来进行改变,这可能会削弱他们的审查相关的基础设施,我们认为这不太可能发生。

Background

Amplification 是一种用于 DoS 攻击的技术,它允许攻击者仅仅发送相对比较较少量的数据,但是引发大量的数据量到达受攻击的网站。通常是通过在向某个服务发出请求的时候伪装成(spoofing)受害者的 IP 地址来实现的,那个服务会回复很多数据。响应和请求的大小比率被称为 "放大系数,amplification factor"。从历史上看,这些系数可能低到个位数的增幅,也会有高达 50,000 倍的 memcached 放大漏洞(2018 年被修复了)。

过去进行 DoS amplification 攻击的时候会使用 UDP,因为 TCP 会需要三次握手才能完成连接的建立。伪装成受害者的 IP 地址并试图建立一个 TCP 连接就无法做到了,因为来自目的地的 SYN-ACK response 这个信息(即握手阶段的第二个步骤)会被发送到受害者那里。这意味着攻击者无法收到完成握手所需的信息,因此连接就建立不起来。但研究人员发现,用于审查的 middlebox 忽略了这里并没有建立 TCP 连接的事实,而是会给受害者 IP 发送一个 HTML 页面(即 "block page")来表明内容被审查过滤了。

middlebox 的设计往往不符合 TCP 标准:许多 middlebox 试图[处理]非对称路由(asymmetric routing),也就是 middlebox 在连接中只能看到一个方向的数据包(例如,客户端到服务器)。但这个特点就使得它们容易受到攻击:如果 middlebox 只根据连接的一侧来注入内容,那么攻击者就可以伪装成 TCP 三次握手协议的另一侧,使得 middlebox 相信已经建立了一个有效的连接。

Methodology

为了找到能引起错误行为的数据包序列,研究人员开发了 Geneva,这是一个采用遗传算法(genetic algorithm)的程序,可以 "自动发现避开审查的新的方法"。遗传算法被用来完善结果,"但就其本质来说,Geneva 是一个数据包级的网络包 fuzz (模糊生成)工具"。他们利用 Censored Planet 的 Quack 工具收集的数据,获得了一份来自世界各地的 184 个审查 middlebox 的列表。然后,他们把 Geneva 放了出去,希望能找到实现 amplification 的地方。"我们修改了 Geneva 的 fitness 函数,这样对它的奖励就会使他尽量寻找更大的放大系数,然后利用所有 184 个 middlebox 来对 Geneva 进行训练。

这种 fuzz 处理的结果是找到了五种会引起 amplification 效应的数据包序列,以及五种可以对一部分 middlebox 进一步放大的方法,这些方法可用于针对性的攻击。这些数据包序列是以各种方式滥用 TCP 协议,这本应该导致数据包被忽略,但测试中的 middlebox 反而会回复一个 block page。

正如人们所猜测的那样,这些审查 middlebox 需要在数据包中找到一些 "令人反感(objectionable)" 的目标,然后它们才会返回一个 block page (封锁页面)。利用 Quack 收集的数据,研究人员列出了五个被封杀比例最高的域名。结果发现,这些域名涵盖了政府希望审查的五个不同主题领域(如色情、文件共享、社交媒体)。这些域名在一个(或多个)数据包中被填充到正常的 HTTP GET 请求中去,就会导致这个审查用的 middlebox 回复 block page。

在一个相当令人大开眼界的实验中(当然在 IPv6 中就是不可能实现的了),研究人员对整个 IPv4 地址空间进行了 35 次独立扫描。他们使用了那五个 "容易被审查" 的域名,加上不提供域名,或者使用 example.com 域名作为对照组。他们会逐一使用五个数据包序列中的一个,并记录了每一次采集到的放大系数。下图是该网站提供的图表,展示了所发现的放大系数。

1b4701f678f5bd7d5a308fc497dcf23f.png

Amplification

一般来说,国家级别设立的审查 middlebox 的放大系数是相当低的,不过也有例外。"大多数国家的放大系数都很小(例如,中国的 GFW 只有大约 1.5 倍的放大效应),但其中还是有一些国家的放大系数更加具有破坏性,例如沙特阿拉伯(~20 倍的放大效应)。" 然而,某些类型的攻击实际上可以导致无限放大。其中有些是因为 TTL 值(time-to-live)没有正确递减所以导致路由循环,有些是因为受害者系统的会默认给出相应从而导致攻击一直持续:

我们发现,一旦攻击者发出一个小数据包序列,之后这个 middlebox 就会向受害者不停地发送数据包 stream。在我们的测试中,其中一些数据包 stream 持续了好几天,而且往往发送带宽就占满了 amplifier 这个链接所能提供的全部的带宽。

这些攻击还有一个更加有破坏性的因素。当审查 middlebox 阻断了与某个 host 的连接时,它们会修改这个响应数据包中的源地址,伪装成该 host 的 IP 地址。这样一来,看起来这个响应就是来自 host 而不是来自 middlebox。通常情况下,一个被 amplifier 放大的数据回复包中应该是 amplifier 的源 IP 地址,这样在过滤 DoS 攻击时就更容易过滤掉。但这种攻击下面情况就变了:

政府面临的真正挑战是他们的审查基础设施通常会需要所有进入或离开该国的流量。这意味着,与其他放大攻击(受害者收到的流量的 source IP 地址是 amplifier 本身)不同,middlebox 后面藏着的每一个 IP 地址都可以作为流量的 source。换一种说法:在一个存在 amplifier middlebox 的国家内的每个 IP 地址都相当于是一个 amplifier。

攻击者使用这种技术能造成哪些损失,目前尚不清楚。放大系数只是因素之一,毕竟它还要取决于 amplifier 的可用带宽,这是研究人员不愿意去进行测量的一个因素:

不幸的是,要对这一点进行研究的话,很难不引起道德问题。要想测量出某个 amplifier 的最大容量,我们就不得不要占满每个网络链接,这可能会对该网络上的普通用户带来破坏性的影响。就目前而言,攻击者从这种攻击中能真正获得多少容量还是一个未知数。

至少目前还没有观察到过利用这种机制进行的攻击,但研究人员正在与监测和缓解分布式 DoS(DDoS)攻击的公司合作,以便能注意到这种问题的出现,并且协助来进行缓解。2020 年 9 月,这些缺陷被报告给了 "几个国家级的 CERT[计算机应急响应小组]、DDoS 缓解服务商和防火墙制造商",完成了负责任的披露。但是,如前所述,实际修复问题所需的改动可能会威胁到部署 middlebox 的原因(即那些审查制度),所以很可能不会得到 fix。

更多的信息可以从 8 月份举行的第 30 届 USENIX 安全研讨会上发表的论文全文来获取,它获得了该会议的杰出论文奖。YouTube 上也有该演讲的视频。除此之外,还有研究中使用的代码以及 Geneva 的 GitHub 仓库。

[感谢 Paul Wise 提醒我们关注这个主题。]

全文完
LWN 文章遵循 CC BY-SA 4.0 许可协议。

欢迎分享、转载及基于现有协议再创作~

长按下面二维码关注,关注 LWN 深度文章以及开源社区的各种新近言论~

d8010b89d1e9dfb3da1b42ef9103fd59.png

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值