我的问题的基础是这项研究: https://www.usenix.org/system/files/conference/usenixsecurity17/sec17-sanchez-rola.pdf
研究中的相关引述:
“扩展检测的工作原理是尝试检测扩展使用的资源(例如图标)。因此,网站所做的就是检查资源是否存在。如果存在,它就知道扩展安装的可能性很高。”
“它使用的另一种方法是滥用内容安全策略,即使用该功能来确定内容是否加载。”
“发现了一种枚举最新版本 Web 浏览器中已安装的浏览器扩展的方法。通过监视浏览器对资源访问的响应,可以使用“定时侧信道攻击”来枚举已安装的浏览器扩展。”
“该网站测量了返回带有虚假资源的虚假扩展请求的时间,以及请求带有虚假路径的真实扩展所需的时间。通过比较时间,可以发现已安装的扩展。”
**
我的问题:
**
如何防止网站收集已安装的 Chrome 扩展程序的信息?是否有任何 Chrome 设置可以更改以实现此目的?还有其他想法吗?
禁用 Javascript 不是一个选项。
答案1
正如链接的论文所指出的,这不是一个新问题,而是一个普遍问题的一部分,一段时间以来,它一直影响着所有实现任何类型扩展的浏览器。
在 Chrome 扩展程序的第一个版本被发现存在漏洞后,Google 在第二版中添加了一种安全机制,以防止访问扩展程序资源(除非明确允许)。摘自同一篇文档:
在清单的第一个版本中,对于从第三方网站访问的扩展资源没有任何限制。正因为如此,各种各样的工具纷纷发布,利用这一弱点来枚举用户扩展并利用其漏洞 [23]。为了减轻这种威胁,谷歌决定在清单文件的第二个版本中引入专门的访问控制设置。此扩展使用参数 (web 可访问资源) 来指定可在网站环境中使用的打包资源的路径。资源可通过 URL chrome-extension://[extID]/[path] 获得。但是,除非扩展资源之前已在其 manifest.json 中被列为可访问,否则浏览器会阻止对扩展或其资源的任何导航访问。此解决方案专门设计用于在保护用户隐私的同时最大限度地减少攻击面。
我们有理由期待谷歌将继续监控形势并在必要时推出进一步的改进措施。
但是,从版本 2 开始,扩展机制使我们能够看到哪些扩展允许通过 Web 访问其资源,这意味着我们确实有办法在不禁用 JavaScript 的情况下防止此安全问题:我们可以卸载任何以这种方式公开资源的扩展。
关于扩展是否公开资源的信息可以在扩展的清单中找到:
"web_accessible_resources": [
"images/*.png",
"style/double-rainbow.css",
"script/double-rainbow.js",
"script/main.js",
"templates/*"],
如果你不确定在哪里可以找到 Chrome 扩展程序的清单文件,这个 Stack Overflow 问题有针对 Windows、Mac 和 Linux 的答案。