首页/安全/漏洞与攻击面速查/Memcached 未授权与放大风险
主机与服务风险面53 条

Memcached 未授权与放大风险

Memcached 设计上无鉴权(可选 SASL),默认 11211 端口;暴露后缓存数据可被读取,且历史上常被用于 UDP 反射放大流量。

漏洞与攻击面速查安全更新于 2026-10-13

Memcached 风险是什么

Memcached 是内存键值缓存,设计上运行在可信内网、不提供内置鉴权(较新版本可选 SASL),默认监听 TCP/UDP 11211。它同时带来两类风险:一是暴露后缓存内容可被任意读取或清空,缓存中常混有会话与业务明文数据;二是 UDP 协议无握手,历史上被大量用于反射放大攻击,小请求可换取数十倍响应流量。较新版本默认关闭 UDP,老版本则默认开启。

基本信息

服务Memcached(内存键值缓存)
默认端口11211 TCP / UDP
认证默认无鉴权,较新版本支持 SASL
高危组合监听 0.0.0.0 + 开放 UDP + 内存中缓存敏感数据

典型使用场景

  • 加固前先核查监听地址与 UDP 是否开启,确认暴露范围
  • 跨主机使用时限制来源,只允许应用服务器网段访问 11211
  • 上线前评估缓存键的敏感度,避免把完整用户信息与令牌写入缓存
  • 关注老版本实例:UDP 默认开启,是放大攻击的主要来源
  • 容器化部署时确认 Pod 网络策略没有把缓存服务放开到整个集群

加固要点

加固要点
1. 监听地址限制:-l 127.0.0.1 或指定内网地址
2. 关闭 UDP:新版本默认关闭,老版本加 -U 0
3. 防火墙只放行应用服务器来源,不按网段全放
4. 不把明文敏感数据写入缓存键值
5. 监控命中率与内存使用,避免被当作存储滥用

核查命令

核查命令
ss -lunp | grep 11211     # 检查是否监听 UDP
ss -ltnp | grep 11211     # 检查 TCP 监听地址是否 0.0.0.0
# 快速验证未授权可读(授权范围内自查):
# printf 'stats\r\n' | timeout 2 nc 127.0.0.1 11211 | head -5
# 查看进程启动参数确认 -l 与 -U 设置
ps -ef | grep -i memcached | grep -v grep

加固项与效果

加固项效果注意
限制监听地址切断外部直接连接需确认应用侧配置同步更新
关闭 UDP(-U 0)消除放大攻击面老版本必须显式关闭
来源限制只允应用网段访问按应用逐个开通,避免整网段放行
升级版本获得默认安全配置与修复升级前评估客户端兼容性
Memcached 1.5.6 起默认禁用 UDP:升级版本本身即可消除主要的放大面;无法升级时必须显式加 -U 0。
缓存内容不等于非敏感数据:会话标识、令牌、用户资料经常直接写在缓存里,未授权读取等同凭据泄露,需按泄露流程处置。

易错点

  • 只关 TCP 不管 UDP:老版本默认开启 UDP,放大攻击面仍然存在
  • 监听 0.0.0.0 且无来源限制:内网任意主机都能读取或清空缓存,清空本身即可造成缓存击穿与数据库压力骤增
  • 把完整用户对象与令牌写入缓存:缓存一旦泄露,影响等同账号泄露
  • 容器环境未配网络策略:缓存服务被集群内任意 Pod 可达,隔离设计形同无效

数据来源与参考

  • Memcached 官方文档(Security 与 -U 选项说明)
  • US-CERT UDP 放大攻击通告
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