背景
近年来 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)和目标服务器(第三方服务的服务器)。攻击模型示意图如下:
上图中,用户将服务部署在去服务器服务平台上,攻击者的服务被部署在与受害者同一IP地址下的服务器上。访问者通过网络请求来触发所部署的服务。IPS为入侵检测服务,目标服务器为第三方服务所在服务器。
在此攻击模型中,我们假设攻击者知道如何触发目标服务器的IPS防火墙,以让IPS可以将攻击者请求的源IP地址加入黑名单。此外,我们还假设:SSP会在不同的用户之间共享一些出口IP地址。Warmonger攻击的攻击方式很直接:攻击者通过构造去服务函数来发送恶意网络请求(比如发送大量的HTTP请求)到目标服务器上,来触发防火墙的防御。一旦IPS将攻击请求的源IP地址加入黑名单,那么位于同一出口IP下的其它服务就会收到影响,此时也无法访问目标服务器。
本质上,Warmonger攻击也是一种拒绝服务攻击(DoS),它的目标是妨碍其它受害者的正常操作(而不是从攻击中获益)。
Warmonger与传统的DoS攻击有两点不同:
- 在传统的DoS攻击中,攻击者通常是一个旁观者(不再被攻击之列),而在Warmonger中,攻击者自身也受攻击影响
- 一般传统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个不同城市,分别为:
- 杭州,中国
- 蒙特利尔,加拿大
- 俄亥俄州,美国
- 悉尼,澳大利亚
- 巴黎,法国
- 圣保罗,巴西
测量网络结构如下图所示:
数据收集
实验中,6个访问者持续向4个不同SSP上所部署的服务发送请求,这样SSP上的服务就会被激活,激活后的服务会向6个不同的目标服务器发送请求。每个目标服务器上部署了web服务,它们负责处理SSP服务发送的请求,并且记录请求的源IP地址。
实验运行了近3个月时间(从2020年8月到10月末)。实验中,每隔10分钟所有访问者都会发送一次请求。下文中我们使用一个 访问者-SSP-目标服务器 作为一个单位来进行出口IP的统计。举例来说 蒙特利尔-Cloudflare-悉尼 表示 访问者 部署在蒙特利尔, SSP 为Cloudflare, 目标服务器 部署在悉尼。
结果分析
先看一张 蒙特利尔-Cloudflare-悉尼 的测量结果图:
结果图中混合了三类数据的信息:
- 左边的柱状图部分:其横坐标为不同IP的数量(显示在图片左上方),纵坐标在左边为测量日期。对于每一天的柱状图,其中一个方块表示一个IP,每个方块的长度指示其出现的频率
- 右边蓝灰色部分的散点图部分:横坐标为IP的索引(实验为每个出现过的IP添加了一个索引值),纵坐标为测量日期。每个点表示在某一个测量日横坐标索引对应的IP出现过
- 右边红色线部分:纵坐标为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)的测量结果的对比。
从图中,我们可以明显看出圣保罗使用的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%左右。
重叠率部分测量结果参考下表:
攻击可行性
前文的测量都是基于单用户的,而攻击成功需要不同用户部署的 去服务器函数 之间共享共享出口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).
更多推荐