利用Serverless函数造成的DoS攻击分析

Posted by Pu Ming on Thursday, February 23, 2023

一. 背景介绍

来自美国南佛罗里达大学(University of South Florida)以及乔治梅森大学(George Mason University)的老师共同发表了一篇Serverless安全相关的论文(Warmonger: Inflicting Denial-of-Service via Serverless Functions in the Cloud),该论文提出SSP(Serverless Service Provider)存在多出口IP以及这些IP会在各Serverless用户间共享的脆弱性问题,这一脆弱性进一步会导致攻击者利用Serverless函数作为中介对目标服务器发送大量请求,从而触发在目标服务器前部署的IDS设备的检测规则,IDS将这些出口IP进行封锁,使得云租户部署的Serverless函数无法访问目标服务器,造成被拒绝服务。此外,该论文还通过各项实验验证了各SSP(AWS Lambda、Cloudflare Workers、Microsoft Azure Functions、Google App Engine )的多出口IP使用模式,从而总结出出口IP变换规律,为Serverless攻防研究提供了土壤。最后该论文还提出了相应的防护方法。

warmonger是这一类攻击的总称,意思为“发起战争的人”,本质上讲,warmonger攻击是一种拒绝服务(DoS)攻击,目的是破坏受害者的操作,而不获得任何直接利益。但warmonger攻击与传统的DoS攻击又有以下不同:

  • 传统DoS攻击中,攻击者通常独立于受害者环境之外。而Warmonger攻击中,攻击者和受害者在同一环境下(同一FaaS平台上部署Serverless函数)。攻击者就像一个 “挑事的人”,在无服务器计算平台和目标服务器之间发起 “战争”。因此,将这种攻击命名为 Warmonger攻击。
  • 传统DoS攻击中,攻击者的目的是使目标服务器瘫痪或耗尽其带宽,而Warmonger攻击的目的是对目标服务器的IPS设备进行攻击,以使IPS设备阻止SSP的出口IP,这相比于传统DoS攻击实现难度容易很多。实际上,Warmonger攻击是传统DoS攻击的反面:DoS攻击试图寻找新的方法来规避IPS并对目标服务器造成损害;而Warmonger攻击使用恶意payload来 “通知"IPS攻击的到来,以引起IPS设备对相同出口IP用户的DoS。

二. 攻击流程

image
图1.攻击流程图

  • 攻击者通过某种方法收集SSP的出口IP,发现规律,比如发现一直常用的IP可能为10个左右(数量上每个SSP均有不同,论文中提到cloudflare wokers平均使用4个出口IP,并在租户中共享,每月进行一次出口IP轮换);
  • 攻击者编写FaaS函数并部署在SSP中,该函数的主要目的为向指定目标服务器发送大量恶意request请求,以便触发IPS/WAF设备的检测规则,从而对SSP的出口IP进行封锁;
  • 攻击者触发其编写的FaaS函数,大量恶意请求被发送至目标服务器前部署的IPS中,触发IPS检测规则,最终导致SSP的大量出口IP被封锁;
  • 由于visitor(访客)与攻击者共享同一组出口IP,因而这些访客无法访问目的服务器,进而引起访客被拒绝服务;

三. 关键利用点

  • SSP在不同租户中共享出口IP 1)统计出口IP使用模式(如多久进行一次出口IP轮换、是否受访客地理位置影响、是否受Serverless函数部署地理位置影响、出现频次较高的出口IP)

  • 触发IPS的封禁IP操作 1)泛洪攻击,大量请求Serverless函数或在Serverless函数中发起大量请求以触发IP被封 2)发送恶意请求,Serverless函数中对目标服务器的请求中带有大量恶意payload以触发IP被封 3)端口消耗及扫描,Serverless函数中建立一个自定义的端口扫描器,不断向目标服务器发送端口扫描包以触发IP被封 4)SSH, Serverless函数中不断对目标服务器进行SSH操作以触发IP被封

  • FaaS函数部署成本低 1)免费部署 2)只用负责函数开发侧,服务端无需管理

  • FaaS租户访问同一目标服务器 1)限于用户访问的是公共的服务(目标服务器),比如12306火车票购买平台、机票购买平台、github等,因为只有这样才能造成大范围的访问被拒绝服务;

四. 影响范围

影响范围应从以下几点考虑:

  • 各SSP是否有针对单个FaaS函数在单位时间内执行时间的限制,如果有,每个SSP限制规则不一,这也会导致影响范围大小,例如lambda支持在函数中并发执行,但每秒最多可以发送100个请求,AWS和Azure不支持并发,每秒只能发送5-8个请求,因此可以看出影响范围差距很明显;
  • 各SSP的常用出口IP数量以及出口IP的轮换周期也会最终影响范围的大小,例如论文中提到Cloudflare Workers常用出口IP仅4个,并平均1个月更换一次,那么对于攻击者而言是较好利用的。AWS Lambda由于出口IP每天都在变化因此无法轻易找出常用IP,那么对于攻击者而言必然加大了攻击难度,也会最终导致影响范围;
  • FaaS租户访问的目标服务器是否一致,例如租户使用FaaS函数进行定时抢票操作,那么目标服务器可能为12306或某航空公司售票网站等,这些目标服务器对各租户而言是一致的,因此可以扩大危害范围,但如果各租户访问的目标服务器均不一致,那么危害范围会急剧缩小;

五. 防护方法

  • 云厂商角度 1)从SSP的硬件设置、软件配置、服务组合出发,采取多方位保护方法,如轮换出口IP、冷却IP(停止重复IP的使用)、扩大IP池、出口IP不在租户中共享、恶意行为识别等。 ps: 实际上不在租户中共享IP,即每个用户一个出口IP也是一种很危险的做法,因为可能会引起“point kill”攻击(点杀攻击),即攻击者可以针对单个出口IP进行攻击;
  • 目标服务器角度 1)在租户间不共享IP的前提下,目标服务器可以接收带有凭证的访问进行相应缓解,例如目标服务器为Github,由于Github可以启动基于token的速率限制,如允许每小时有5000个认证请求,这种限制通常不会阻止请求发出的IP地址(出口IP),所以当攻击者发起warmonger攻击时需要先突破5000个认证请求,因此可在一定程度上缓解warmonger攻击;
  • Ipv6 1)IPv6的部署理论可以完全挫败Warmonger的攻击,因为SSP能够负担更多的IPv6地址,并且不在用户之间共享; ps: 论文中对AWS Lambda、Cloudflare Workers、Microsoft Azure Functions、Google App Engine四个SSP进行了Ipv6的支持调研,发现目前仅有Google 和Cloudflare支持ipv6,Azure和AWS给出了“network is unreachable” 和“address family not supported by protocol”的错误信息

六. 参考文献

[1] Warmonger: Inflicting Denial-of-Service via Serverless Functions in the Cloud Junjie Xiong University of South Florida junjiexiong@usf.edu ,Mingkui Wei George Mason University mwei2@gmu.edu,Zhuo Lu

University of South Florida zhuolu@usf.edu,Yao Liu University of South Florida yliu21@usf.edu

「真诚赞赏,手留余香」

Ming Blog

真诚赞赏,手留余香