admin 管理员组

文章数量: 1184232

过去很长一段时间,我几乎什么浏览器插件都敢装:调试、翻译、抓包、下载、效率提升……直到我拆了一款热门“资源分享”类扩展的代码,才真正意识到:很多扩展拥有的权限,几乎等同于在你的浏览器里放了一个“贴身代理”。
很多人还停留在“插件 ≈ 一个小工具”层面,但从权限模型看,它们可以做到的远超你的想象。

目的:本文科普浏览器扩展权限风险、攻击面、审查方法与应急处置。所有示例仅用于安全意识教育,禁止用于任何非法用途。

触发案例

起因是我分析一款“资源整合分享”类插件,发现它在后台脚本里枚举指定站点所有 Cookie,再混淆打包上传。它用到的 API 全部是“合法”扩展接口;代码还做了层层混淆,普通用户根本不会注意。

这让我开始系统梳理:浏览器插件究竟能拿到多少“你以为安全”的东西?


常见误区

误区 真实情况
插件只在“我点它”时运行 有 background/service worker 事件驱动,能长期潜伏
页面 JS 读不到的(如 HttpOnly Cookie)插件也读不到 扩展是特权层,可用 chrome.cookies API
没输账号密码就安全 登录态 / Token / LocalStorage / 页面变量都可能被取走
流行扩展一定可信 项目可转手,后期版本可“变质”
Manifest V3 已经杜绝恶意 只是收紧部分网络拦截,核心敏感面仍在

插件到底能干啥?

理论上可以:

  • 读取你所有网页的内容
  • 获取所有Cookie、localStorage,包括登录状态
  • 监听你在网页上的操作(比如输入、点击)
  • 注入自己的脚本,甚至“劫持”你的页面
  • 远程把这些数据上传到第三方服务器

“HttpOnly Cookie 也能被浏览器插件读?”技术解释

页面脚本受 document.cookie 限制,而浏览器插件调用 chrome.cookies.getAll 走的是浏览器内部特权接口,不受 document.cookie 限制。

前提:

  • manifest 声明 cookies 权限
  • host_permissions 匹配域或 <all_urls>
  • 没有被企业策略额外隔离

所以:HttpOnly 防的是 XSS 读取,不防“被你自己安装的特权扩展”。

真实案例:Cookie窃取

举个简单的例子,如果你登录了某个重要网站(比如GitHub、公司后台),插件是可以直接拿到你的登录Cookie的,然后在别的地方“复现”你的登录状态,直接控制你的账号!

恶意插件示例(最小代码示例,仅警示用途)

省略Manifest配置…

            
            
            

本文标签: 再无 插件 浏览器