[关闭]
@ensis 2016-01-21T09:38:37.000000Z 字数 1422 阅读 2523

Forwarding-Loop Attacks in Content Delivery Networks

NDSS'16


原文链接
作者信息:Jianjun Chen, Xiaofeng Zheng, Haixin Duan and Jinjin Liang (Tsinghua University) and Jian Jiang (University of California, Berkeley) and Kang Li (University of Georgia) and Tao Wan (Huawei Canada) and Vern Paxson (University of California, Berkeley and International Computer Science Institute)


Abstract

文章介绍了恶意用户通过创建CDN内或多个CDN间的forwarding-loop来攻击CDN的可用性。作者评估的16个CDN提供商全部受这种攻击的影响。尽管有些CDN有一些对应的检测措施,但都可以被绕过,并且攻击的防御需要所有CDN间的合作。此外,文章还讨论了单个CDN可以马上采取的措施。
在更高层次上,文章的工作强调了在用户有转发控制权,特别是没有单点管理控制的时候,networked system可能会有的问题。

Background

CDN:提高网站性能和规模,提供安全特性如DDos保护、网络应用防火墙(WAF)。
涉及到CDN的网页访问可以分为两步,首先用户被引导到距离用户较近的CDN服务器上,之后CDN获取到内容返回给用户。
第一步叫做request routing,一般可以通过URL重写(网站所有者将网站URL改为CDN的子域名)或基于DNS的request routing(改变DNS对网站域名的解析,返回CDN服务器的IP或CNAME)实现。
第二步关心的是CDN如何获取到用户请求的内容,有两种模式push和pull,push指网站所有者自己把内容上传到CDN,而pull则是CDN服务器扮演反向代理的角色,在本地没有缓存的情况下,将请求转发到原始网站。

Forwarding-loop攻击

在pull模式中,恶意的CDN客户可以故意操纵forwarding过程,造成forwarding-loop。
在CDN节点转发客户的请求之前,会检查请求的Host头来获取客户指定的发送目的地,然后连接发送目的地并转发请求。
如果攻击者故意将发送目的地设置成另一个CDN节点,那么发送过程就会继续,并且可能形成一个循环。
文章讨论了4种可以形成循环的方法:self loop;intraCDN loop;interCDN loop;CDN Dam Flooding。

影响Forwarding-loop的因素

修改Host头

后续节点是否接受转发的请求依赖于Host头,按照是否修改host头forwarding-loop可以分为两类:一类是请求发出时是网站的原始域名,并且在转发到CDN节点时,CDN不对Host做修改

另一种是CDN会更改Host头来反映发送的目的地。当Host是IP时,没有CDN会接受这样的请求。

修改其他头字段


CDN对收到的请求长度有限制。

处理timeout

DNS解析

Non-streaming与streaming

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注