跳到主要内容

在攻击者之前 — 威胁建模与红队

这一章讲三件事: 「红队自己」是什么、为什么它最有效; 小团队今天就能用的起步法——八连问头脑风暴加风险排序; 两条升级路径:STRIDE 分类法与桌面推演。 读完你能回答:还没出事之前,怎么系统地找出一套 AI 系统会怎么坏?

1. 这一章讲什么

前面各章给的都是在「已知威胁」上装控制。这一章回答「未知威胁怎么提前发现」。 原书的方法论可以压成一句话:与其等真实攻击者来发现你的弱点, 不如自己抢先扮演他1

这一章还是全书工程环节的收口:05 章 3.3 节说过「规划本身是控制族」—— 威胁建模就是规划阶段里最锋利的那把刀,把「想想哪里会出问题」变成可操作的流程。

2. 顶层全景

威胁建模的三个台阶(由轻到重):

台阶 1 台阶 2 台阶 3
八连问头脑风暴 → 风险排序 → 结构化方法
(今天就能做) Risk = Impact×Likelihood (STRIDE / 桌面推演)

排出优先级:先堵最危险的

图说:三个台阶不是三选一,是渐进的——
先用问,再用算,最后用框架。核心动作只有一个:
站到攻击者的位置上,对自己的设计唱反调。

3. 核心原理

3.1 红队自己:抢先扮演攻击者

红队(red team,借军事术语:扮敌方的分队)自己的方案,是书里开篇认定的 「最有效的韧性提升手段」:主动去挖失败与被滥用的方式,在它们变成真实事故之前; 早一步想到场景,就能早一步设计控制、护栏与监控——前几章装的那些东西, 装在哪、装几个,答案全从这一步来1

