Mozilla 在 MFSA 2026-30 中致谢的报告者:Abdulaziz Alasaiqah。 本目录包含该漏洞的真实复现测试框架。它 旨在针对本地下载的易受攻击 Firefox 构建运行。它 绝不接触任何在线或第三方系统。
匹配的 PoC 仓库:https://github.com/defineid/SkeletonKey
技术分析文章:本作品集中的 writeup-ff-autofill.html。
| 字段 | 值 | 来源 |
|---|---|---|
| CVE | CVE-2026-6765 | MITRE cvelistV5(状态 PUBLISHED,CNA Mozilla) |
| 标题 | Form Autofill 组件中的信息泄露 | NVD · MFSA 2026-30 |
| 严重性 | 中等 · CVSS 5.3 · AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N | NVD |
| CWE | 359 · 私有信息暴露 | NVD |
| 修复于 | Firefox 150 · Firefox ESR 140.10 · Thunderbird 150 / 140.10 | MFSA 2026-30 |
| Bug | bugzilla.mozilla.org/show_bug.cgi?id=2022419(安全受限) | NVD 参考 |
| 报告者 | Abdulaziz Alasaiqah | MFSA 2026-30 |
FormAutofill JSWindowActor 对(内容进程中的 FormAutofillChild 与
父进程中的 FormAutofillParent)交换消息。在当前
mozilla-central 中,FormAutofillParent.receiveMessage 将允许集合之外的任何内容
置于自动化检查之后:
// toolkit/components/formautofill/FormAutofillParent.sys.mjs (fixed tree)
if (!FORM_AUTOFILL_MESSAGES.has(name) && !Cu.isInAutomation) {
return undefined;
}
源码注释指出,Save 和 Remove 处理器仅由测试调用:
FormAutofill:SaveAddressFormAutofill:SaveCreditCardFormAutofill:RemoveAddressesFormAutofill:RemoveCreditCards在受影响的构建中,这些仅用于测试的处理器无需 Cu.isInAutomation 门控即可访问,因此内容上下文可以触达本不应面向 Web 内容的 FormAutofill 路径。Mozilla 将由此产生的暴露评定为已存储自动填充数据的信息泄露。
关于可达性说明:getActor 位于 windowGlobalChild 上,这是一个仅 chrome 可用的属性。普通页面脚本永远无法看到它,因此威胁模型是攻击者已经影响的内容进程(渲染器被攻陷或内容侧代码路径)发出 actor 消息,而不是普通网页。该测试工具尝试内容路径,并如实报告父进程是否响应或边界是否守住。
确切的泄露原语位于 bug 2022419 中,该 bug 受安全限制。此测试工具演示的是仅用于测试的处理器在已修复构建中被阻止的可达性。使用
--message传入你自己报告中使用的精确调用。
攻击者已经影响的内容进程(渲染器被攻陷或内容侧代码路径)发送一条本应只来自测试工具的 FormAutofill actor 消息。在存在漏洞的构建上,父进程会响应。在已修复的构建上,自动化门控会将其丢弃。
https://ftp.mozilla.org/pub/firefox/releases/140.9.0esr/ 下载匹配的平台构建。pip install marionette-driver
使用全新配置文件并启用 Marionette 启动存在漏洞的构建版本:
/path/to/firefox --marionette --no-remote --profile ./poc-profile about:blank
然后在 about:preferences#privacy 中添加一个合成的已保存地址和一张合成的卡片,例如姓名 POC TESTER,卡号 4111 1111 1111 1111。这仅是测试数据。
python3 poc.py # default handler and 127.0.0.1:2828
python3 poc.py --help # options
python3 poc.py --message FormAutofill:SaveAddress
getActor 仅适用于 chrome,因此在内容沙箱中,普通测试框架会报告该 actor 不可达(参见 poc-run.png)。要从实际持有该 actor 的上下文中驱动消息,请在存在漏洞的构建上启用浏览器工具箱(devtools.chrome.enabled 和 devtools.debugger.remote-enabled),使用 Ctrl+Alt+Shift+I 打开它,然后在内容进程控制台中从 windowGlobalChild 获取该 actor,并使用相同的合成载荷调用 sendQuery。这在不涉及任何真实数据的情况下复现了内容进程被攻陷的威胁模型。
Cu.isInAutomation 为 false,同一调用返回 undefined。脚本会报告该门控已生效。此测试框架是根据公开记录和当前 mozilla-central 源代码编写的。它已在此处针对本地 Firefox 140.11.0esr 构建执行,该构建已针对 CVE-2026-6765 打好补丁。捕获的运行结果位于 poc-run.png:从内容上下文中无法到达 FormAutofill actor(windowGlobalChild.getActor 未向内容进程暴露),因此父进程边界得以保持。这是在已修复构建上的正确且诚实的结果。
要观察边界被跨越,你需要一个存在漏洞的构建(Firefox 150 之前或 ESR 140.10 之前,例如 140.9.0esr),以及一个预置了合成自动填充数据的一次性配置文件,并按照上述浏览器工具箱回退方案,从内容进程上下文驱动该 actor 消息。请将 --message 调整为你原始报告中使用的确切原语。
此项目针对的是本地下载的构建,使用合成数据,用于撰写作者本人已报告且已修补的 CVE 的分析文章。它不攻击任何在线或第三方服务。