专栏名称: 前端早读课
我们关注前端,产品体验设计,更关注前端同行的成长。 每天清晨五点早读,四万+同行相伴成长。
目录
相关文章推荐
前端大全  ·  湖南大学的 DeepSeek ... ·  2 天前  
CEO品牌观察  ·  听小野主理人 讲述小野全球首店里的故事 ·  2 天前  
CEO品牌观察  ·  听小野主理人 讲述小野全球首店里的故事 ·  2 天前  
安徽工信  ·  【数字化转型·安徽时刻】智能感知 ... ·  2 天前  
安徽工信  ·  【数字化转型·安徽时刻】智能感知 ... ·  2 天前  
前端大全  ·  被骂了!腾讯道歉 + 立刻改正 ·  4 天前  
51好读  ›  专栏  ›  前端早读课

【早阅】浏览器扩展程序攻击

前端早读课  · 公众号  · 前端  · 2024-12-10 08:00

主要观点总结

文章介绍了浏览器扩展的安全性,包括其结构、运行环境、攻击面和缓解措施等。文章强调浏览器扩展的安全性依赖于其结构和权限管理,同时提供了关于如何确保扩展安全性的建议。使用CodeQL查询可以识别潜在的漏洞和安全风险。

关键观点总结

关键观点1: 浏览器扩展的安全性

浏览器扩展的安全性主要依赖于其结构和权限管理。扩展由HTML、CSS和JavaScript文件组成,通过manifest.json文件配置运行环境和权限。每个运行环境都有其特定的权限和安全风险。

关键观点2: 扩展的攻击面

扩展的攻击面主要来自用户加载的网站和其他已安装的扩展程序。特定的配置错误也会增加攻击面,例如external_connectable属性和web_accessible_resources属性。

关键观点3: 常见的攻击方式

常见的攻击包括跨站脚本(XSS)、服务器端请求伪造(SSRF)和扩展API注入。

关键观点4: 浏览器采取的缓解措施

浏览器开发者为减轻这些漏洞的风险采取了多种缓解措施,包括从v2到v3的更新、UUID随机化和使用CodeQL建模。

关键观点5: 安全建议

用户应选择信誉良好的作者开发的扩展程序,并仔细审查其所需的权限。同时,开发者和研究人员可以使用CodeQL查询来检测和预防扩展中的常见漏洞。


正文

作者:@Kevin Stubbings
原文:https://github.blog/security/vulnerability-research/attacking-browser-extensions/

背景

浏览器扩展自 2000 年代初随着 Firefox 和 Chromium 的采用而成为主流,其受欢迎程度一直在增长。如今,即使是普通用户也至少安装了一个扩展,通常是广告拦截器。关于浏览器扩展安全性的研究大多分散在各个漏洞报告和恶意 Chrome 扩展的报道中。本文将介绍浏览器扩展的结构及其生态系统中存在的漏洞,然后讨论扩展安全性的进展,重点介绍攻击面及其与已实施缓解措施的关系。最后,本文将推荐一些 CodeQL 查询和最佳实践,供用户、开发者和研究人员使用,以确保扩展的安全性。

要点

浏览器扩展的安全性主要依赖于其结构和权限管理。扩展由 HTML、CSS 和 JavaScript 文件组成,通过 manifest.json 文件配置其运行环境和权限。扩展的三个主要运行环境是网页 / 内容脚本、弹出窗口和后台脚本。每个环境都有其特定的权限和安全风险。

【第3132期】结合 React Fiber 结构与 chrome 插件,谈谈无侵入自动化表单的技术尝试

分析

扩展结构

扩展的核心概念包括 HTML、CSS 和 JavaScript 文件,这些文件通过 manifest.json 文件配置其运行环境和权限。扩展的三个主要运行环境是网页 / 内容脚本、弹出窗口和后台脚本。每个环境都有其特定的权限和安全风险。

  • 后台脚本:后台脚本可以访问大多数浏览器扩展 API,具有强大的控制能力,如控制标签、读取网站内容或修改和读取 cookie。这些能力通常需要特定的权限,并在 manifest.json 文件中请求。

  • 内容脚本:内容脚本运行在网页的上下文中,但位于隔离的世界中,无法访问主机页面或其他扩展的内容脚本的 JavaScript 变量。内容脚本通常用于与 DOM 交互,如添加页面摘要或翻译文本。

  • 弹出窗口:弹出窗口是用户点击扩展图标时出现的菜单,通常允许用户直接与扩展功能交互,如更改设置或向扩展的后端服务器发送请求。

  • manifest.json 文件:列出扩展程序的身份、所需权限和可访问性。随著浏览器生态系统的发展, manifest.json 文件的版本也在不断更新,新版本通常会强制执行更安全的设置。

攻击面

浏览器扩展程序的攻击面主要来自两个方面

  • 用户加载的网站:攻击者可以通过网站上的恶意代码攻击扩展程序,例如利用跨站点脚本漏洞( XSS )或服务器端请求伪造漏洞(SSRF)。

  • 其他已安装的扩展程序:恶意扩展程序可以通过 sendMessage API 向其他扩展程序发送消息,如果接收方未检查发送者身份,则可能受到攻击。

一些特定的配置错误也会增加攻击面

  • external_connectable 属性:允许特定网站或扩展程序 ID 连接到该扩展程序,如果配置不当,可能会导致原本只对其他扩展程序开放的功能暴露给网站。

  • web_accessible_resources 属性:允许网站访问扩展程序中的 HTML 文件,可能导致 iframe 攻击或点击劫持漏洞。

常见的攻击包括跨站脚本(XSS)、服务器端请求伪造(SSRF)和扩展 API 注入。

  • XSS:XSS 漏洞在内容脚本和后台脚本中都可能存在。XSS 允许攻击者执行与扩展相同权限的 JavaScript 代码,从而控制整个浏览器。

  • SSRF:如果攻击者能够影响网络请求的 URL,可能会导致 SSRF 漏洞。SSRF 的效果取决于请求的方法、是否包含凭据 /cookie 以及扩展的 manifest.json 文件中是否允许该网站。

  • 扩展 API 注入:如果攻击者能够将数据注入到 API 调用中,可能会获得扩展的能力。常见的 API 包括 downloads.download() 、书签创建或删除功能以及 cookie 的 set 函数。

缓解措施

浏览器开发者为减轻这些漏洞的风险,采取了以下缓解措施

  • 从 v2 到 v3 的更新:manifest v3 弃用了 unsafe-eval 指令,提高了 XSS 攻击的难度。manifest v3 限制了没有 host_permissions 的扩展程序发送带有 Cookie 的请求,降低了 SSRF 攻击的风险。

  • UUID 随机化:浏览器会随机化扩展程序的 ID (UUID),防止攻击者攻击暴露的 HTML 文件。Firefox 和 Safari 默认随机化 UUID,而 Chromium 直到 2024 年 8 月才默认启用 UUID 随机化。

使用 CodeQL 建模

CodeQL 可以用于建模和分析浏览器扩展程序中的漏洞,例如 XSS 和 SSRF。通过创建自定义的 CodeQL 查询,可以识别潜在的安全风险,例如:

  • 查找注入漏洞:识别潜在的代码注入点,例如 eval() Function() setTimeout() 等函数。

  • 分析消息传递:建模前台脚本和后台脚本之间的消息传递,确保消息传递过程中的安全。

案例

以 smartup 扩展程序为例,展示了 CodeQL 如何发现 UXSS 漏洞。该漏洞源于扩展程序未正确处理外部消息,导致攻击者可以注入恶意代码,并在具有广泛权限的背景脚本中执行。







请到「今天看啥」查看全文