安全严重性:中等。CWE 284、CWE 862 和 CWE 749。已在 Firefox 150 和 ESR 140.10 中修复。Bugzilla 2022419。已授予漏洞赏金。
FormAutofillParent.sys.mjs 中的四个消息处理器仅用于自动化测试。它们在没有 Cu.isInAutomation 保护的情况下随生产版本发布。该 actor 以 allFrames 注册,且没有来源限制。任何内容进程都可以调用它们。这些处理器会读取所有已保存的卡片和地址。它们会注入任意自动填充数据。它们会按 GUID 删除已保存的支付方式。
FormAutofill:GetRecords returns all saved cards and addresses
FormAutofill:SaveAddress injects an arbitrary address
FormAutofill:SaveCreditCard injects an arbitrary card
FormAutofill:RemoveCreditCards deletes cards by GUID
下面的截图是在存在漏洞的 Firefox 上的实际运行结果。未受保护的处理器完整返回了已保存的记录。数据是合成的,演示在本地进行。

在受影响的构建版本上打开浏览器控制台并运行 poc.js。它会获取 FormAutofill 父级 actor。它会外泄所有已保存的卡片和地址。然后它会演示注入和批量删除。
可从被攻破的内容进程中完整外泄已保存的卡片和地址。可静默注入攻击者的自动填充数据,并在会话间持续存在。可破坏性删除所有已保存的支付方式。每一项都只需一条消息即可触发。
为每个仅供测试的处理器添加保护。
if (!Cu.isInAutomation) {
throw new Error("Test-only message received outside automation");
}
Abdulaziz Alasaiqah · https://azoz.my/writeups.html