这和威胁建模(threat modeling)是同一件事的正式名字:书里的定义很传神—— 对自己的工作唱反调(playing devil's advocate):不假设系统会按预期跑, 而是故意问「它怎么会坏?哪些假设会失效?会冒出什么没想过的行为?」2

书里还给了条人性建议:拉个局外人。人对自己作品有无意识偏见, 自己唱反调常常唱不痛;别人一眼能看见你的盲区2

3.2 起步法:八连问

小团队不需要方法论也能开始。书里给的结构化头脑风暴,就是八个问题 (按原文次序转录)3:

#问题挖的是什么
1我的应用会被怎么故意攻击?攻击面
2会被怎么无意地误用、误伤?用户的创造性破坏
3谁可能来打它?对手画像
4他们动机是什么?决定攻击的成本与深度
5他们会用什么技术?对应的防御清单
6系统自己会怎么坏?无攻击者的失效
7系统不可用了会怎样?可用性风险
8被拿下 root(最高权限)会怎样?最坏情形的爆炸半径

问题 6 值得单独强调,书里专门写了:失效模式与攻击者无关的也要考虑—— 设计缺陷、运维失误、组件间的意外互动都能弄坏系统;而且最常见的事故场景 多半来自正常使用,不是好莱坞式的黑客4

3.3 从清单到排序:风险分析

八个问题会产出十几条场景,而人手有限,先堵哪条?书里搬来精算学(保险行业 给风险定价的数学)的公式:

Risk = Impact × Likelihood(风险 = 影响 × 可能性)5

两个因子分开看:有的场景极不可能但一发生就是灾难;有的天天发生但损失很小。 把每条场景在两个轴上各估一个值,相乘,排序,力气砸在分数最高的几条上5。 估不准怎么办?书里推荐了 Douglas Hubbard 的《How to Measure Anything in Cybersecurity Risk》——书名就是立场:风险可以被测量,哪怕粗糙5

3.4 两条升级路径

路径一:STRIDE 分类法。 想要系统一点,书里推荐 Adam Shostack 的 《Threat Modeling: Designing for Security》,其中最出名的是 STRIDE—— 把威胁分成六类,每类名字来自它攻击的目标属性6:

字母威胁大白话:攻击的是什么
SSpoofing(仿冒)「你是谁」的可信度——冒充别人
TTampering(篡改)数据完整性——偷改内容
RRepudiation(抵赖)证据链——干了却不认账
IInformation Disclosure(信息泄露)机密性——不该看的看到了
DDenial of Service(拒绝服务)可用性——把服务打瘫
EElevation of Privilege(提权)权限边界——从低位爬到高位

(注意和 01 章那句「后果几十年不变」对上了:这六类没有一个新词。)

不过作者本人坦白:他至今更偏爱头脑风暴;真要系统化,他推荐朋友 Benedek Szabó 的 Bsides 演讲「Pocket Threat Modeling」——口袋版威胁建模, 依然是问问题的路数6。方法没有高下,合手的才是好方法。

路径二:桌面推演。 组织级的做法叫 tabletop exercise(桌面推演: 团队围坐,按假想场景走一遍「我们会怎么响应」)——比如「AI 模型被恶意 prompt 操纵了」「自动化工作流把敏感数据暴露了」。

书里说它的真正价值在于暴露缺口:流程的、沟通的、工具的—— 这些缺口不推演就藏着,藏着直到真事故替你做这次推演7

3.5 主走查:给一个内部问答 agent 做一遍

拿一个具体系统过全流程。系统:公司内部的问答 bot——先去资料库里翻出与问题 相关的材料,再让模型照着材料回答。

这套架构行话叫检索增强,英文缩写为 RAG(Retrieval-Augmented Generation)。 (打分全为演示所编,演示的是方法,不是真实评估):

八连问(节选三问的产出):
问 1(故意攻击)→ 场景 A:员工让 bot 检索并展示薪酬表——
文档权限没跟到检索层(02 章走查的同款病)
问 2(无意误用)→ 场景 B:HR 把含客户手机号的表格丢进资料库,
任何人提问都带出个人信息
问 6(无攻击者失效)→ 场景 C:文档库索引损坏,bot 开始自信地
用半年前的旧政策回答

风险排序(1-5 打分,相乘,演示数值):
场景 A:Impact 5(薪酬泄露,合规事故)× Likelihood 3(一条 prompt 就能试)→ 15
场景 B:Impact 4(个人信息外泄)× Likelihood 4(上传无门槛)→ 16
场景 C:Impact 2(答错,浪费与误导)× Likelihood 3(索引是会坏的)→ 6

顺序:B(16)≥ A(15)> C(6)——注意 B 反超 A:
不是最「黑客」的场景最危险,是最容易发生的场景最危险。

对应的控制(全是前几章的存货):
B → 摄入门槛:入库扫描个人信息,命中即拦截(04 章 SBOM 思路的文档版)
A → 检索层按提问者权限过滤(02 章的服务账号病:以 Alice 的身份查,
不以 bot 的身份查)
C → 健康监控 + 索引新鲜度告警(05 章);旧答案标注「数据截至」

桌面推演:拿场景 A 走一遍响应——谁接告警、谁定泄露范围、谁通知合规,
发现值班表上没写「谁有权下线 bot」→ 补进文档。缺口在推演里现形。

4. 作者的判断与证据

  • 方法论出处可查:STRIDE 出自 Shostack 的书;风险公式出自精算学; Hubbard 的书都是公开出版物56;
  • 作者的偏好:头脑风暴优先于 STRIDE——个人工作习惯之谈,不构成方法论比较6;
  • 作者的观察:「最常见场景来自正常使用」——一线经验,值得当先验但别当铁律4

5. 边界与局限

  • 书里没有给 AI 特有的威胁分类(比如提示注入、目标劫持该归入 STRIDE 哪一格—— 实践中常常同时跨 I/T/E 三格),这套老框架套 AI 要自己补格;
  • Impact × Likelihood 的打分天然主观,书里没讨论「谁来打、怎么校准」;
  • 桌面推演的频次、参加者范围,书里没给;
  • 红队在本章只指「自己扮攻击者」;专业外聘红队、自动化红队工具,书里未展开。

6. 可带走的

  1. 最有效的韧性投资是红队自己:在事故之前把失败方式演完一遍;
  2. 威胁建模 = 对自己的工作唱反调;拉个局外人,偏见会骗过自己;
  3. 八连问今天就能用:故意攻击/无意误用/谁/动机/手法/自坏/不可用/root 沦陷;
  4. 无攻击者的失效也要列——最常见的事故来自正常使用,不是黑客;
  5. Risk = Impact × Likelihood:两个因子都打分再相乘,按分排序花力气;
  6. 「容易发生的小灾难」常常排在「罕见的大灾难」前面,别被戏剧性带偏;
  7. STRIDE 六格是查漏用的:仿冒/篡改/抵赖/泄露/拒服务/提权,一格一格过;
  8. 桌面推演的价值是暴露流程、沟通、工具的缺口——藏着的问题等真事故来揭;
  9. 这一切的名字叫 shift left8:问题在写代码前暴露,成本是事故后的零头。

7. 原文地图

主题原书章原文位置
红队自己、提前设计控制与监控Threat Modeling and Red Teamingtext/18-fm-threat-modeling-and-red-teaming.txt:3(搜「red team your own」)
威胁建模=唱反调、拉局外人Threat Modeling and Red Teamingtext/18-fm-threat-modeling-and-red-teaming.txt:5(搜「devil's advocate」)
八连问清单Threat Modeling and Red Teamingtext/18-fm-threat-modeling-and-red-teaming.txt:9(搜「intentionally attacked」)
无攻击者的失效、正常使用最常见Threat Modeling and Red Teamingtext/18-fm-threat-modeling-and-red-teaming.txt:25(搜「nothing to do with attackers」)
Risk = Impact × Likelihood、排序、HubbardThreat Modeling and Red Teamingtext/18-fm-threat-modeling-and-red-teaming.txt:27(搜「Liklihood」)
Shostack、STRIDE、Pocket Threat ModelingThreat Modeling and Red Teamingtext/18-fm-threat-modeling-and-red-teaming.txt:29(搜「STRIDE」)
桌面推演、暴露缺口Threat Modeling and Red Teamingtext/18-fm-threat-modeling-and-red-teaming.txt:31(搜「tabletop」)
shift leftThreat Modeling and Red Teamingtext/18-fm-threat-modeling-and-red-teaming.txt:33(搜「shift the security issues left」)

Footnotes

  1. 出处:「Threat Modeling and Red Teaming」第 3 段(text/18-fm-threat-modeling-and-red-teaming.txt:3,搜「red team your own」)。提升 AI 系统韧性最有效的办法之一是红队自己的方案;不等真攻击者,主动提前挖失败与滥用方式;早探索场景就能早设计控制、护栏与监控,降低成真概率。 2

  2. 出处:「Threat Modeling and Red Teaming」第 5 段(text/18-fm-threat-modeling-and-red-teaming.txt:5,搜「devil's advocate」)。威胁建模的核心是对自己的工作唱反调:不假设按预期运行,故意问怎么会坏、哪些假设失效、哪些意外行为可能出现;建议拉局外人——人对自己作品有 unconscious bias。 2

  3. 出处:「Threat Modeling and Red Teaming」第 7-23 段(text/18-fm-threat-modeling-and-red-teaming.txt:9,搜「intentionally attacked」)。结构化头脑风暴八问,本表按原文次序转录。

  4. 出处:「Threat Modeling and Red Teaming」第 25 段(text/18-fm-threat-modeling-and-red-teaming.txt:25,搜「nothing to do with attackers」)。还要考虑与攻击者无关的失效:设计缺陷、运维失误、组件间意外互动;恶意攻击者打开大量新可能,但最常见场景多半来自正常使用。 2

  5. 出处:「Threat Modeling and Red Teaming」第 27 段(text/18-fm-threat-modeling-and-red-teaming.txt:27,搜「Liklihood」)。风险评估出自精算科学,公式 Risk = Impact × Likelihood(原文如此,拼作 Liklihood);有的场景罕见而灾难,有的频发而轻微;两因子并看即可估算并排序;想量化可读 Hubbard《How to Measure Anything in Cybersecurity Risk》。 2 3 4

  6. 出处:「Threat Modeling and Red Teaming」第 29 段(text/18-fm-threat-modeling-and-red-teaming.txt:29,搜「STRIDE」)。Shostack《Threat Modeling: Designing for Security》;STRIDE 六类:spoofing、tampering、repudiation、information disclosure、denial of service、elevation of privilege;作者本人仍偏好头脑风暴;系统化可看 Benedek Szabó 的 Bsides 演讲「Pocket Threat Modeling」。 2 3 4

  7. 出处:「Threat Modeling and Red Teaming」第 31 段(text/18-fm-threat-modeling-and-red-teaming.txt:31,搜「tabletop」)。桌面推演:团队按假想失败/攻击场景走响应(如模型被恶意 prompt 操纵、自动化工作流暴露敏感数据);价值在暴露流程、沟通、工具的缺口——否则它们藏到真事故才现形。

  8. 出处:「Threat Modeling and Red Teaming」第 33 段(text/18-fm-threat-modeling-and-red-teaming.txt:33,搜「shift the security issues left」)。红队、威胁建模、场景推演让团队主动思考风险与新控制,把安全问题左移——在成为真实事故之前识别并缓解。