从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 权限声明方式

  1. 具体API权限:如"cookies", "webRequest"
  2. 域权限:如"http:///", "https:///", "<all_urls>"

4.2 activeTab权限

特性:

  • 替代<all_urls>的更安全选项
  • 只影响用户主动交互的标签页
  • 授权后可:
    • 执行脚本和插入CSS
    • 获取页面信息
    • 获取webRequest所需权限

安全优势: 减少过度授权风险

5. 现实世界中的扩展权限统计

对1200个随机Chrome扩展的分析:

  • 48.75% (585个)申请了过度宽泛的域权限(如<all_urls>)
  • 敏感API使用情况:
    • cookies:较高比例
    • webRequest:中等比例
    • desktopCapture:较低比例

6. 安全建议

  1. 开发建议

    • 最小权限原则
    • 优先使用activeTab替代<all_urls>
    • 谨慎处理敏感数据
  2. 使用建议

    • 审查扩展请求的权限
    • 仅从官方商店安装
    • 定期审查已安装扩展
  3. 审计重点

    • 检查manifest.json权限声明
    • 分析content-script的数据处理
    • 监控网络请求行为

7. 总结

Chrome扩展体系提供了强大的浏览器控制能力,但也带来了相应的安全风险。理解各种脚本类型和API的安全特性,对于开发和审计安全的Chrome扩展至关重要。现实世界中大量扩展存在过度授权问题,用户和开发者都应提高安全意识。

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 权限要求: 功能: 获取、设置、删除指定域的所有cookie 监听cookie变更事件 风险: 可窃取所有cookie,包括会话凭证 3.2 chrome.desktopCapture 功能: 捕获屏幕、窗口或标签页的实时媒体流 生成一次性媒体流ID 风险: 可静默截取用户屏幕内容 3.3 chrome.pageCapture 功能: 将任意标签页保存为MHTML格式 限制: 需要知道目标tabId 3.4 chrome.webRequest 权限要求: 功能: 观察、拦截和修改网络请求 可阻止请求或重定向到其他URL 可修改POST请求内容 风险: 可实施中间人攻击,篡改网络流量 3.5 chrome.downloads 权限要求: 功能: 创建和管理下载 打开下载的文件或所在目录 对危险文件类型(如.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扩展至关重要。现实世界中大量扩展存在过度授权问题,用户和开发者都应提高安全意识。