WordPress 插件 Bricksforge 被披露存在一个未认证任意文件上传漏洞,编号 CVE-2026-85097,可导致远程代码执行(RCE)。安全厂商遥测显示,攻击者自 2026 年 10 月 7 日起已开始大规模利用,Patchstack 已上线缓解规则。Bricksforge 是建站工具 Bricks Builder 的扩展插件,凡使用 3.1.8.9 及更早版本、且开放前台表单提交的站点都处于风险之中。
事件概述
漏洞影响 Bricksforge 3.1.8.9 及以下全部版本,官方已在 3.1.8.10 中修复,属于 CWE-434 不受限文件上传类型。Patchstack 观测到的最早利用时间为 10 月 7 日 21:47:17 UTC:绝大多数请求打向插件自有的表单提交接口 POST /wp-json/bricksforge/v1/form_submit,其余指向 /wp-admin/admin-ajax.php 并携带 bricksforge_form_submit 动作,且都带有特制的 temporaryFileUploads 参数。
技术细节
漏洞根因在于插件对文件校验的两套标准不一致。Bricksforge 在文件首次上传时会正确校验 MIME 类型,但表单正式提交时却完全信任客户端回传的文件元数据,尤其是 temporaryFileUploads 参数里的 url 字段未做任何校验。攻击者的利用链路分四步:先向未认证的 bricksforge_regenerate_nonce AJAX 端点索取合法 nonce;再上传一个同时是合法 GIF 图片、又内嵌 PHP 代码的多态文件,让它通过 MIME 检查并落到临时上传目录;随后提交表单,使服务端文件路径仍指向那张已通过校验的图片,而 url 字段却以 .php 结尾;插件信任这份被篡改的元数据,把图片内容写到 PHP 路径下,请求触发时即执行内嵌代码。
问题代码分别位于 bricksforge/includes/elements/pro-forms/actions/init.php 与 base.php。遥测显示,约 95% 的载荷中服务端路径以 .gif 或 .png 结尾,而目标地址是 PHP 文件,构成典型的路径与扩展名错配特征;部分载荷把文件名写成 login_admin_*.php 并放进常规的 /wp-content/uploads/2026/10/ 目录,以规避清理。
影响评估
该漏洞 CVSS 3.1 评分 9.8,Patchstack 直接给出 10.0,攻击向量为网络可达、无需认证、无需交互。一旦成功,攻击者即获得服务器上的任意 PHP 执行能力,可植入 WebShell、篡改内容并建立持久后门。对站长而言,这类漏洞的危害不止单个站点:同一主机上的其他站点往往共享文件系统权限,被拿下的常常是整台服务器。此类漏洞也再次印证——校验逻辑分散在两处却只校验其一,正是插件层失守的常见根源。
修复建议
- 立即把 Bricksforge 升级到 3.1.8.10 或更高版本,这是唯一根治手段。
- 在 Web 服务器或 WAF 层禁止上传目录执行 PHP:对 /wp-content/uploads/ 及其子目录统一关闭脚本解析,可阻断绝大多数同类上传型 RCE。
- 若不便于立即升级,限制或临时关闭插件的文件上传与 nonce 再生 AJAX 端点,仅允许可信来源访问。
- 排查上传目录中的异常 PHP 文件,重点核对以 login_admin_ 开头或与图片同名的可疑文件,并检查 10 月 7 日之后的异常 POST 记录。