Simple Membership 安全通知
如果您收到了我发来的指向此页面的电子邮件,是因为您的网站似乎正在运行 Simple Membership(由 smp7 / wp.insider 开发的 WordPress 会员插件,位于您的文件 /wp-content/plugins/simple-membership/ 中)的一个版本,该版本处于已知安全问题的受影响范围内。本页面解释了该问题是什么、如何检查您所运行的版本、如何更新,以及事后最重要的后续步骤。
该问题是 CVE-2026-15930,即通过插件自身的会员注册表单实现的未经身份验证的管理员账号接管漏洞。它影响 4.7.8 之前的每一个版本,并在 4.7.8 版本中修复。如果您正在运行早于 4.7.8 的任何版本,请将 Simple Membership 更新到 4.7.8 或更高版本(后续发布的 4.7.9 同样保留了该修复,因此也可以使用)。
有一点需要说清楚,因为它与我发出的其他一些通知不同:不存在安全的旧版本。这不是一个在某个时间点被引入、随后又被修复的缺陷。它从插件最早发布的版本开始就一直存在,直到 4.7.7 为止,所以“我的安装版本太旧,不会受影响”在这里并不成立。唯一不受影响的版本是 4.7.8 及更新版本。
此通知同样 不 取决于您网站的配置方式。没有任何设置需要被开启:插件一旦启用,就会发布一个承载其注册表单的 membership-registration 页面,因此一个未做任何改动的默认安装也会把该表单暴露给未登录的访客。如果您的版本早于 4.7.8,及时更新是值得的。
这是一个 插件 漏洞,而不是 WordPress 核心漏洞。即使 WordPress 完全保持最新,只要 Simple Membership 插件本身处于受影响版本,也 不会 保护您。
这封邮件是真实的吗?
是的。这是独立安全研究人员发出的善意、负责任披露通知。我 不会 向您索要金钱、密码或网站访问权限,我也 没有 尝试破解它、向其提交任何内容或利用任何东西。
我所做的只是查看您的网站向每位访客公开可见的文件(与您的主页公开的方式相同),并记录插件发布的版本号。我特意 没有 提交您的注册表单,也没有向其发送任何内容,此检查的任何部分都不会触及您的数据、您的后台或您网站的任何私有部分(更多详情见下方的 我做了什么、没做什么)。
如果您想验证我的身份,请参阅此页面底部的联系方式和 关于 页面。
为什么这很重要
Simple Membership 为 WordPress 网站添加了会员等级和受保护的内容,并为访客提供一个公开的注册表单,使他们可以自行注册会员。该表单正是此问题的切入点。
在受影响版本中,插件在保存提交的详细信息之前,并不会检查 WordPress 是否真的创建了这个新账号。当所请求的注册因所选用户名与某个已存在的账号冲突、而无法作为真正的新用户被创建时,插件仍会照旧进行,并把提交的详细信息写入 该已存在的账号。实际效果是:填写在公开注册表单中的电子邮件地址和密码,变成了网站上某个已有账号的登录凭据。而实际上最终被覆盖的账号往往是网站最初的管理员账号,这就把网站的控制权交给了填写该表单的人。
有两点值得明确说明。第一,不需要登录,也不需要任何错误配置:一个匿名访客,加上插件自行发布的注册页面,就已足够。第二,其后果是管理员级别的控制权,而不是有限的数据泄露,这正是为什么这里的建议是立即更新,而不是把它并入您下一次的例行维护窗口。
我以网站所有者需要采取行动的水平描述这一点,不再深入。我不会发布允许他人重现此问题的细节,我也希望您不要尝试在自己的网站或他人的网站上进行尝试。按照下面的描述读取您的版本号,会告诉您决定采取什么行动所需的一切信息。
如果我的电子邮件引用了此问题,这意味着您的网站报告的版本早于 4.7.8。我没有测试您的特定网站是否可利用;我所观察到的只是版本。
我受影响吗?
这归结为一个问题:您正在运行哪个版本的 Simple Membership? 您不必相信我的话,有三种方法可以检查。与我写过的一些插件不同,这三种方法在这里都是可信的,因为它们报告的都是同一个底层版本号。
从 WordPress 后台查看(权威来源):
- 登录您的 WordPress 仪表盘(通常位于
yourdomain.com/wp-admin)。 - 进入 插件,然后是 已安装的插件。
- 找到 Simple Membership,其文件夹为
simple-membership的条目,并记下其名称下方显示的版本。
从公开清单文件查看(无需登录): 在浏览器中打开 yourdomain.com/wp-content/plugins/simple-membership/readme.txt。靠近顶部的 Stable tag: 行就是您的安装所报告的版本,这也正是我所读取的同一个公开文件。
从页面源代码查看(无需登录): 查看您网站上任意页面的源代码,并在 /wp-content/plugins/simple-membership/ 下查找插件的样式表 css/swpm.common.css。附加在其后的 ?ver= 数字就是插件版本,它取自插件自身的版本常量,因此对于这个插件而言,这是一个可靠的读数,而不是一个陷阱。
然后应用此规则,并注意版本比较是 数值上 的,而不是字母上的,所以 4.7.10 会比 4.7.8 更新,尽管作为文本看起来它更小:
- 早于 4.7.8 的任何版本: 受影响。请立即更新。不存在某个更低的版本会重新变得安全的临界点。
- 4.7.8 或更新: 已修复。这包括 4.7.9,它同样保留了该修复。
关于 Simple Membership 附加组件的说明。 该插件的付费附加组件以 独立插件的形式安装,位于各自的文件夹中,采用各自独立的版本线。附加组件的版本号完全不能说明此问题的情况。真正重要的版本是核心 Simple Membership 插件(文件夹为 simple-membership)的版本,可通过上述任意一种检查方法获得。
如何升级
最安全的做法是通过 WordPress 本身进行更新,并先进行备份:
- 在做出更改之前备份您的网站(文件和数据库)。大多数主机提供商提供一键备份功能,或者您可以使用 WordPress 备份插件。
- 在 WordPress 后台,转到 仪表盘 然后 更新,或 插件 然后 已安装的插件。如果列出了 Simple Membership 的更新,请从此处安装。
- 如果您更喜欢使用命令行,WP-CLI 也可以完成同样的操作:
wp plugin update simple-membership。 - 如果没有出现更新,您可以直接从 WordPress.org 目录中的插件页面获取最新版本, Simple Membership,然后通过 插件 然后 安装插件 然后 上传插件 进行更新。
- 更新后,使用上述步骤确认新版本号(4.7.8 或更高版本),并检查您的注册表单、会员等级和受保护内容是否仍正常工作。
如果您使用 Simple Membership 的付费附加组件,请将它们与核心插件一同更新,因为它们的发布版本通常是配对的。
趁着在后台,也值得确认 WordPress 核心 和您的其他插件是否都已是最新版本,因为同样的原则适用于它们全部。
更新之后
更新到 4.7.8 或更高版本即可解决该问题。这里有一个后续步骤,比通常的例行检查更为重要,即使您确信没有发生任何事情,也值得阅读。
通常的建议在这里会失效。 当人们在发生账号接管类缺陷后检查网站时,会查找陌生的、新增的 管理员账号。这种检查在这里不会有任何发现,因为没有创建新账号。一个已存在的账号被 覆盖,所以管理员的数量不会改变,列表中也不会出现无法识别的名称。发生变化的,是您已经认识的某个账号上的登录凭据。因此:
- 检查每个管理员账号上的电子邮件地址。 在 WordPress 后台,进入 用户,筛选出 管理员,并确认每一个账号仍然带有它应有的电子邮件地址。一个电子邮件地址不再属于正确人选的管理员账号,就是这个问题的破绽所在。
- 重置您的管理员账号的密码,以及任何其他重要账号的密码。即使电子邮件地址看起来都正确,也请这样做。
- 在
wp-config.php中重新生成 WordPress 的密钥和盐值是一个明智的配套步骤(新值在官方 密钥生成器 中只需一键即可获取; 更换它们会使所有用户退出登录一次)。
请注意,更新可以关闭漏洞,但不能撤销已经发生的访问权限获取。 如果有人在您更新之前接管了某个账号,更新之后他们仍然持有那些登录凭据,这正是上面的密码重置之所以重要的原因。如果您发现了令您担忧的内容,请将其视为任何其他疑似未经授权的访问来处理。
我无法得知您的网站上是否发生了任何事情,我也没有查看。这是一份预防性通知,而非事故报告。
我做了什么、没做什么
为了完全透明地说明我邮件背后的检查过程:我只读取了您的网站已经向每位访问者提供的两个公开文件,具体来说是插件公开的 readme.txt 文件和您的主页。我 没有 访问您的 WordPress 后台、数据库或网站的任何私有部分。
特别是,我 从未提交过您的注册表单,也从未向其发送任何内容。没有提交、测试或利用任何东西。这比大多数此类页面更为重要,因为注册表单正是此问题涉及的确切对象,所以“我没有触碰它”是披露与入侵之间的全部区别。
我还故意不发布那些会帮助他人利用此问题的细节。上面的描述仅停留在网站所有者需要的级别,并且我没有链接任何概念验证代码。
这是一项 基于版本的观察:您的网站报告了一个早于 4.7.8 的版本。处于该范围内的网站可能已经通过其他方式(例如 Web 应用防火墙或回溯移植的修复)受到保护。此通知并不是在断言您的网站在我检查时是可被利用的。
我没有网站管理员 / 我卡住了
如果您不是负责维护网站的人,请将此页面转发给负责的人(您的网站开发人员、机构或主机提供商)。他们会很快识别出上述步骤。
如果您自己维护网站并遇到困难,我很乐意免费帮助您指明正确的方向。请使用下面的联系方式联系我。
联系方式
Evan Harris,安全研究员
- 邮箱:security@mail.mcpsec.dev
- X:@Evan__Harris
- GitHub:eharris128
- LinkedIn:Evan Harris
我就此类问题主动联系,纯粹是为了帮助运营者保护自己的网站。如果您不希望再次收到联系,请告诉我,我会遵从。
参考
官方公告与追踪
开发者 / 插件