1. 我们正在构建什么?
Web 平台是一组开放且免版税的技术集合,用于支撑 Web。用户通过用户代理与网站交互, 例如 Web 浏览器,或代表用户行事的其他代理。
网站包含一系列文件格式——被动内容,例如字体、图像和多媒体,以及主动 内容,例如 HTML、JavaScript 和 WebAssembly——它们从服务器传输到用户的 设备,并由 Web 浏览器解释。被动内容会被解码和渲染;主动内容以其源的权限执行, 并构成 Web 的主要攻击面。这一区分很有用,但并非绝对:注入的 CSS 仍可能成为攻击面, 例如当选择器匹配和资源加载被用于推断或泄露页面状态时 [xsleaks-css-injection]。
因此,网站是主动执行环境。来自 Web 服务器的响应可以包含可执行 脚本、用户界面定义、对第三方资源的引用,以及导致 用户代理读取用户输入、更新界面、调用 Web API、存储或检索本地状态、 与底层平台交互并与远程服务通信的指令。这就是为什么 Web 浏览器在此上下文中是 一个关键角色:它在用户设备上执行来自不受信任且可通过网络访问的 网站的代码。
由于这种复杂性,本文档并不试图为 Web 定义一个单一且穷尽的威胁模型。由于 Web 是一个分层且不断演进的生态系统, 单一模型要么过于抽象,无法指导开发和评审工作,要么过于详细,难以保持可读和有用。 这遵循了 Shostack 威胁建模工作中的实用框架:模型是用于推理正在构建什么 以及可能出什么问题的抽象,并且不同模型在不同保真度层级上可能有用 [shostack-threat-modeling]。因此,本文档 充当一组相关威胁模型的集合。
1.1. 高级 Web 威胁模型(L0)
高级 Web 威胁模型是 L0 层级的通用 Web API 模型。它区分了浏览器控制的 Web API 中介与文档 / 源执行上下文,同时展示了与用户以及远程 Web 网站或服务之间的交互。该模型是逻辑性的且与实现无关;它不表示 Chromium、Gecko 或 WebKit 的进程边界。
1.1.1. L0 元素字典
| ID | 名称 | 类型 | 描述 |
|---|---|---|---|
| EE-01 | 用户 | 外部实体 | 提供浏览器输入或导航意图,并接收渲染输出或浏览器中介的人。 |
| EE-02 | 远程 Web 网站 / 服务 | 外部实体 | 提供页面资源和运行时响应,并接收应用程序请求的远程 Web 主体。 |
| PO-01 | Web 浏览器 | 进程 | 由浏览器控制的逻辑进程,用于中介用户交互,并处理 Web API 请求及其结果、事件或错误。 |
| PO-02 | 文档 / 源执行上下文 | 进程 | 已加载页面和与源绑定的执行上下文,用于使用远程资源、执行运行时 Web 通信并调用 Web API。 |
| DF-01 | 用户输入 / 导航 | 数据流 | 由用户提供的导航意图、交互或浏览器控制输入,进入浏览器控制的处理过程。 |
| DF-02 | 渲染输出 / 浏览器中介 | 数据流 | 由浏览器控制处理产生并呈现给用户的渲染输出、浏览器 UI、状态或中介结果。 |
| DF-03 | Web 内容 / 响应数据 | 数据流 | 由远程 Web 网站或服务提供给文档上下文的页面资源、响应负载和连接数据。 |
| DF-04 | 请求 / 提交数据 | 数据流 | 由文档上下文发送到远程 Web 网站或服务的请求、提交负载和连接数据。 |
| DF-05 | Web API 请求 | 数据流 | 从文档上下文发送到浏览器控制 API 处理过程的通用 Web API 调用、选项、参数或控制请求。 |
| DF-06 | Web API 结果 / 事件 / 错误 | 数据流 | 由浏览器控制 API 处理过程传递到文档上下文的通用返回值、Promise 结算、回调、事件、状态或错误。 |
| TB-01 | Web 用户代理边界 | 信任边界 | 围绕浏览器控制的 API 中介和文档执行上下文的外部逻辑 Web 用户代理边界。 |
| TB-02 | Web 上下文隔离边界 | 信任边界 | 分隔 Web 源和上下文权限的抽象边界集合;较低层级的模型可能区分源、浏览模式、生命周期、沙箱或实现隔离。 |
1.1.2. 与 Web 浏览器威胁模型的关系
高级 Web 威胁模型将浏览器内部组件排除在视图之外。下面的 Web 浏览器威胁模型在审查依赖于决策执行位置、哪个组件保存状态、权限如何被中介、如何隔离不可信内容,或 Web API 如何访问网络、存储、图形、媒体和操作系统能力时,扩展了其中的浏览器和 Web 内容角色。
1.2. Web 浏览器威胁模型
Web 浏览器威胁模型概述了现代 Web 浏览器中反复出现的架构角色。
与高级 Web 威胁模型(L0)中将浏览器控制的 Web API 中介视为单个逻辑进程不同,该抽象模型描述了现代浏览器如何在具有不同权限、不同状态访问能力以及不同不可信输入暴露程度的多个进程之间分配责任。它还描述了浏览器如何执行 Web 安全模型,包括基于源和基于站点的隔离策略,以及浏览器在处理来自外部 Web 服务器的输入时如何保护自身 [threat-modeling-guide]。
这两个关注点相关但并不相同。内容进程被隔离,不仅因为 Web 内容 不受信任,还因为浏览器必须维护同源隔离以及 浏览器与 OS/平台之间的分离。实践中,这些是不同的信任边界,即使某个 实现使用相同的进程架构来同时支持二者。
在各个 Web 浏览器之间,实现细节各不相同。即便如此,仍然会出现一个共同结构。
1.2.1. 特权浏览器进程
现代浏览器包括一个高权限控制组件,负责浏览器 UI、导航控制、 进程管理、策略执行、权限调解,以及敏感本地 资源的访问代理。Chromium 将其称为 Browser process。WebKit 将其称为 UI process。Firefox 将其称为 Parent process [chromium-multiprocess-architecture] [webkit2-architecture-overview] [firefox-process-model]。
在本地浏览器架构中,应将此组件视为主要信任锚。它通常是 浏览器管理策略被执行的位置,也是用户可见调解通常发生的位置。对于威胁 建模而言,这很重要,因为一个决策的安全影响部分取决于它 在哪里作出。在特权浏览器组件中执行的检查,并不等同于在 沙盒化内容进程中执行的检查。
在 Web 浏览器威胁模型图中,该图将此进程称为 “Browser / UI / Parent Process”。
1.2.2. 沙盒化 Web 内容执行和渲染
Web 内容在诸如 Chromium Renderer processes、WebKit WebContent processes 和 Firefox Content processes 这样的进程中执行, 每类进程在管理不受信任输入方面具有不同角色 [chromium-multiprocess-architecture] [webkit2-architecture-overview] [firefox-process-model]。
这些类型的进程暴露于不受信任的 Web 内容。因此,它们被建模为执行 环境,预期会解析、解释并对不受信任的输入进行计算。它们的价值不在于 假设不可能被攻陷,而在于限制攻陷发生后的后果。这就是为什么 特权 Web 浏览器调解与 Web 内容执行之间的分离,是 Web 浏览器模型中的核心 信任边界之一。实现也可以使用基于源或站点的隔离 策略,使不相关的 Web 内容在正常使用期间或攻陷之后不能相互干扰,但 确切的隔离单元取决于浏览器 [chromium-process-model-site-isolation] [webkit-site-isolation-notes] [firefox-process-model]。
在 Web 浏览器威胁模型图中,该图将此进程称为 “Content / Renderer / WebContent Process”。
1.2.3. 网络和存储
现代 Web 浏览器还会分离,或至少调解,联网和持久状态管理。在
Chromium 中,此角色与 Network Service、每个配置文件的
NetworkContext 对象以及 StoragePartition 相关联。在 WebKit 中,
Networking
process 处理网络访问、磁盘缓存,以及浏览器管理的结构化站点数据,例如
Web Storage 和 IndexedDB。在 Firefox 中,联网和持久状态的分布方式不同,但
二者之间仍然存在区别 [chromium-process-model-site-isolation] [webkit-storage-documentation] [firefox-process-model]。
这一层很重要,因为它通常是 Cookie、缓存、分区状态和站点数据 边界被执行的位置:如果某项规范影响获取、凭据、存储访问或响应 处理,它很可能会与这一层交互。
在 Web 浏览器威胁模型图中,该图分别将这些称为 “Network / Socket / Networking Process” 和 “Data Store”。
1.2.4. 图形、媒体和辅助程序
现代 Web 浏览器还会将 GPU、编解码器和其他辅助功能分离到单独进程中,这也 是因为媒体库是常见攻击面。Chromium 分离了 GPU process 和 额外的辅助进程族。Firefox 分离了 GPU Process、RDD Process、GMP Process、Utility Process 和 Network (Socket) Process。WebKit 也为相关功能分离进程 [inside-browser-part-1] [firefox-gecko-processes] [webkit2-architecture-overview]。
从威胁建模角度看,这些辅助进程很重要,因为它们位于 不受信任内容与复杂实现表面之间的边界上。这也是一种通用实现 模式:将不受信任的执行或容易崩溃的功能从特权控制路径中分离 出来,以降低故障发生时的影响。
在 Web 浏览器威胁模型图中,该图将此进程称为 “GPU / Compositor / Media helper Process”。
1.2.5. 元素词典
1.2.5.1. 外部实体
| ID | 名称 | 类型 | 描述 |
|---|---|---|---|
| E1 | 用户 | 外部实体 | 与浏览器 UI、提示、标签页和渲染内容进行交互的人类操作者。 |
| E2 | 远程 Web 源 | 外部实体 | 提供 HTML、CSS、JS、媒体、API、身份端点以及其他 Web 资源的远程服务器。 |
| E3 | 底层网络基础设施 | 外部实体 | 物理基础设施、网络协议、网络分段以及本地主机。 |
| E4 | 操作系统 | 外部实体 | 浏览器产品边界之外的文件系统、剪贴板、摄像头、麦克风、GPU 驱动程序、媒体编解码器以及相关平台服务。 |
1.2.5.2. 威胁边界
| ID | 名称 | 类型 | 描述 |
|---|---|---|---|
| B1 | Web 浏览器边界 | 威胁边界 | 将浏览器控制的元素与外部实体和服务分隔开。 |
| B1.1 | 特权浏览器进程边界 | 威胁边界 | 将特权浏览器中介与沙箱化内容执行分隔开。 |
| B1.2 | 沙箱化内容执行和渲染边界 | 威胁边界 | 将负责在降低权限和隔离约束下执行 Web 内容的元素彼此分隔开。 |
| B1.3 | Web 内容执行进程边界 | 威胁边界 | 将负责执行 Web 内容的进程分隔开。 |
| B1.4 | 辅助服务边界 | 威胁边界 | 将具有网络、GPU、媒体或相关实用功能等辅助角色的元素与浏览器架构的其他部分分隔开。 |
| B1.5 | 配置文件和策略状态边界 | 威胁边界 | 将浏览器管理的配置文件、会话、设置和权限元数据与浏览器架构的其他部分分隔开。 |
| B1.6 | 站点状态边界 | 威胁边界 | 将浏览器管理的 Cookie、HTTP 缓存、Web 存储、IndexedDB 以及相关站点数据与浏览器架构的其他部分分隔开。 |
| B1.7 | 沙箱化特权内容执行边界 | 威胁边界 | 将用于内部页面或扩展的沙箱化特权执行上下文与浏览器架构的其他部分分隔开。 |
| B1.8 | 本地网络边界 | 威胁边界 | 将用户的设备与公共互联网分隔开。 |
| B1.9 | Web 边界 | 威胁边界 | 将用户代理与不可信 Web 资源分隔开。 |
| B1.10 | Web 源边界 | 威胁边界 | 将每个 Web 源彼此分隔开。 |
1.2.5.3. 进程
| ID | 名称 | 类型 | 描述 |
|---|---|---|---|
| P1 | 浏览器 / UI / 父进程 | 进程 | Chromium 浏览器进程、WebKit UI 进程、Firefox 父进程。协调特权浏览器 UI、导航、窗口管理、进程选择、策略执行、权限中介、网络访问,以及向敏感本地资源(例如配置文件数据、Cookie 和密码数据库以及操作系统能力)提供代理访问。 |
| P2 | 内容 / 渲染器 / WebContent | 进程 | Chromium 渲染器、WebKit WebContent、Firefox 内容进程族。解析和渲染 HTML、CSS、字体、图像、媒体、XML、SVG 和纯文本等 Web 格式;运行 DOM、脚本、工作线程和 JavaScript 引擎;并在沙箱以及源或站点隔离约束下向 Web 内容公开受限的 Web API 入口点。 |
| P3 | 网络 / Socket / 网络处理 | 进程 | 网络中介角色。在 Chromium 中对应 Network Service 模式;在 WebKit 中对应 Networking 进程;在 Firefox 中对应 Socket 进程以及相关浏览器控制的网络处理职责。处理浏览器中介的 HTTP(S)、Socket、与缓存相关的网络访问,以及从任意互联网位置请求资源。 |
| P4 | GPU / 合成器 / 媒体辅助程序 | 进程 | 在需要分离时提供 GPU、合成器、编解码器、媒体以及其他辅助功能。将渲染内容转换为呈现输出,并隔离处理不可信或攻击者控制输入的复杂图形或媒体实现接口。 |
| P5 | 特权扩展 / 内部内容 | 进程 | 可选的浏览器管理特权执行上下文,用于内部页面或扩展。涵盖浏览器扩展和内部内容,这些内容可以添加功能、与浏览器或 Web 内容交互,并可能根据安装情况以及用户或浏览器配置获得提升权限或源范围权限。 |
1.2.5.4. 数据存储
| ID | 名称 | 类型 | 描述 |
|---|---|---|---|
| S1 | 配置文件 / 会话 / 策略存储 | 数据 存储 | 偏好设置、配置文件数据、浏览历史、会话恢复状态、已保存凭据或密码数据库引用,以及由浏览器管理的配置,其生命周期和访问规则由浏览器控制。 |
| S2 | 权限 / 浏览器元数据 | 数据 存储 | 站点设置、授权、扩展权限以及浏览器控制的权限元数据,用于决定 Web 内容或浏览器管理的特权内容何时可以启用强大功能或访问敏感能力。 |
| S3 | Cookie + HTTP 缓存 | 数据 存储 | 浏览器管理的 Cookie 存储和缓存响应。Cookie 会随适用的 HTTP 请求发送,以支持会话、个性化和状态管理,并可能根据源、站点、配置文件或分区规则进行限定。 |
| S4 | Web 存储 / IndexedDB / Service Worker 数据 | 数据 存储 | 持久化和会话范围的站点数据,通常按源或分区限定,包括 localStorage、sessionStorage、IndexedDB、Service Worker 数据以及相关浏览器管理的存储机制,这些机制具有不同的生命周期和容量属性。 |
1.2.5.5. 流
| ID | 名称 | 类型 | 描述 |
|---|---|---|---|
| F1 | 用户交互 | 流 | 用户与特权浏览器 UI 之间的输入和输出。 |
| F2 | 导航 / 框架控制 / IPC | 流 | 特权浏览器逻辑与内容执行之间的控制流。 |
| F3 | 子资源获取 / 网络中介 | 流 | 内容触发的访问浏览器控制网络的路径。 |
| F4 | HTTPS / DNS / 远程数据 | 流 | 与远程源交换请求和响应。 |
| F5 | 显示 / 媒体 / 合成 | 流 | 到图形和媒体辅助程序的渲染和呈现路径。 |
| F6 | 配置文件 / 会话读取和写入 | 流 | 访问配置文件范围浏览器状态的特权访问路径。 |
| F7 | 权限 / 浏览器策略 | 流 | 用于浏览器管理权限和策略的评估与执行路径。 |
| F8 | Cookie / 缓存中介 | 流 | 访问浏览器管理 Cookie 和缓存状态的路径。 |
| F9 | Web 存储路径 | 流 | 访问浏览器管理持久化站点存储的路径。 |
| F10 | 代理的 OS 访问 | 流 | 从浏览器控制组件到操作系统或设备服务的中介访问。 |
该表示法遵循 W3C 威胁建模指南:E 表示外部实体, P 表示进程,F 表示流,S 表示数据存储, C 表示威胁容器,B 表示威胁边界 [threat-modeling-guide]。
1.3. 假设和外部依赖
系统模型依赖若干外部系统、服务和职责,它们不在浏览器的直接 控制之下,但会影响浏览器的安全态势:
-
操作系统(OS):浏览器以 OS 授予的权限运行, 相当于用户权限。浏览器安全目标必须在标签页、 网站和 OS 之间正确体现。与浏览器相比,OS 对直接网络连接提供更高层级的安全性。
-
网络/互联网:浏览器的主要功能涉及从 互联网上任意位置请求指令和内容。这依赖于底层网络 协议,例如浏览器大概信任的 TCP/IP。互联网的去中心化性质 意味着未加密数据很可能正被某些人读取。
-
Web 服务器及其后端:这些是浏览器内容、 指令(脚本、HTML)和资源的主要来源。浏览器必须让出控制权并 执行服务器提供的命令。Web 服务器也可能降低浏览器的安全性。网站 与数据库、站外存储和企业数据中心交互。数据在 浏览器上下文与这些后端系统之间流动。
-
第三方/其他源:现代 Web 应用通常包含来自其他源的资源和 脚本,这些也必须被执行。网站可能依赖第三方提供 广告、分析或认证数据库。
-
原生应用:安装在用户系统上的其他应用程序 可能直接访问浏览器资产(例如通过文件系统或内存检查)。
-
密码学:加密协议的使用以及与其交互,虽然不是 特定输入,但属于需要考虑的一类威胁,尤其是在当前 与向后量子密码学过渡有关的历史时刻。
-
外部组件/系统:对组件或系统的任何外部依赖都可能 影响浏览器的安全性。
1.4. 入口点和攻击面
入口点是结合系统模型中的流和边界来理解的。它们是 对手能够与系统交互或向系统提供数据的接口或机制。对于 Web 浏览器,这些包括:
-
浏览器 UI:用户界面本身,用户输入在此提供。它还包括 可信 UI。
-
网络接口:浏览器用于通过网络通信的端口和协议 (例如套接字、RPC、HTTP/HTTPS 端口)。
-
Web 内容(HTML、CSS、字体、脚本、媒体):从 Web 服务器交付的恶意代码、 脚本或内容。当呈现脚本时,浏览器会运行来自不受信任来源的代码。 对手可以诱使浏览器渲染恶意内容。具体威胁 与具体文件格式相关。
-
用户输入字段:用户可以输入数据的任何区域,这些区域可能被恶意 操纵(例如表单、URL)。
-
浏览器扩展:浏览器公开接口,供扩展与 浏览器和 Web 内容交互。
-
Web API:浏览器公开的标准 Web API 以及潜在的新型、有趣 API。
-
底层平台:允许源向底层 平台发送数据的功能。
1.5. 安全属性、资产和不变式
在考虑 Web 浏览器威胁模型时,需要保护的安全相关状态、资源和属性 多样且对用户安全和隐私至关重要:
-
用户数据:一般用户数据、敏感数据和个人身份 信息。
-
用户数据隐私:用户控制并保护其私人 信息和活动免受监视、关联和识别的能力。这包括 避免在缺乏透明度或控制的情况下,在浏览会话内及跨浏览会话进行识别或关联。
-
用户凭据:登录信息、用户名和密码。
-
用户 Cookie 和会话信息:存储在 Cookie、会话 ID 和 会话状态中的数据。这些可用于跨访问识别用户。
-
用户设备/计算机:用户的机器及其资源,包括用户文件系统的 机密性和完整性。
-
本地存储:由浏览器本地存储的数据,包括 Cookie、localStorage、 indexedDB、缓存、历史记录和密码。
-
用户浏览历史:有关访问过的站点的信息。
-
用户环境信息:操作系统配置、浏览器配置、 硬件能力。
-
用户活动和兴趣:购买偏好、个人特征和 以往活动。
-
受保护资源:用户可以访问但不应被 对手访问的任何资源。
-
私有网络资源:这些是浏览器 可以在没有用户明确请求的情况下访问的不同网络资源。
-
凭据和加密密钥:浏览器管理用于 加密和签名的公钥和私钥。
-
网站上的机密信息:在网站上显示或可访问的数据。
以下属性和不变式用作威胁分析的提示:
-
彼此不信任的源保持隔离,除非平台定义了明确且受控的 通信路径。
-
Web 内容不能直接行使操作系统权限,除非通过浏览器调解的 能力。
-
浏览器调解的权限通过浏览器控制的用户调解、策略或 配置授予。
-
浏览器管理的状态按照相关的源、站点、配置文件、分区或 权限边界限定范围。
-
在需要浏览器调解的场景中,不应仅从 Web 控制的 UI 推断 安全敏感的用户意图。
-
网络、存储、渲染和操作系统访问路径保持系统模型中所示的 边界。
2. 可能出什么问题?
2.1. 威胁分析方法
此威胁模型通过迭代系统模型中的层、元素、流、存储和 边界来分析 Web 平台。对于模型中的每个相关部分,分析会询问预期应保持什么属性、 什么可能违反该属性、谁可能受到影响,以及可能造成什么危害。威胁 来源和高层威胁族被用作提示,但分析建立在上述模型之上。
2.2. 威胁来源
-
浏览器扩展:尽管浏览器扩展具有实用性,但会引入大量安全漏洞。 恶意行为者会利用它们进行复杂攻击,例如钓鱼、 键盘记录、间谍活动、数据盗窃和会话劫持。它们需要被安装和配置为 拥有访问特定源的权限,这增加了攻击的复杂性。
-
应用程序/网站:网站可能被攻陷并变得恶意。不同攻击 可以指向同一网站上用户会话的攻陷(例如窃取 Cookie,或 生成任意请求——跨站请求伪造(CSRF)、UI 伪装/点击劫持), 绕过同源并从不同网站获取信息(即 Cross-Site Leaks - XS Leaks),或攻陷浏览器本身(例如在浏览器 进程中运行任意代码,以获得浏览器内数据的控制权,或攻陷用户设备)。 对手会利用现有浏览器功能。
2.3. 高层威胁索引
这是 Web 平台威胁模型中显著威胁族的索引,而非穷尽列表。
-
跟踪/隐私丧失:指纹识别是在用户不知情或未同意的情况下 识别用户的方法。指纹识别同时涉及隐私和安全问题,具有 双重意义。一方面,对手可以用它唯一识别用户(通常与隐私相关的 场景),也就是说,允许各方在不同站点之间建立用户画像或历史, 往往没有用户知情或同意。另一方面,它可用于 识别设备类型(通常与安全相关的场景,例如随后 攻陷设备)。规范暴露的数据,尤其是关于 底层平台或持久状态的信息,可能有助于指纹识别。某些 API 可能增加 指纹识别表面。
3. 我们要如何应对?
3.1. 安全功能和控制措施
Web 浏览器采用多种安全功能和保护机制,有助于保持 前面确定的属性和不变式:
-
沙盒化:沙盒化是限制渲染引擎等组件的关键机制, 用于限制它们访问操作系统和用户文件。它充当 OS 权限与子进程权限之间的屏障。
-
同源策略(SOP):一种基础安全控制,用于限制 从一个源加载的文档或脚本如何与另一个源的资源交互。
-
内容安全策略(CSP):一种安全标准,通过指定哪些动态资源可以加载, 来防止 XSS、点击劫持和其他代码注入攻击。
-
HTTPS/SSL/TLS:用于浏览器与 Web 服务器之间安全加密通信的协议,确保传输中数据的完整性和机密性。 HTTP 严格传输安全(HSTS)与此相关。
-
输入验证和输出编码:这些是处理 用户提供数据以防止 XSS 等注入攻击的关键实践。
-
安全头:HTTP 头指示浏览器如何安全地处理内容。
-
反钓鱼和反恶意软件:Safe Browsing 等功能会警告用户 恶意网站。
-
混合内容处理:浏览器如何处理加载 不安全(HTTP)资源的安全(HTTPS)页面。
-
渲染器隔离:将渲染引擎等复杂且易出错的组件 放入与浏览器内核分离的沙盒化进程或保护域中的架构。 浏览器内核处理敏感的 OS、网络和存储交互。
-
进程间通信(IPC):隔离的浏览器组件之间 (例如内核和渲染器)的安全通信通道。
-
下载管理器:处理文件下载的组件,可能包括安全 检查。
-
数据最小化和隐私设置:用于 减少潜在可识别信息暴露的设计原则和配置。
-
可信 UI:确保敏感用户交互发生在 Web 内容无法轻易仿冒或操纵的浏览器界面中。
-
权限 API:在激活强大 功能之前请求明确的用户许可。
-
瞬态激活:它是一道门控,是一种窗口状态,表示用户 最近按下了按钮、移动了鼠标、使用了菜单,或执行了其他用户交互。 有时用作一种机制,以确保某个 Web API 只有在由用户 交互触发时才能运行。例如,脚本不能任意启动需要瞬态 激活的弹出窗口——它必须从 UI 元素的事件处理器触发。
4. 我们做得足够好吗?
5. 附录:MITRE ATT&CK 技术
在分析涉及 Web 浏览器的攻击时,可以使用 MITRE ATT&CK 企业技术 作为提示。以下列表并非详尽无遗,并且针对本文档按层级进行分组。列入其中并不意味着某项技术适用于所有浏览器 架构或场景。
5.1. Web 层级
-
T1087 账户发现
-
T1539 窃取 Web 会话 Cookie
-
T1059 命令和脚本解释器
-
T1550 使用替代身份验证材料
-
T1595 主动扫描
-
T1071 应用层协议
-
T1110 暴力破解
-
T1659 内容注入
-
T1491 篡改
-
T1592 收集受害者主机信息
-
T1596 搜索开放技术数据库
-
T1594 搜索受害者拥有的网站
-
T1133 外部远程服务
-
T1484 修改域或租户策略
-
T1189 路过式入侵
-
T1667 电子邮件轰炸
-
T1114 电子邮件收集
-
T1684.002 电子邮件欺骗
-
T1499 端点拒绝服务
-
T1567 通过 Web 服务渗出
-
T1190 利用面向公众的应用程序
-
T1212 利用漏洞获取凭据
-
T1657 金融盗窃
-
T1187 强制身份验证
-
T1606 伪造 Web 凭据
-
T1684.001 冒充
-
T1201 密码策略发现
-
T1566 网络钓鱼
-
T1598 通过网络钓鱼获取信息
-
T1593 搜索开放网站/域
-
T1681 搜索威胁供应商数据
-
T1505 服务器软件组件
-
T1528 窃取应用程序访问令牌
-
T1204 用户执行
-
T1078 有效账户
-
T1102 Web 服务
-
T1211 利用漏洞实现隐蔽
-
T1203 利用漏洞执行客户端代码
5.2. 网络层级
-
T1557 对手中间人攻击
-
T1071 应用层协议
-
T1132 数据编码
-
T1001 数据混淆
-
T1573 加密通道
-
T1041 通过 C2 通道渗出
-
T1048 通过替代协议渗出
-
T1011 通过其他网络介质渗出
-
T1008 备用通道
-
T1592 收集受害者主机信息
-
T1589 收集受害者身份信息
-
T1590 收集受害者网络信息
-
T1591 收集受害者组织信息
-
T1665 隐藏基础设施
-
T1105 入站工具传输
-
T1056 输入捕获
-
T1036 伪装
-
T1111 多因素身份验证拦截
-
T1104 多阶段通道
-
T1599 网络边界桥接
-
T1498 网络拒绝服务
-
T1046 网络服务发现
-
T1040 网络嗅探
-
T1095 非应用层协议
-
T1571 非标准端口
-
T1027 混淆的文件或信息
-
T1588 获取能力
-
T1572 协议隧道
-
T1090 代理
-
T1563 远程服务会话劫持
-
T1021 远程服务
-
T1018 远程系统发现
-
T1496 资源劫持
-
T1669 Wi-Fi 网络
-
T1565 数据操纵
-
T1600 削弱加密
5.3. Web 浏览器层级
-
T1559 进程间通信
-
T1176 软件扩展
-
T1056 输入捕获
5.4. 源层级
-
T1068 利用漏洞提升权限
6. 致谢
多位人士为本文档作出了贡献。编辑特别感谢 Anna Weine。