Memcached UDP端口反射攻击漏洞

受影响范围

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

排查方案

参照以下步骤进行排查:

  1. 从外部互联网测试是否对外开放了Memcached 11211 UDP端口。您可以使用nc工具测试端口,并查看服务器上是否运行memcached进程,具体测试方式如下。
    • 测试端口:nc -vuz IP地址 11211
    • 测试是否对外开放memcached服务:telnet IP地址 11211。如果开放了11211端口,则可能受影响。
    • 检查进程状态:ps -aux | grep memcached
  2. 使用echo -en "\x00\x00\x00\x00\x00\x01\x00\x00stats\r\n" | nc -u IP地址 11211命令查看返回内容。若返回内容非空,则表明您的服务器可能受影响。

解决方案

  • 如果您使用了Memcached服务,并对外开放了11211 UDP端口,建议您根据业务自身情况,使用ECS安全组策略或其他防火墙策略封禁公网入方向UDP 11211端口,确保Memcached服务器与互联网之间无法通过UDP来访问。
  • 如果您的Memcached服务不需要开放UDP端口,建议您在Memcached启动选项中添加-U 0参数来完全禁用UDP协议的访问。说明:修改Memcached服务的启动选项后,您需要重启服务使配置生效。
  • 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协议。

点赞