205

文章目录

  1. 背景
  2. 攻击模型
  3. 实验测量及实践
    1. 出口IP地址使用情况测量
      1. 实验配置
      2. 数据收集
      3. 结果分析
        1. 访问者位置的不同
        2. 目标服务器的不同
        3. 攻击可行性
  4. 解决方案
    1. SSP
    2. 第三方服务
  5. 其它
  6. 引用

背景

近年来 FaaS (Function as a Service)作为一种新兴的云端计算方式,正逐步替换传统的IaaS/PaaS/SaaS等。FaaS为开发者特别是Web应用开发者提供了一个新的平台。使用FaaS,开发者仅需编写python或者javascript代码;而其它相关的存储、维护、代码执行等工作全部由FaaS平台去做(译注:对应用来说,类似微服务,但这种服务看起来更小)。FaaS平台一般由云服务商(CSP)提供,因为应用程序的所有者无需维护一个本地的服务器,因此所托管的服务又常被称作 去服务器(Serverless)函数

这种服务的代码一般仅包含少量的代码用于完成一个单一的功能。代码仅会在被远程调用(比如通过HTTP请求)时触发,即调即用,不会持续占用服务器资源。CSP可以根据用户的需求将用户的服务部署在不同的边缘服务器上(类似CDN的做法)。

和其它云服务一样,去服务器函数可以让多个用户共享CSP有限的软、硬件资源。在这样的共享平台下,用户间的有效隔离是CSP需要关心的典型的安全问题,另外差分隐私也是共享平台研究的重点。

本文针对此共享平台提出了一种不同于之前研究的新型攻击类型,此类型的攻击目标是与攻击者共享服务资源的所有用户,而非某个单一用户。该攻击与之前攻击的一个很大的不同点是:攻击的受害者包括攻击者自己。

攻击模型

Warmonger的攻击模型中包含了三方:攻击者、受害者以及访问者;同时攻击模型中涉及两个平台:去服务器服务提供者(serverless service provider, SSP)和目标服务器(第三方服务的服务器)。攻击模型示意图如下:

Warmonger 攻击模型

上图中,用户将服务部署在去服务器服务平台上,攻击者的服务被部署在与受害者同一IP地址下的服务器上。访问者通过网络请求来触发所部署的服务。IPS为入侵检测服务,目标服务器为第三方服务所在服务器。

在此攻击模型中,我们假设攻击者知道如何触发目标服务器的IPS防火墙,以让IPS可以将攻击者请求的源IP地址加入黑名单。此外,我们还假设:SSP会在不同的用户之间共享一些出口IP地址。Warmonger攻击的攻击方式很直接:攻击者通过构造去服务函数来发送恶意网络请求(比如发送大量的HTTP请求)到目标服务器上,来触发防火墙的防御。一旦IPS将攻击请求的源IP地址加入黑名单,那么位于同一出口IP下的其它服务就会收到影响,此时也无法访问目标服务器。

本质上,Warmonger攻击也是一种拒绝服务攻击(DoS),它的目标是妨碍其它受害者的正常操作(而不是从攻击中获益)。

Warmonger与传统的DoS攻击有两点不同:

  1. 在传统的DoS攻击中,攻击者通常是一个旁观者(不再被攻击之列),而在Warmonger中,攻击者自身也受攻击影响
  2. 一般传统DoS攻击的目标是让目标服务器瘫痪或者耗尽目标服务器的带宽资源,而Warmonger攻击则是通过触发目标服务器的IPS防御来让目标服务器主动拒绝服务

实验测量及实践

为了了解Warmonger攻击的可行性及其影响,论文实验收集分析了四个主要SSP的出口IP的使用方式,四个SSP分别是:AWS的Lambda、Google App Engine、微软的 Azure Functions以及Cloudflare Workers。这四个SSP中,Cloudflare是一个专门的CDN提供商,另外三个是一般的云服务提供商。Cloudflare会将用户的去服务器函数部署到它的CDN网络的边缘服务器上,这样用户在服务调用时就可以直接触发与其 最近 的服务器上所部署的服务。而其它三个SSP都需要用户指定其服务所部署的数据中心。

实验结果暴露了其中一些SSP的中令人担忧的问题。比如,实现发现Cloudflare Workers的一些边缘服务器仅依赖四个出口IP,而这些出口IP在SSP平台不同的用户之间是共享的。这些IP地址会被一直共享,直至一个月之后会换成另外的4个出口IP地址。

出口IP地址使用情况测量

实验测量持续了几个月时间(从2020年7月到11月),测试了SSP服务的一些能力及限制,并且试验了一些可以触发IPS保护机制的行为。

实验配置

出口IP的使用可能会受到以下三个因素的影响:

  • 访问者的位置(SSP服务的触发请求发送方的位置)
  • SSP服务器的位置
  • 目标服务器的位置

实验中使用了6个服务器实例,访问者和目标服务器都部署在这6个服务器中。这6个实例中,其中5个是租用的AWS 的 EC2实例,另外一个是阿里云的ECS实例,它们分布在世界各地的6个不同城市,分别为:

  1. 杭州,中国
  2. 蒙特利尔,加拿大
  3. 俄亥俄州,美国
  4. 悉尼,澳大利亚
  5. 巴黎,法国
  6. 圣保罗,巴西

测量网络结构如下图所示:

测量网络拓扑

数据收集

实验中,6个访问者持续向4个不同SSP上所部署的服务发送请求,这样SSP上的服务就会被激活,激活后的服务会向6个不同的目标服务器发送请求。每个目标服务器上部署了web服务,它们负责处理SSP服务发送的请求,并且记录请求的源IP地址。

