Drupal 安全团队于 2026 年 10 月 14 日发布更新,修复核心模块 Field UI 的关键远程代码执行漏洞 CVE-2026-108097,Drupal 自有风险评分 19/25(关键级),NVD 给出的 CVSS 为 9.8。攻击者无法仅通过 Drupal 核心触达该缺陷,需借助贡献模块或自定义代码,而至少一条已知利用路径不需要登录。截至 10 月 15 日尚无公开利用代码与实际攻击报告。
事件概述
Field UI 模块(模块名 field_ui)是 Drupal 提供字段管理后台页面的核心模块。该模块被标准安装配置默认启用,也就是说除非有人手动移除,基于该配置搭建的站点都带着它。
修复版本:11.4.x → 11.4.10,11.3.x → 11.3.19,10.6.x → 10.6.19,12.0.0 beta → 12.0.0-beta2(不用于生产)。11.2.x 及更低、10.5.x 及更低,以及已停止支持的 Drupal 8/9 均不会获得修复。11.3.x 与 10.6.x 的安全支持将于 2026 年 12 月结束。
技术细节
根因在于 Field UI 构建后台表格的方式。Drupal 用渲染数组生成 HTML,而表格元素的预渲染(pre-render)步骤会通过 call_user_func_array 执行每一行 #region_callback 所带的 PHP 回调,且未做任何校验。Drupal 渲染器自 2019 年的 8.8 版本起就拒绝执行不受信任的渲染回调;但表格元素自身的方法被视作受信任,于是预渲染照常执行,检查根本没作用到那个回调上。官方说明该逻辑至少从 2020 年的 8.9.0 起就存在。
修复后改为从行自身的 region 值读取区域,该值不是已知区域时回退到表格的隐藏区域或第一个区域。这意味着自定义代码若在 field_ui_table 行上设置了 #region_callback,升级后这些回调不再执行,需在更新后测试字段管理页面。
影响评估
该漏洞的棘手之处不是利用难度,而是暴露面难以盘点。安全团队明确表示核心不可直接利用、存在多条经贡献模块的利用路径,却没公布是哪些模块。在官方点名之前,装有大量贡献模块的部署只能按「已知失陷」假设。
据 drupal.org 统计,10 月 4 日开始的一周内上报核心版本号的 531,499 个站点中,有 151,442 个(约 28.5%)运行在本次公告列为受影响、且不会获得修复的分支上。Drupal 自有先例也提示紧迫性:2026 年 5 月的核心 SQL 注入漏洞在公告后 48 小时内即被实际利用并进入 KEV;安全团队 10 月 12 日就已发布预告。同批还包括贡献模块 Entity List 的同类关键漏洞 CVE-2026-108099(需单独升级到 3.0.10,更新核心不会带动模块更新)。
修复建议
1. 立即升级核心到对应修复版本,不要等到周末。若已停止支持(11.2.x 及以下、10.5.x 及以下、Drupal 8/9),则无补丁可打,只剩卸载 field_ui 或尽快升级两条路。
2. 无法立刻升级时,可临时卸载 field_ui 模块。公告明确表示卸载该模块「在站点完成更新前可提供防护」,代价是字段与显示管理页不可用,需设定完成打补丁的截止时间。
3. 盘点贡献模块与自定义代码:官方公布受影响模块之前,应假设任意贡献模块都可能是攻击路径。部署 Drupal Steward 的站点(Acquia、Pantheon 等提供该 WAF 服务)可阻断部分已知攻击向量,但未覆盖全部利用方式,仍需照常升级。
drush pm:list --status=enabled | grep -i field_ui