Web 威胁模型

W3C 小组说明草案,

关于此文档的更多详细信息
此版本:
https://www.w3.org/TR/2026/DNOTE-threat-model-web-20260617/
最新发布版本:
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)

摘要

本文档描述 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 威胁模型

高层 Web 威胁模型是本文档中最抽象的模型。它将用户代理视为一个 单一进程,并且只描述主要元素、流和边界,以便在非常高的层级上进行推理。

Web 平台的最小数据流图
高层 Web 平台模型。

1.1.1. 元素词典

ID 名称 类型 描述
E0 用户 外部实体 通过用户代理与 Web 交互的人类用户。
E1 远程 Web 源 外部实体 提供 HTML、CSS、JavaScript、WebAssembly、媒体、API、身份端点 和其他 Web 资源的远程源。
E2 网络基础设施 外部实体 用于获取远程内容的本地网络、互联网路由、名称解析、传输协议和其他网络 服务。
E3 操作系统 / 设备 / 平台 外部实体 文件系统、剪贴板、摄像头、麦克风、GPU、传感器、认证器、硬件支持的 能力,以及 Web 平台边界之外的其他平台服务。
P0 用户代理 / Web 浏览器 进程 代表用户获取、解释、执行、调解、存储、渲染并 呈现 Web 内容的浏览器或其他用户代理。
S0 浏览器管理的状态 数据存储 Cookie、缓存、存储、权限、站点设置、会话状态、配置文件数据、凭据 引用,以及由用户代理控制或调解的其他状态。
F0 用户交互 数据流 通过浏览器 UI、渲染内容、提示和其他用户代理 表面进行的用户输入和输出。
F1 Web 请求 / 响应 数据流 用户代理与远程 Web 源之间交换的请求和响应,通常通过 HTTP(S) 等网络协议。
F2 子资源和第三方加载 数据流 Web 内容导致用户代理从相同或不同源获取脚本、框架、媒体、字体、API 或其他 资源。
F3 浏览器状态访问 数据流 用户代理与浏览器管理状态之间的读取和写入。
F4 代理式平台访问 数据流 由浏览器调解的对操作系统、设备、传感器、认证器、文件系统、 剪贴板、图形、媒体或其他平台能力的访问。

1.1.2. 信任边界

ID 名称 描述
B0 用户代理边界 将浏览器控制的行为与外部 Web 源、网络、用户以及 底层平台分隔开来。
B1 Web 源边界 将彼此不信任的源相互分隔开来。
B2 网络边界 将用户代理和本地环境与远程网络基础设施和远程 服务分隔开来。
B3 浏览器状态边界 将浏览器管理的状态与 Web 内容和外部参与者分隔开来。
B4 操作系统 / 设备边界 将 Web 平台调解与较低层级的平台服务和能力分隔开来。

1.1.3. 与 Web 浏览器威胁模型的关系

高层威胁模型有意将大多数浏览器内部机制排除在视野之外。这使其在 评审对象是整个 Web 平台时很有用:源的角色、主要参与者,以及用户、 Web 内容、网络、浏览器管理的状态和底层平台之间的信任 边界。

当设计或评审取决于决策在哪里执行、 哪个浏览器组件保存状态、权限如何被调解、不受信任内容如何被隔离,或 Web API 如何触达操作系统公开的能力时,这一层级就不再充分。 在这些情况下,需要打开浏览器。下面的 Web 浏览器威胁模型为此目的扩展了 P0。

1.2. Web 浏览器威胁模型

Web 浏览器威胁模型概述了现代 Web 浏览器中反复出现的架构角色。

Web 浏览器威胁模型的数据流图
Web 浏览器威胁模型。

与在最小化 Web 威胁模型中那样将浏览器视为单个组件不同,此 抽象捕捉现代浏览器如何将责任分配到多个具有 不同权限、不同状态访问能力,并且对不受信任输入有不同暴露程度的进程中。它还捕捉 浏览器如何执行 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 ProcessRDD ProcessGMP ProcessUtility ProcessNetwork (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 底层网络基础设施 外部实体 物理基础设施、网络协议、网络分段、Localhost。
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 Browser / UI / Parent 进程 Chromium Browser process、WebKit UI process、Firefox Parent process。协调特权 浏览器 UI、导航、窗口管理、进程选择、策略执行、权限 调解、联网访问,以及对敏感本地资源的代理访问,例如配置文件数据、 Cookie 和密码数据库,以及操作系统能力。
P2 Content / Renderer / WebContent 进程 Chromium Renderer、WebKit WebContent、Firefox Content 进程族。解析并渲染 HTML、CSS、字体、图像、媒体、XML、SVG 和纯文本等 Web 格式;运行 DOM、脚本、worker 和 JavaScript 引擎;并在沙盒化 以及源或站点隔离约束下向 Web 内容公开受约束的 Web API 入口点。
P3 Network / Socket / Networking 进程 网络调解角色。在 Chromium 中,这与 Network Service 模式相对应;在 WebKit 中与 Networking process 相对应;在 Firefox 中与 Socket process 和相关的浏览器控制 联网职责相对应。处理浏览器调解的 HTTP(S)、套接字、与缓存相关的网络 访问,以及从任意互联网位置请求资源。
P4 GPU / compositor / media helper(s) 进程 GPU、合成器、编解码器、媒体以及其他在被分离时的辅助功能。将渲染 内容转换为呈现输出,并隔离处理不受信任或攻击者控制输入的复杂图形或媒体实现表面。
P5 特权扩展 / 内部内容 进程 用于内部页面或扩展的可选浏览器管理特权执行上下文。涵盖 可添加功能、与浏览器或 Web 内容交互,并且可能根据安装和 用户或浏览器配置获得提升权限或源范围权限的浏览器扩展和内部内容。
1.2.5.4. 数据存储
ID 名称 类型 描述
S1 配置文件 / 会话 / 策略存储 数据存储 偏好设置、配置文件数据、浏览历史、会话恢复状态、已保存凭据或 密码数据库引用,以及由浏览器控制生命周期和访问规则的浏览器管理配置。
S2 权限 / 浏览器元数据 数据存储 站点设置、授权、扩展权限,以及浏览器控制的权限元数据,用于 决定 Web 内容或浏览器管理的特权内容何时可以激活强大功能或 访问敏感能力。
S3 Cookie + HTTP 缓存 数据存储 浏览器管理的 Cookie jar 和缓存响应。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. 假设和外部依赖

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

1.4. 入口点和攻击面

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

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

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

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

2. 可能出什么问题?

编辑注:本节尚不完整。

2.1. 威胁分析方法

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

2.2. 威胁来源

2.3. 高层威胁索引

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

3. 我们要如何应对?

3.1. 安全功能和控制措施

编辑注:本节尚不完整。

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

4. 我们做得足够好吗?

本节待撰写。

5. 致谢

多位个人为本文档作出了贡献。编辑们尤其感谢 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/