[预警]Memcached 漏洞 可被作为DRDos反射放大器进行DDoS 攻击

DDoS分布式拒绝服务攻击一直是黑客们钟爱的武器,因为简单粗暴没什么技术手段含量,但是又收效显著。中招的目标如果没有防护措施或反应不及,通常就这样在四面八发涌来的访问请求下瘫痪了。

就在3月1日,DDoS攻击在途径上又发生了一次“升级”,制造了史上流量规模最大的DDoS攻击,受害者是知名的开发者社区Github。

Github在高达1.35Tbps的流量冲击之下发生了短暂的间歇性访问不能,它随即自动向自己的DDoS攻击转移服务发出流量清洗请求,后者借助最新部署的针对性转移系统替Github过滤掉那些攻击数据包。

攻击持续了8分钟之后,发起者便停手了,似乎非常满意这次它所搞出的动静。

实施DDoS攻击在早期需要一张庞大的僵尸网络,提前取得肉鸡的控制权后随便搞点什么动静,哪怕是集体一起对目标ping过去,目标一般也不容易消受得起。

这么做有成本,准备工作耗时也比较长,至少要得先搞到僵尸网络吧。

后来攻击者们开始考虑怎样提升攻击效率和自己的隐蔽性,开始采用反射式放大攻击。通过向一个不相干的服务器提交特别设计的请求数据包,诱骗它向攻击目标而非攻击源返回一个大小增长数倍的数据包,达到放大攻击规模的目的。

因为DDoS攻击的本质其实就是用无用的请求塞满攻击对象的带宽让它无法响应正常访问的请求,放大过后的数据包要吃尽目标当然也更简单些。

过去比较常见的反射式放大DDoS攻击通常会走DNS服务器、NTP服务器,只有10~20倍左右放大,而保护我们不被有害信息侵蚀思想的安全圈放大倍率也只有100倍,但这次新出现的memcached服务器跳板攻击规模大到反常,每10秒向每一个memcached服务器发送一个攻击包,跳板弹回给攻击目标的就会被放大成威力5万倍的电磁炮。


1.35Tbps啥概念呢?2016年导致美国东海岸大部网络瘫痪的那场DDoS攻击,流量规模大概是1.2Tbps,如果没有适当的措施进行对抗的话,没有什么网络能扛得下来这种规模的野蛮洪流。

memcached服务器,原本是用来加速网络和网站的数据库缓存系统,这些服务器理应不被暴露在公网上,因为任何人都可以对它们发起查询请求,而它也不会在乎自己的结果要发回给谁。目前大约有10万台商业或研究机构的memcached服务器全裸在互联网上触手可及的地方,无需任何验证,只要哪个黑客有心,送它一个特别的攻击包,它会毫不犹豫地打开潘多拉魔盒。

memcached服务器作为跳板并不是最近才发生的事情,但规模一直很小,为何黑客这周以来突然又对它青睐有加,一部分原因当然是既不用安插恶意软件,也不用培植僵尸网络,又省事又隐蔽;更可能的是memcached服务器最近的暴露程度增加了,扫描它们的黑客数量也开始多了起来。

所幸的是,站在明处的ISP和网络安全机构也在强化它们的流量筛选甄别方法,并把相当一部分memcached服务器反射式放大攻击在源头就掐断了。

而我国在差不多一年之前工信部也对所有骨干网机房做出要求,增加防火墙校验源IP。若得以实施,位于中国大陆的机房会因为暴露风险升高而不适合作为反射放大攻击的发动地和承载跳板。

这次针对GitHub的攻击,可以更多地将其视为是一种对攻击手段的宣传,向有意向的客户展示这种攻击的威力,同时也试验其在实际行动中的效果。

未来它完全有可能会成为互联网行业里那些见不得人争斗双方手里的凶器,但最后往往唯一的胜者只有坐在暗处偷偷数钱的黑客。

目前曝出的漏洞是攻击者通过设置 Memcached 的最大值,欺骗 UDP 数据包发起请求,利用 Memcached 发送的大量庞大的 UDP 响应数据包进行攻击行为。

任何可用于 DDoS 攻击的 Memcached 服务器也可用于收集从本地网络或主机缓存的用户数据。澳创表示,除了窃取用户数据外,攻击者还可以在让所有者不知情的情况下,修改数据并将其重新插入缓存中。

“ Memcached 此漏洞代表了 DDoS 攻击的新篇章。在此之前,最新的破纪录攻击是由相对低带宽的物联网(IoT)设备组织的。相比之下,这些 Memcached 服务器通常连接到更高带宽的网络,并且由于高放大因素,容易造成数据雪崩等严重影响。除非 Memcached 服务器的运营商采取行动,否则这些攻击将继续。”

由于 Memcached 协议旨在不需要身份验证就可以使用,因此用户向易受攻击的 Memcached 服务器添加的任何内容都可能被互联网上的其他人盗用,而不会留下审计跟踪。

Memcached 近日发布了 1.5.6 版本,以默认禁用 UDP 协议。其开发者社区也发布了多个有关安全风险的警告,不过仍然有大量用户使用的是之前的版本,以及操作系统和云服务的默认配置。针对该攻击的“kill switch”对策,通过发送一个命令回攻击服务器来抑制 DDoS 攻击并使服务器的缓存失效。并表示该对策已在经过测试,似乎 100% 有效。

受影响范围

用户自建,并对外开放了Memcached 11211 UDP端口的Memcached服务。

排查方案

参照以下步骤进行排查:

  1. 从外部互联网测试是否对外开放了Memcached 11211 UDP端口。您可以使用nc工具测试端口,并查看服务器上是否运行memcached进程

  2. 解决方案

    • 如果您使用了Memcached服务,并对外开放了11211 UDP端口,建议您根据业务自身情况,使用服务器安全组策略或其他防火墙策略封禁公网入方向UDP 11211端口,确保Memcached服务器与互联网之间无法通过UDP来访问;

    • 建议您添加-U 0参数,并重启memcached服务,来完全禁用UDP;

    • Memcached官方已经发布新版本默认禁用UDP 11211端口,建议您升级到最新1.5.6版本(文件完整性校验sha值:ca35929e74b132c2495a6957cfdc80556337fb90);

    • 澳创建议您对在运行的Memcached服务进行安全加固。

      例如,启动绑定本地监听IP,禁止对外访问,禁用UDP协议,启用登录认证等安全功能,提高Memcached安全性。

    验证方法

    修复完毕后,您可以使用以下方法来测试服务器修复措施是否生效:

    1. 如果您屏蔽了对外TCP协议11211端口,您可以在外网办公电脑上使用命令“telnet ip 11211“,如果返回连接失败,则表示已经关闭对外TCP协议11211端口;

    2. 如果您禁用了memcached UDP协议,您可以运行以下命令检测是否关闭memcached 服务UDP协议。

      echo -en "\x00\x00\x00\x00\x00\x01\x00\x00stats\r\n" | nc -u IP地址 11211

      若返回内容为空,则表明您的服务器已经成功memcached UDP协议。您也可以使用netstat -an | grep udp命令查看UDP 11211端口是否处于监听状态,如果没有监听,则表示已经成功关停memcached UDP协议。

相关新闻