黑客利用CPDoS攻击将目标锁定CDN保护网站
有关一类新的Web缓存中毒攻击的详细信息已经出现,这些攻击可用于拒绝用户访问通过内容分发网络(CDN)分发的资源。
该新方法名为“缓存中毒拒绝服务(CPDoS)”,它具有多种变体,可以通过发送带有格式错误的标头的HTTP请求来工作。
通过缓存服务器进行DoS
CDN具有通过缓存客户端经常请求的资源来减少使用其服务的原始服务器上的通信量的特性。这样做的直接效果是提高了性能。
CDN体系结构中的缓存系统通常分散在较大的地理区域中,以实现更好的分发,它存储源服务器中资源的最新版本,并在客户端请求时将其交付给客户端。
这些中间系统处理请求并将其转发到目的地,等待响应和资源的新版本(如果存在)。使用标识新变体的缓存键可以确定资源的新鲜度。
CPDoS在CDN的中间缓存系统级别工作,该缓存系统接收并存储由错误的HTTP请求标头引起的错误页面。
结果,尝试访问相同资源的用户将收到缓存的错误页面,因为这是原始服务器在请求后返回的带有错误标头的内容。
攻击的变化
科隆应用科学大学和德国汉堡大学的Hoai Viet Nguyen,Luigi Lo Iacono和Hannes Federrath描述了CPDoS攻击的三种变化:
- HTTP标头超大(HHO)
- HTTP元字符(HMC)
- HTTP方法覆盖(HMO)
使用HHO类型的CPDoS攻击,威胁参与者会利用为HTTP请求标头设置的大小限制中间系统和Web服务器。
如果缓存系统接受的请求标头大小大于原始服务器所定义的大小,则攻击者可以使用超大请求密钥或多个标头来制作请求。
在这种情况下,缓存将转发带有多个标头的请求,然后网络服务器将阻止该请求,并返回一个400 Bad Request错误页面进行缓存。以后对相同资源的请求将获得错误页面。
为了更好地说明这种情况,研究人员制作了一个视频,目标是托管在Amazon CloudFront上的应用程序。
在攻击过程中,错误页面将有选择地替换资源,直到整个网页都不可用为止。
HTTP元字符(HMC),CPDoS攻击的第二种变体与HHO类似,但利用了有害的元字符。这些是任何“控制字符,例如换行符/回车符('\ n)',换行符('\ r')或铃声('\ a')”。
再次,高速缓存系统执行其工作并转发从客户端收到的请求。当它到达源服务器时,它可能被分类为恶意程序,并生成一条错误消息,该消息被缓存并呈现给客户端而不是请求的资源。
该方法超越了攻击(HMO),这是CPDoS的第三种变体,它从仅支持GET和POST HTTP请求方法的中间系统(例如代理,负载平衡器,缓存,防火墙)中获利。
这转化为阻止其他HTTP请求方法。一个提供Web应用程序指示信息以替换标头中支持的HTTP方法的Web框架允许绕过安全策略并提供不同的安全策略,例如DELETE。
在上图中,GET请求被覆盖,原始服务器上的Web应用将其解释为POST,并返回相应的响应。
“让我们假设目标Web应用程序未对/index.html上的POST实现任何业务逻辑。在这种情况下,诸如Play Framework 1之类的Web框架会 返回一条错误消息,状态码为404 Not Found。”
结果是该错误消息被缓存并用于/index.html资源的后续有效GET请求。
下面的视频演示了CPDoS攻击的这种变体,它使用邮递员 工具来测试Web服务,从而阻止了对目标网站主页的访问。
影响深远
CDN在较大的地理位置上运行,CPDoS攻击生成的错误页面可以到达多个缓存服务器位置。
但是,研究人员发现,并非所有边缘服务器都受到此威胁的影响,并且某些客户端仍将从原始服务器接收有效页面。
为了进行测试,他们使用了TurboBytes Pulse(全局DNS,HTTP和traceroute测试工具)和网站速度测量服务。
德国(法兰克福)针对同一国家(科隆)的目标发起的攻击影响了整个欧洲和亚洲某些地区的缓存服务器。
解决问题
这种DoS攻击的标头超大(HHO)和元字符(HHM)变体是可能的,因为它与标准HTTP实现有所不同,默认情况下,标准HTTP实现不允许存储包含错误代码的响应。
“ Web缓存标准仅允许缓存错误代码'404 Not Found','405 Method Not Allowed','410 Gone'和'501 Not Implemented',”研究人员在致力于CPDoS的网站上写道。
阻止DoS受到这些攻击的最简单方法是遵守HTTP标准并仅缓存上面定义的错误页面。
但是,使用错误的状态代码来处理错误也会启用这些攻击,因为内容提供商会使用更通用的攻击。例如,“ 400错误请求”用于声明过大的标头。正确的是“ 431请求标头字段太大”,研究人员分析的任何系统都未缓存它。
针对HHO和HHM CPDoS变体的全面解决方案是将错误页面完全排除在缓存之外。
保护措施还包括在缓存前面设置Web应用程序防火墙(WAF),以捕获试图到达原始服务器的恶意内容。
存在于多个CDN上的问题
从三位学者进行的测试来看,亚马逊的CloudFront CDN似乎最容易受到CPDoS威胁。
在研究人员测试的25个流量服务器和Web框架中,只有其中三个的HTTP实施不受CPDoS攻击:Apache TS,Google Cloud Storage和Squid。
下表显示了此类Web缓存系统和HTTP实现的组合受此类拒绝服务的影响.
已将问题报告给受影响的各方,其中一些人发布了补丁或以其他方式纠正了它们。
Microsoft更新了IIS Server的修复程序,并于6月发布了有关漏洞的详细信息(CVE-2019-0941)。Play Framework还在1.5.3和1.4.6版本中针对HMO方法修补了其产品。
但是,并非所有供应商的反应都相同。与Flask开发人员进行了多次联系,但没有回复,并且对CPDoS的弹性尚不清楚。
亚马逊的安全团队认识到CloudFront的弱点,并默认情况下停止使用状态码“ 400 Bad Request”缓存错误页面。但是,研究人员说,沟通主要是一种方式,因为他们从未收到有关缓解进度的最新信息。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:niceseo99@gmail.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
评论