-
Notifications
You must be signed in to change notification settings - Fork 307
Description
发现(按严重度)
高风险:翻译缓存写入页面 localStorage,同站点脚本可读,可能泄露原文/译文
说明:缓存 key/value 直接包含待翻译文本与译文映射;在内容脚本里用 localStorage 等同写入当前站点存储,站点自身 JS 可读取这些 flcache_ 项。
中高风险:API Key/Secret 明文保存在扩展配置中
说明:local:config 直接 JSON.stringify(config) 保存,config 内含多家服务 token/AK/SK/Secret。若本机被入侵、浏览器配置被导出或调试暴露,会泄露密钥。
中风险:部分服务把密钥放在 URL 查询参数
说明:?key=... 形式比请求头更容易进入代理、日志、抓包记录。
中风险:调试日志输出文本内容/请求体/响应体
说明:日志包含原文片段、完整请求体、响应内容;在共享设备、远程调试、日志采集场景会造成信息外泄。
中风险:任意网页可触发 fluent:prefill 事件,诱导改写翻译目标端点
说明:脚本注入在 <all_urls>,且默认挂载监听器。页面可发自定义事件触发确认框,若用户误确认,可把后续翻译流量导向攻击者端点(虽有 confirm,但仍有社工面)。
隐私提示(设计行为):翻译文本会发送到所选第三方服务
说明:除本地翻译模式外,文本(及部分上下文如标题)会出站,这是功能需要,但属于隐私暴露面。
未发现的点
建议(优先级)
把缓存从页面 localStorage 改到扩展私有存储(browser.storage.local / IndexedDB in extension context)。
密钥改为独立加密存储(至少使用 chrome.storage.session + 可选主密码),避免整份 config 明文落盘。
禁止在 URL 中传 key,统一 Authorization 头。
默认关闭敏感日志,发布版剔除请求/响应内容日志。
fluent:prefill 增加来源校验(白名单域名 + 签名/nonce),并默认不在所有站点启用。
审查基于 FluentRead 仓库当前快照 0864df5 的静态代码阅读(未做动态抓包/沙箱运行)。