从0开始入门Chrome Ext安全(二):安全的Chrome Ext
字数 1939 2025-08-18 11:39:11
Chrome扩展安全入门指南(二):Chrome扩展的安全机制与风险分析
1. Chrome扩展体系概述
随着Chromium内核的普及(包括Microsoft Edge和众多国产浏览器),Chrome扩展的安全问题日益重要。本指南将深入分析Chrome扩展的安全机制和潜在风险。
2. Chrome扩展脚本类型与安全特性
2.1 content-script脚本
特性:
- 与页面同时加载
- 可以访问DOM
- 可调用有限的Chrome API
- 通过manifest.json配置加载时机:
document_idle(默认):DOM加载完成后,window.onload触发前document_start:CSS加载后,DOM构造前document_end:DOM完成后,资源加载前
可访问API:
- i18n
- storage
- runtime部分功能(connect, getManifest, getURL, id等)
安全问题:
- 可获取和操作页面所有DOM,包括非HttpOnly的cookie
- 可通过XHR将敏感数据外传
- 配置
all_frames时会作用于所有iframe,增加风险
2.2 popup/background脚本
特性:
- 不能直接访问DOM
- 事件驱动执行
- background脚本会持续执行直到所有端口关闭
安全能力:
- 可调用绝大多数Chrome API
- 通过
chrome.tabs.executeScript可间接操作DOM
2.3 devtools脚本
特殊能力:
- 操作开发者工具面板
- 访问三个专用API:
- chrome.devtools.panels
- chrome.devtools.inspectedWindow
- chrome.devtools.network
3. 关键Chrome API安全分析
3.1 chrome.cookies
权限要求:
{
"permissions": [
"cookies",
"*://google.com/*"
]
}
功能:
- 获取、设置、删除指定域的所有cookie
- 监听cookie变更事件
风险: 可窃取所有cookie,包括会话凭证
3.2 chrome.desktopCapture
功能:
- 捕获屏幕、窗口或标签页的实时媒体流
- 生成一次性媒体流ID
风险: 可静默截取用户屏幕内容
3.3 chrome.pageCapture
功能: 将任意标签页保存为MHTML格式
限制: 需要知道目标tabId
3.4 chrome.webRequest
权限要求:
{
"permissions": [
"webRequest",
"webRequestBlocking",
"*://*/*"
]
}
功能:
- 观察、拦截和修改网络请求
- 可阻止请求或重定向到其他URL
- 可修改POST请求内容
风险: 可实施中间人攻击,篡改网络流量
3.5 chrome.downloads
权限要求:
{
"permissions": [
"downloads",
"downloads.open"
]
}
功能:
- 创建和管理下载
- 打开下载的文件或所在目录
- 对危险文件类型(如.exe)会显示警告
风险: 可下载并执行恶意文件
3.6 chrome.tabs
基础权限: 大部分功能无需特殊权限
高级功能权限:
"tabs":修改tab属性"activeTab":在当前标签页执行脚本
风险能力:
- 静默修改标签页URL
- 执行任意JavaScript代码
- 插入CSS样式
- 捕获页面截图
4. Chrome扩展权限体系
4.1 权限声明方式
- 具体API权限:如"cookies", "webRequest"
- 域权限:如"http:///", "https:///", "<all_urls>"
4.2 activeTab权限
特性:
- 替代<all_urls>的更安全选项
- 只影响用户主动交互的标签页
- 授权后可:
- 执行脚本和插入CSS
- 获取页面信息
- 获取webRequest所需权限
安全优势: 减少过度授权风险
5. 现实世界中的扩展权限统计
对1200个随机Chrome扩展的分析:
- 48.75% (585个)申请了过度宽泛的域权限(如<all_urls>)
- 敏感API使用情况:
- cookies:较高比例
- webRequest:中等比例
- desktopCapture:较低比例
6. 安全建议
-
开发建议:
- 最小权限原则
- 优先使用activeTab替代<all_urls>
- 谨慎处理敏感数据
-
使用建议:
- 审查扩展请求的权限
- 仅从官方商店安装
- 定期审查已安装扩展
-
审计重点:
- 检查manifest.json权限声明
- 分析content-script的数据处理
- 监控网络请求行为
7. 总结
Chrome扩展体系提供了强大的浏览器控制能力,但也带来了相应的安全风险。理解各种脚本类型和API的安全特性,对于开发和审计安全的Chrome扩展至关重要。现实世界中大量扩展存在过度授权问题,用户和开发者都应提高安全意识。