实验运行了近3个月时间(从2020年8月到10月末)。实验中,每隔10分钟所有访问者都会发送一次请求。下文中我们使用一个 访问者-SSP-目标服务器 作为一个单位来进行出口IP的统计。举例来说 蒙特利尔-Cloudflare-悉尼 表示 访问者 部署在蒙特利尔, SSP 为Cloudflare, 目标服务器 部署在悉尼。

结果分析

先看一张 蒙特利尔-Cloudflare-悉尼 的测量结果图:

蒙特利尔-Cloudflare-悉尼的测量结果图

结果图中混合了三类数据的信息:

  1. 左边的柱状图部分:其横坐标为不同IP的数量(显示在图片左上方),纵坐标在左边为测量日期。对于每一天的柱状图,其中一个方块表示一个IP,每个方块的长度指示其出现的频率
  2. 右边蓝灰色部分的散点图部分:横坐标为IP的索引(实验为每个出现过的IP添加了一个索引值),纵坐标为测量日期。每个点表示在某一个测量日横坐标索引对应的IP出现过
  3. 右边红色线部分:纵坐标为IP出现频率的累积分布函数,横坐标为IP的索引。从累计分布函数中我们可以看出某个IP的基本使用状况

以图中绿色框框起来的9月26号的数据为例,其中柱状图部分包含了6小块,表示出现过6个IP地址。其中四个出现频率高,对应的柱状图中的块宽度较大;其余两个出现次数过少,柱状图显示重叠了。出现过的6个IP的索引在右图中可以看到为:15,16,17,18,19,20。并且从累计分布图中,我们可以看出15,16,17,18使用的较多。

访问者位置的不同

前面我们介绍过,在测量的4个SSP服务商中,Cloudflare是一个CDN服务提供商,它的服务会将客户的服务部署在靠近用户的位置。测量结果也印证了这个行为:只有Cloudflare的测量结果对于不同访问者的位置显示出了较大差异。其它的SSP服务商对于不同的访问者位置,出口IP的测量结果基本一致。

下图显示了服务商为Cloudflare,目标服务器在俄亥俄州,访问者为圣保罗(图a)和蒙特利尔(图b)的测量结果的对比。

Cloudflare 访问者位置不同结果对比

从图中,我们可以明显看出圣保罗使用的IP地址较多,而蒙特利尔使用的IP地址数量较少。

另外三家:微软、亚马逊和Google提供的服务对于不同位置的访问者,服务出口IP地址的测量结果基本一致。与Cloudflare不同的是,这三家的IP地址数量都比较大,其中微软和亚马逊的IP地址使用数量都在1000以上,而谷歌的IP地址数量使用也在300+。相比于Cloudflare使用数量(<100)来说都算是比较多的。对详细结果感兴趣的可以参考论文。

对于Warmonger攻击来说,从上图观察:圣保罗相比于蒙特利尔更难攻击成功,因为其使用的IP地址数量更多(从柱状图可以看出)。但是一旦攻击成功,它的持续时间是比较长的(从散点图可以看出,圣保罗索测量结果图中,索引靠前的IP地址,在大部分测量时间内都在使用)。而对于蒙特利尔来说,它大多数IP地址都固定了不超过一个月。因此,对于此IP的后续用户来说,最多会受到一个月的影响。

目标服务器的不同

目标服务器不同时,结果显示:微软的Azure和Google App Engine IP地址的使用,对于不同地址的目标服务器几乎是重叠的,也就是这两家SSP对于在其平台上所部署服务的访问位置(serverless 服务所访问的IP地址)不敏感。Cloudflare的表现依旧和其它几家不一样,它对于不同的访问地址,出口IP地址重叠率仅有20%左右。

$$ 重叠率 = \cfrac{某个 (访问者\text{-}SSP\text{-}目标服务器) 使用的IP地址数量}{(访问者\text{-}SSP\text{-}[所有目标服务器]) 使用的IP地址数量} $$

重叠率部分测量结果参考下表:

不同目标位置出口IP使用重叠率

攻击可行性

前文的测量都是基于单用户的,而攻击成功需要不同用户部署的 去服务器函数 之间共享共享出口IP。文中对此进行了补充实验,结果发现,微软和Cloudflare提供的服务会共享IP地址,所以攻击确实是可行的。对于谷歌和亚马逊来说,虽然他们对于不同的用户IP地址并不共享,但是考虑到IP地址是稀缺资源,一旦某个IP被攻击了而同时这个IP在被封锁时间内被分配给了其它用户,那么被分配到此IP的用户还是可能会受到影响的。

解决方案

SSP

对于SSP来说,可以

  • 扩大可用IP地址使用范围,不在用户之间共享IP地址
  • 让IP地址有一个冷却期:IP地址被某个用户使用之后,可以放置不用一段时间,在此段时间内改IP的封禁可能已经解除了
  • 对于出口流量进行一些异常检测,功能限制

第三方服务

考虑到当前IP地址紧缺的状况,单个IP地址可能被多个用户使用。第三方服务的部分IPS防御机制可以从IP级切换到用户级的,这样一个IP内用户的恶意行为就不会影响到同一IP下的其它用户。

其它

文中还提到了IPv6地址的问题,如果IPv6普及了,那么IP地址的共享就不在需要了,此时Warmonger攻击自然化解。但是考虑到IPv6的推进有些缓慢,此处不在赘述。

此外,文中还在合理的范围内,利用现有的一些触发防火墙规则的一些方式,进行了Warmonger的极小规模试验,感兴趣可参考论文。

引用

[1] Xiong, Junjie. “Warmonger: Inflicting Denial-of-Service via Serverless Functions in the Cloud.” CCS (2021).