🔒 修复 CustomEvent 通信密钥泄露漏洞 by CodFrm · Pull Request #1317 · scriptscat/scriptcat
Checklist / 检查清单
- Fixes mentioned issues / 修复已提及的问题
- Code reviewed by human / 代码通过人工检查
- Changes tested / 已完成测试
Description / 描述
修复页面脚本通过 hook window.CustomEvent 构造函数窃取 content↔inject IPC 通信密钥的权限提升漏洞。
漏洞: inject 脚本在页面上下文中使用全局 CustomEvent / dispatchEvent / addEventListener,页面脚本可以 hook 这些全局对象,从事件名中提取通信密钥(flag),然后伪造任意 GM_* API 调用(包括 GM_xmlhttpRequest、GM_cookie 等)。
修复: 在模块顶层(content script document_start 注入时,早于任何页面脚本执行)保存原生 API 引用,后续通信全部使用保存的引用,不再直接访问可被篡改的全局对象。
参考 v1.3 packages/message/common.ts 的做法。
Screenshots / 截图
N/A