UpdraftPlus 的远程管理组件 UpdraftCentral 出事了:攻击者拿到合法 dashboard 私钥,在 10 月 18 至 19 日连续 18 小时里用签名合规的指令给连上来的 WordPress 站点装后门插件。没有 CVE:不是代码漏洞,是密钥泄露,装哪个版本都挡不住。
事件概述
Patchstack 与 Nethemba 各自记录到同一批签名的 plugin.upload_plugin 指令,首次观测为 10 月 18 日 15:32。免费版 1.26.11、付费版 2.26.11.26 与更老版本表现一致,都是照章执行。无厂商修复,Patchstack 已部署拦截规则。
TeamUpdraft 10 月 19 日披露 teamupdraft.com 在 10 月 17 至 18 日被未授权访问,客户库可能被读取,含哈希口令与 UpdraftCentral 连接密钥。
技术细节
机制很朴素:站点连接 dashboard 时生成 RSA 密钥对并保存公钥,此后只要指令带 dashboard 私钥签名就执行,权限等于建立连接的用户。
另外「Add this website to UpdraftCentral」复选框在 admin.php 里硬编码为选中,只做备份的站点也可能已持有密钥。
攻击分两步:先用不存在的密钥向 probe.central.updraftplus.com 探活,确认站点接受远程指令;几小时后再用真密钥发 plugin.upload_plugin,WordPress 走标准安装器装好并激活。后门钩住每个请求,等带 32 字符 token 的参数,命中即建 Editor 账号并授予 manage_options 与 install_plugins,再写认证 cookie 登录,绕过登录表单与 2FA。
样本在 PHP 8 上会在 token 校验前抛致命错误,受影响站点未缓存的请求直接 500。流量侧特征更可靠:真 dashboard 的 UA 形如 class-udrpc.php/2.0,攻击流量精确等于「WordPress/6.4; class-udrpc.php」。
影响评估
关键在密钥,不在插件。密钥存在 option updraft_central_localkeys 里,从 dashboard 移除站点不会删它,也不过期——2025 年 11 月的密钥到 2026 年 10 月仍被接受。两个来源 IP 一天内就换过,封 IP 不是控制手段。
400 万安装量不等于 400 万受害站点,只有持密钥的站点在风险内。仍在 1.26.4 及以下的站点另有 CVE-2026-10795。
修复建议
- 删密钥:wp option delete updraft_central_localkeys,或后台 Advanced Tools → UpdraftCentral 逐条删除,删后备份照常。
- 排查插件列表里的 Site Health Cache 之类可疑项(含 mu-plugins),描述固定为「Small maintenance toolkit: keeps option storage tidy.」;按 Editor 角色却带 manage_options 筛账号。
- 日志检索上述 IP 对根路径的 POST 与形如 ?a=32位token 的参数;同时升级 UpdraftPlus 1.26.12 / 2.26.12(自动断开 10 月 18 日 22:00 英国时间前的连接)并改 TeamUpdraft 口令。
- 确认有后门账号即按完全失陷处理:用 10 月 17 日前备份恢复,轮换数据库凭证、wp-config 盐值与 SSH 密钥。