Web 威胁模型

W3C 小组说明草案,

关于此文档的更多详细信息
此版本:
https://www.w3.org/TR/2026/DNOTE-threat-model-web-20260922/
最新发布版本:
https://www.w3.org/TR/threat-model-web/
编辑草案:
https://w3c.github.io/threat-model-web/
先前版本:
历史:
https://www.w3.org/standards/history/threat-model-web/
反馈:
public-security@w3.org 主题行为 “[threat-model-web] … 消息主题 …” (存档)
GitHub
编辑:
(W3C)
(Legendary Requirements)
(FBK)
(ETH Zurich)

摘要

本文档描述 Web 的威胁模型,并包括 Web 安全模型,还可能包括在整个 Web 平台上尚未实现、 但仍会应用于新增和变更规范评审的目标。

本文档状态

本节描述本文档在发布时的状态。当前 W3C 出版物列表以及本技术报告的最新修订版可在 W3C 标准和草案索引中找到。

本小组说明草案已获得安全兴趣组认可,但未获得 W3C 本身或其 成员的认可。

提供有关本规范的反馈时,首选方法是使用 GitHub。创建 GitHub 账号来提交 issue 是免费的。已提交 issue 的列表以及先前邮件列表 public-security@w3.org(存档)讨论的存档均公开 可用。

本文档由 安全兴趣 组使用说明轨道作为小组说明草案发布。

小组草案说明未获得 W3C 或其成员的认可。

这是一份草案文档,可能随时被其他文档更新、替换或废弃。除作为进行中工作外, 不宜引用本文档。

W3C 专利政策不对本文档附带任何许可 要求或承诺。

本文档受 2025年8月18日 W3C 流程 文档管辖。

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 的进程边界。

显示用户、Web 浏览器、文档和源执行上下文以及参与通用 Web API 的远程 Web 网站或服务的垂直数据流图
高级 Web 威胁模型:通用 Web API L0。

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 浏览器威胁模型的数据流图
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 之间的输入和输出。
F3 子资源获取 / 网络中介 流 内容触发的访问浏览器控制网络的路径。
F4 HTTPS / DNS / 远程数据 流 与远程源交换请求和响应。
F5 显示 / 媒体 / 合成 流 到图形和媒体辅助程序的渲染和呈现路径。
F6 配置文件 / 会话读取和写入 流 访问配置文件范围浏览器状态的特权访问路径。
F7 权限 / 浏览器策略 流 用于浏览器管理权限和策略的评估与执行路径。
F9 Web 存储路径 流 访问浏览器管理持久化站点存储的路径。
F10 代理的 OS 访问 流 从浏览器控制组件到操作系统或设备服务的中介访问。

该表示法遵循 W3C 威胁建模指南:E 表示外部实体, P 表示进程,F 表示流,S 表示数据存储, C 表示威胁容器,B 表示威胁边界 [threat-modeling-guide]。

1.3. 假设和外部依赖

系统模型依赖若干外部系统、服务和职责,它们不在浏览器的直接 控制之下,但会影响浏览器的安全态势:

1.4. 入口点和攻击面

入口点是结合系统模型中的流和边界来理解的。它们是 对手能够与系统交互或向系统提供数据的接口或机制。对于 Web 浏览器,这些包括:

1.5. 安全属性、资产和不变式

在考虑 Web 浏览器威胁模型时,需要保护的安全相关状态、资源和属性 多样且对用户安全和隐私至关重要:

以下属性和不变式用作威胁分析的提示:

2. 可能出什么问题?

编辑注:本节尚不完整。

2.1. 威胁分析方法

此威胁模型通过迭代系统模型中的层、元素、流、存储和 边界来分析 Web 平台。对于模型中的每个相关部分,分析会询问预期应保持什么属性、 什么可能违反该属性、谁可能受到影响,以及可能造成什么危害。威胁 来源和高层威胁族被用作提示,但分析建立在上述模型之上。

2.2. 威胁来源

2.3. 高层威胁索引

这是 Web 平台威胁模型中显著威胁族的索引,而非穷尽列表。

3. 我们要如何应对?

3.1. 安全功能和控制措施

编辑注:本节尚不完整。

Web 浏览器采用多种安全功能和保护机制,有助于保持 前面确定的属性和不变式:

4. 我们做得足够好吗?

本节待撰写。

5. 附录:MITRE ATT&CK 技术

在分析涉及 Web 浏览器的攻击时,可以使用 MITRE ATT&CK 企业技术 作为提示。以下列表并非详尽无遗,并且针对本文档按层级进行分组。列入其中并不意味着某项技术适用于所有浏览器 架构或场景。

5.1. Web 层级

5.2. 网络层级

5.3. Web 浏览器层级

5.4. 源层级

6. 致谢

多位人士为本文档作出了贡献。编辑特别感谢 Anna Weine。

参考文献

非规范性参考文献

[CHROMIUM-MULTIPROCESS-ARCHITECTURE]
Chromium 多进程架构。URL: https://www.chromium.org/developers/design-documents/multi-process-architecture/
[CHROMIUM-PROCESS-MODEL-SITE-ISOLATION]
Chromium 进程模型和站点隔离。URL: https://chromium.googlesource.com/chromium/src/+/main/docs/process_model_and_site_isolation.md
[FIREFOX-GECKO-PROCESSES]
Firefox Gecko 进程。URL: https://firefox-source-docs.mozilla.org/ipc/processes.html
[FIREFOX-PROCESS-MODEL]
Firefox 进程 模型。URL: https://firefox-source-docs.mozilla.org/dom/ipc/process_model.html
[INSIDE-BROWSER-PART-1]
Chrome “现代 Web 浏览器内幕” - 第 1 部分。URL: https://developer.chrome.com/blog/inside-browser-part1
[SHOSTACK-THREAT-MODELING]
Adam Shostack。威胁建模:为安全而设计。 2014。URL: https://shostack.org/books/threat-modeling-book
[THREAT-MODELING-GUIDE]
威胁建模指南。URL: https://www.w3.org/TR/threat-modeling-guide/
[WEBKIT-SITE-ISOLATION-NOTES]
WebKit 站点隔离 说明。URL: https://docs.webkit.org/Deep%20Dive/SiteIsolation.html
[WEBKIT-STORAGE-DOCUMENTATION]
WebKit 存储 文档。URL: https://docs.webkit.org/Deep%20Dive/Architecture/Storage.html
[WEBKIT2-ARCHITECTURE-OVERVIEW]
WebKit2 架构 概述。URL: https://docs.webkit.org/Deep%20Dive/Architecture/WebKit2.html
[XSLEAKS-CSS-INJECTION]
CSS 注入。URL: https://xsleaks.dev/docs/attacks/css-injection/