CPDoS 攻击使通过 CDN 提供的页面不可用

来自汉堡大学和科隆大学的研究人员
已经发展 针对内容交付网络和缓存代理的新攻击技术 - 拒绝服务 (缓存中毒的拒绝服务)。 该攻击允许通过缓存中毒来拒绝对页面的访问。

该问题是由于 CDN 不仅缓存成功完成的请求,还缓存 http 服务器返回错误的情况。 通常,如果形成请求时出现问题,服务器会发出 400(错误请求)错误;唯一的例外是 IIS,它会因标头太大而发出 404(未找到)错误。 该标准仅允许缓存代码为 404(未找到)、405(不允许的方法)、410(已消失)和 501(未实现)的错误,但某些 CDN 也缓存代码为 400(错误请求)的响应,具体取决于关于发送的请求。

攻击者可以通过发送带有某种格式的 HTTP 标头的请求,导致原始资源返回“400 Bad Request”错误。 CDN 不会考虑这些标头,因此有关无法访问页面的信息将被缓存,并且超时到期之前的所有其他有效用户请求可能会导致错误,尽管原始站点提供内容没有任何问题。

已经提出了三种攻击选项来强制 HTTP 服务器返回错误:

  • HMO(HTTP Method Override)——攻击者可以通过“X-HTTP-Method-Override”、“X-HTTP-Method”或“X-Method-Override”标头来覆盖原始请求方法,某些服务器支持,但是在 CDN 中没有考虑到。 例如,可以将原来的“GET”方法改为服务器上禁止的“DELETE”方法,或者不适用于静态的“POST”方法;

    CPDoS 攻击使通过 CDN 提供的页面不可用

  • HHO(HTTP 标头过大) - 攻击者可以选择标头大小,使其超出源服务器的限制,但又不属于 CDN 限制。 例如,Apache httpd 将标头大小限制为 8 KB,而 Amazon Cloudfront CDN 允许标头最大为 20 KB;
    CPDoS 攻击使通过 CDN 提供的页面不可用

  • HMC(HTTP 元字符)——攻击者可以在请求中插入特殊字符(\n、\r、\a),这些字符在源服务器上被视为无效,但在 CDN 中会被忽略。

    CPDoS 攻击使通过 CDN 提供的页面不可用

最容易受到攻击的是 Amazon Web Services (AWS) 使用的 CloudFront CDN。 亚马逊现已通过禁用错误缓存解决了该问题,但研究人员花了三个多月的时间才添加保护。 该问题还影响了 Cloudflare、Varnish、Akamai、CDN77 和
速度很快,但通过它们进行的攻击仅限于使用 IIS、ASP.NET、 长颈瓶 и 播放1. 注意,美国国防部的 11% 域名、HTTP Archive 数据库中的 16% 的 URL 以及 Alexa 排名前 30 名网站中的约 500% 可能会受到攻击。

作为阻止站点端攻击的解决方法,您可以使用“Cache-Control: no-store”标头,该标头禁止响应缓存。 在某些 CDN 中,例如
CloudFront 和 Akamai,您可以在配置文件设置级别禁用错误缓存。 为了保护,还可以使用Web应用防火墙(WAF,Web Application Firewall),但它们必须实现在缓存主机前面的CDN侧。

来源: opennet.ru

添加评论