【高危风险预警】Memcache系统正在成为DRDoS攻击的帮凶

  • 来源:深信服安全中心
  • 发布时间:2018-04-18
#

事件描述

    近日,Cloudflare的研究人员发现,黑客可以利用Memcache服务器资源发动大规模的DDoS攻击。昨日凌晨,著名的代码托管网站GitHub遭受了一次大规模拒绝服务攻击,攻击流量峰值达到1.35TB/s,其攻击方法就是利用Memcached的反射型DDoS攻击。

    Memcached是一个自由开源的,高性能,分布式内存对象缓存系统,常被许多网站使用以提升网站的访问速度,尤其对于一些大型的、需要频繁访问数据库的网站访问速度提升效果十分显著。Memcached是一种基于内存的key-value存储,用来存储小块的任意数据(字符串、对象)。这些数据可以是数据库调用、API调用或者是页面渲染的结果。Memcached设计简洁,便于快速开发,减轻开发难度,解决了大数据量缓存的很多问题。一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。

    DRDoS,即分布式反射拒绝服务,英文全称是Distributed Reflection Denial of Servic。这种攻击的特点是攻击者向服务器(这次是Memcached)发送源IP为受害者IP的数据包,服务器便会向受害者发送响应数据包。如果攻击者发送很小的数据包,而服务器向受害者返回很大的响应数据包,这就起到了放大攻击的作用,拒绝服务攻击就更加有效。经典的案例是之前的利用NTP协议的DRDoS攻击和本次的利用Memcached进行的DRDoS攻击。

专家解读

    Memcached运行默认监听TCP和UDP的11211端口。TCP协议是一种面向连接、没有消息边界的传输层协议,很难用来做DRDoS攻击;而UDP协议使用无连接、具有消息边界的传输层协议,特别适合用来做DRDoS攻击。近日的事件,攻击者正是利用Memcached的UDP 11211端口发起的攻击。

    攻击的思路也很简单,描述如下:

    1. 首先,攻击者向Memcached系统存储一个key小但是value大的数据,比如通过Memcached的set命令设置key为a,value为aaaaaaaaaaaaaaaaaaaa(20个a)的数据。

    2. 然后,攻击者伪造受害者的IP,去获取刚刚存储的数据。攻击者可以get key

    等命令获取key为a的数据的value的值,也就是20个a。

    3. Memcached便会向受害者发送aaaaaaaaaaaaaaaaaaaa(20个a)。

    攻击者只要拥有大量可用的Memcached服务器,设置存储好构造的数据,以受害者的IP同时访问这些服务器,就会给受害者造成大规模的反射拒绝服务攻击。据Cloudflare公司研究表示,基于 Memcache 的DRDoS攻击的放大系数可达到 51200,五万多倍的放大效果!

解决方案

    DDoS攻击的防护一直都是个头疼的问题,不过我们可以从以下的方面去尽量缓解这类攻击。

    如果您正在使用Memcache系统,您可以:

    1. 使用Memcached的远程访问安全认证机制,避免非得授权访问的问题。

    2. 如果您不需要UDP 11211端口服务可将其关闭。

    3. 使用防火墙等设备对UDP 11211端口的访问进行保护。

    如果您担心您的系统受到此类攻击,可以考虑使用具有抗DDoS能力厂商的专业服务。