内存缓存分布式拒绝服务 (DDoS) 攻击也叫memcached DDOS是一种网络攻击,攻击者试图使目标受害者的网络流量超载。攻击者将欺骗性的请求发送到易受攻击的 UDP 内存缓存*服务器,该服务器随后向目标受害者发送互联网流量,从而可能使受害者的资源不堪重负。当目标的互联网基础设施过载时,就无法处理新请求,而常规流量也无法访问互联网资源,从而导致拒绝服务。
*内存缓存是用于加速网站和网络的数据库缓存系统。
以下是 Cloudflare 全球网络中的数据中心,以及它们在近期一次攻击中收到的内存缓存攻击流量的相对数量。
内存缓存攻击的工作原理
内存缓存攻击的工作方式类似于所有 DDoS 放大攻击,例如 NTP 放大和 DNS 放大。这种攻击欺骗性请求发送到易受攻击的服务器,该服务器随后会发出比初始请求大的数据量作为响应,因此放大了流量。
内存缓存放大攻击就好比是一个心怀恶意的青少年打电话给一家餐厅说“我要菜单上的东西每样来一份,请给我回电话并告诉我整个订单的信息”。当餐厅询问回叫号码时,他却给出目标受害者的电话号码。然后,目标会收到来自餐厅的呼叫,接到他们未请求的大量信息。
这种放大攻击的方法之所以成为可能,因为内存缓存服务器可以选择使用 UDP 协议进行操作。UDP 是一种网络协议,允许在不首先获得所谓握手的情况下发送数据 – 握手是指双方都同意通信的网络过程。之所以使用 UDP,是因为不用咨询目标主机是否愿意接收数据,无需事先征得它们的同意,就可以将大量数据发送给目标主机。
内存缓存攻击分为 4 个步骤:
- 攻击者将大量数据有效载荷*植入暴露的内存缓存服务器上。
- 接下来,攻击者使用目标受害者的 IP 地址伪造 HTTP GET 请求。
- 带有漏洞的内存缓存服务器接收到请求,试图通过响应来提供帮助,因此将大量响应发送到目标。
- 目标服务器或其周围的基础设施无法处理从内存缓存服务器发送的大量数据,因此导致过载和对正常请求拒绝服务。
这是针对 Cloudflare 网络的每秒 260 GB 的内存缓存攻击被防护的情况
内存缓存放大攻击的规模可以达到多大?
这种攻击的放大倍数十分惊人;在实践中,我们见过高达 51,200 倍的放大倍数!这意味着对于 15 字节的请求,可以发送 750 kB 的响应。这是一个巨大的放大倍数,无法承受如此大量攻击流量的 Web 资产则面临巨大的安全风险。巨大的放大倍数加上带有漏洞的服务器使内存缓存放大攻击成为攻击者针对各种目标发起 DDoS 攻击的主要用例。
如何防护内存缓存攻击?
- 禁用 UDP – 对于内存缓存服务器,请确保在不需要时禁用 UDP 支持。默认情况下,内存缓存启用了 UDP 支持,这可能会使服务器容易受到攻击。
- 对内存缓存服务器进行防火墙保护 – 通过在内存缓存服务器和互联网之间添加防火墙保护,系统管理员可以根据需要使用 UDP,而不必暴露于风险中。
- 防止 IP 欺骗 – 只要可以伪造 IP 地址,DDoS 攻击就可以利用此漏洞将流量定向到受害者的网络。防止 IP 欺骗是一个规模较大的解决方案,无法由特定的系统管理员实施,它要求传输提供商禁止源 IP 地址源自网络外部的任何数据包离开其网络。换句话说,互联网服务提供商 (ISP) 之类的公司必须筛选流量,以使离开其网络的数据包不得假装成来自其他地方的其他网络。如果所有主要的传输提供商都实施了这种筛选,基于欺骗的攻击将在一夜之间消失。
- 开发具有减少 UDP 响应的软件 – 消除放大攻击的另一种方法是去除任何传入请求的放大因素;如果由于 UDP 请求而发送的响应数据小于或等于初始请求,则放大就不复可能。