你准备在街角开一家24小时便利店。开业之前,你请了一位经验老到的“防贼顾问”。他没有急着帮你焊防盗窗,而是先把自己想象成一个窃贼,绕着店铺走了三圈:卷帘门锁得牢吗?后窗正对着暗巷吗?收银台的现金过夜留多少?凌晨三点有几个人当班?货架最高那排,监控拍得到吗?他把这些“可能被攻破的点”全部标在一张平面图上,又根据“哪个点最值钱、哪个门最好撬”排出优先顺序,最后才告诉你:先装这个,再补那个。这张图,就是便利店的“威胁模型”。 AI红队测试中的威胁建模,干的是同一件事。AI系统就是那家便利店,红队工程师就是防贼顾问。在真正动手攻击之前,威胁建模先把系统的每一个“入口”(攻击面)、可能的“窃贼”(攻击者)、丢了什么最心疼(潜在危害)通通摆上桌面,排出优先级,形成一张结构化的“入侵风险地图”。有了这张地图,后续的红队测试不再是东一榔头西一棒槌地瞎试,而是按图索骥,直击要害。这就是为什么威胁建模被称为AI安全评估的第一步,也是红队流程中“先谋后动”的核心方法论。

岗位关联

一句话说价值:学会威胁建模,你就拥有了AI安全测试的“作战地图”——从漫无目的地试探,升级为有体系、有优先级、有说服力的专业评估。

目录
  1. 可视化演示
  2. 威胁建模概念
  3. 攻击面分析
  4. 攻击者画像
  5. 潜在危害评估
  6. 风险优先级排序
  7. 结构化路线图
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

动态演示AI红队威胁建模方法论的核心机制,通过入门/进阶/实战/优化四种模式展示关键概念与交互流程。

本节配有交互动效(进入视口后自动加载,约 3KB)。

AI红队威胁建模方法论:AI红队 AI红队威胁建模的基本概念与价 AI模型攻击面的系统梳理方法 核心机制可视化 AI红队威胁建模方法论整体架构与关键组件

威胁建模概念

防贼顾问到了便利店,并不着急加固门窗,而是先拿出纸笔,绕着店铺画了一张平面图:卷帘门、后窗、换气扇、收银台、仓库、监控位全部标好位置。他解释说:“我要先知道这间屋子有哪些值钱的东西、哪些口子能进人,才能告诉你先堵哪里。画完这张图,后面每一步都有依据。”这张图,就是店里所有安全决策的“总纲领”。

AI红队的威胁建模(Threat Modeling)做的正是这件事。它是红队测试流程中最早的一步,动手攻击之前,先把目标系统“拆开”看一遍:系统里有什么资产?哪些入口能被触碰?谁可能来攻击?打穿后会损失什么?这些问题的答案汇集起来,就是一份“威胁模型”。威胁建模的产物不是漏洞清单,而是一整套结构化文档——资产清单、攻击面地图、攻击者画像、风险矩阵、测试路线图,后续所有红队动作都以它为依据。

威胁模型可以形式化地表示为一个四元组:

防贼顾问最后提醒店主:“地图不是画完就完,店铺要进货、要加装设备,地图就得跟着更新。”威胁模型同样需要持续演进——AI系统的数据、模型、依赖每变一次,攻击面就跟着变,威胁模型必须同步刷新,否则再精细的地图也会过期。

M={A,T,H,P}\displaystyle \mathcal{M} = \{ A, T, H, P \}
威胁模型 = 攻击面 + 攻击者 + 潜在危害 + 优先级。四者缺一不可,共同构成“入侵风险地图”。
  1. M(威胁模型)整张“入侵风险地图”本身,它是红队测试的输入,也是可交付的输出。
    M\mathcal{M}
  2. A(攻击面)系统所有能被攻击者触碰的入口集合,对应便利店的“门、窗、换气扇”。
    A={s1,s2,…,sn}A = \{ s_1, s_2, \dots, s_n \}
  3. T(攻击者)可能来攻击的角色及其能力集合,对应“顺手牵羊的顾客与踩点的职业窃贼”。
    T={t1,t2,…,tm}T = \{ t_1, t_2, \dots, t_m \}
  4. H(潜在危害)攻击成功后各资产的损失程度,对应“现金被偷、货架被搬空、配置被篡改”。
    H=(C,I,A)H = (C, I, A)
  5. P(优先级)按风险高低排出的应对顺序,决定先加固哪一扇门。
    P=sort(Risk)P = \text{sort}(\text{Risk})

攻击面分析

防贼顾问第二步,是蹲在便利店外面,把“所有能进入这间屋子的路径”列成一张表:正门卷帘门锁芯老化、后窗临暗巷没有护栏、换气扇管道直通仓库、员工卸货时经常不锁后门……每条路径他都亲手试了试结实程度,还估算了“撬开它大概要多久”。

在AI安全语境下,这些“能进人的口子”就是攻击面(Attack Surface)。攻击面分析是威胁建模的核心环节:逐一识别AI系统所有可能被攻击者触碰的入口,并评估每个入口的暴露程度与访问成本。相比传统软件,AI系统的攻击面更广——除了代码与网络接口,模型本身的行为也是一种全新的暴露面,比如用户可以通过精心构造的提示词绕过模型的安全对齐。

AI系统的攻击面可以划分为四大类别,用集合表示:

防贼顾问的入口清单让店主惊出一身冷汗,但这正是威胁建模的意义——只有先把每条招贼的路都摸清,才谈得上防。AI系统暴露的每一个API、每一段管道数据,都可能是红队测试的瞄准点。

Sa={si∣si∈Inputs∪APIs∪DataPipeline∪Integrations}\displaystyle S_a = \{ s_i \mid s_i \in \text{Inputs} \cup \text{APIs} \cup \text{DataPipeline} \cup \text{Integrations} \}
攻击面 = 数据输入入口 ∪ 模型推理接口 ∪ 训练数据管道 ∪ 系统集成面。任何一个类别遗漏,威胁模型就不完整。
  1. S_a(攻击面集合)威胁建模第一步的完整产出,是全部门窗的总清单。
    SaS_a
  2. s_i(单个入口点)任意一个可被攻击者触碰的点,例如用户提示输入框、文件上传API端点。
    sis_i
  3. 竖线 |(“使得”)表示“只收录满足后面条件的入口点”,过滤掉与攻击无关的系统组件。
    si∣si∈Inputss_i \mid s_i \in \text{Inputs}
  4. ∪(并集)把数据输入、推理接口、训练管道、系统集成四类入口合并且去重,确保不遗漏。
    Inputs∪APIs∪DataPipeline∪Integrations\text{Inputs} \cup \text{APIs} \cup \text{DataPipeline} \cup \text{Integrations}

攻击者画像

防贼顾问接着问店主:“你最担心的是周末来偷几包零食的小混混,还是专门踩点、连保险柜都能撬开的职业团伙?”店主愣住。顾问解释:不同的“贼”能力、工具、目的完全不同,防法也两样——防小混混装监控就够,防职业团伙得上银行级保险柜。

AI红队的威胁建模同样需要攻击者画像(Attacker Profiling),它要求红队工程师以防守方视角换位思考:哪怕我们是白帽,也要想象成真正的攻击者,识别可能攻击系统的人,并按能力、资源、动机将他们分类。一个单人黑客与一个国家级团队,能发动的攻击类型天差地别;一个想赚快钱的黑客与一个想毁掉品牌声誉的竞争者,战术意图也完全不同。威胁模型必须针对“最可能出现的攻击者”而非“最理想化的攻击者”来设计。

攻击者画像用能力与动机两个核心维度建模:

店主听完恍然大悟:“所以先别急着买保险柜,得先搞清楚我这小店到底会招来什么人物。”威胁模型里的攻击者画像,深深影响后续测试用例的强度与类型——画像越清晰,测试越精准。

Ra=C×M\displaystyle R_a = C \times M
攻击者威胁度 = 技术能力 × 攻击动机。相乘而非相加,因为两者同时高才算真正的威胁——动机再强没能力只是空想,能力再高没动机也不会出手。
  1. C(能力)攻击者的技术水平与资源,可分成 CAP-1 脚本小子、CAP-2 专业黑客、CAP-3 国家级力量。
    C∈{1,2,3}C \in \{1, 2, 3\}
  2. M(动机)攻击者的推动力,含经济利益、政治立场、技术炫耀与恶意破坏。
    M∈{1,2,3}M \in \{1, 2, 3\}
  3. ×(相乘)威胁度取决于两者的乘积,中等能力×高动机仍可能是重大威胁。
    Ra=C×MR_a = C \times M

潜在危害评估

防贼顾问让店主把店里的东西按“丢了最心疼”排个名:收银台现金丢了,一天白干;仓库货物被搬,进货钱打水漂;但最致命的是送货配置单被人改了,明天送来的货全错,顾客闹上门——这种损失一时半会还发现不了。

AI系统“丢东西”的含义远比传统资产复杂。红队威胁建模必须评估潜在危害(Potential Harm):攻击成功后,系统、用户与组织分别承受多大损失。安全领域用CIA三元组刻画损失——机密性(Confidentiality)、完整性(Integrity)、可用性(Availability),AI场景下每一项都对应新型攻击形态。此外还要考虑合规与声誉风险:数据泄露可能违反隐私法规,模型滥用可能透支公众信任。

潜在危害可以量化成一个三元组向量:

店主这才明白:“原来‘丢东西’不只是现金,还有看不见的信誉与顾客信任。”AI系统同理——训练数据被投毒、模型输出被劫持,比单纯宕机更隐蔽也更危险。危害评估,就是把这种“看不见的损失”摆到台面上量化。

H=(C,I,A)\displaystyle H = (C, I, A)
危害向量 =(机密性损失,完整性损失,可用性损失)。每个分量按 0-3 打分:0 无、1 低、2 中、3 高。
  1. H(潜在危害向量)描述“最坏情况下损失有多大”的标准化表示。
    HH
  2. C(机密性)模型参数、训练数据、用户隐私是否泄露,典型攻击是模型窃取。
    C∈{0,1,2,3}C \in \{0, 1, 2, 3\}
  3. I(完整性)模型行为是否被篡改,典型攻击是数据投毒、提示注入。
    I∈{0,1,2,3}I \in \{0, 1, 2, 3\}
  4. A(可用性)服务能否正常响应,典型攻击是拒绝服务与算力耗尽。
    A∈{0,1,2,3}A \in \{0, 1, 2, 3\}

风险优先级排序

防贼顾问把清单摊在桌上,画了一个“值钱程度×难撬程度”的坐标图:后窗最好撬,但仓库只有旧纸箱,低优先级;前门锁难撬,但收银台现金多,必须优先加固;最揪心的是监控死角的消防通道——不算最好撬,但一旦通了就能直达仓库和收银台,第一周就要处理。

这就是风险优先级排序:攻击面很多,红队不可能一次全测,必须按风险值排出先后顺序——风险高、易被利用、损失大的攻击面优先测试。排序把攻击面的暴露程度与潜在危害结合成量化风险值,确保有限的测试资源花在刀刃上。这一步是威胁建模从“描述问题”走向“指导行动”的关键转折点。

风险排序使用“可能性×影响”的核心公式:

店主看了排序表,果断采纳“先封消防通道、再换前门锁”的建议。威胁模型输出的优先级矩阵同样如此——高危攻击面位列测试榜首,低危项目往后放甚至豁免,测试预算花得明明白白。

R=L×I\displaystyle R = L \times I
风险 = 可利用性(Likelihood)× 影响(Impact)。两个因子先各自归一化到同一量纲,再相乘得到可排序的标量。
  1. L(可利用性)该攻击面被攻破的难易程度,取决于暴露广度、攻击者能力匹配度、已有防护强度。
    L∈[0,1]L \in [0, 1]
  2. I(影响)该攻击面上的潜在危害强度,可由CIA向量综合换算。
    I∈[0,1]I \in [0, 1]
  3. ×(相乘)乘积把两个维度压缩成一个排序标量,任何一方过低都会显著降低风险值。
    R=L×IR = L \times I

结构化路线图

防贼顾问最后交出的不是零散建议,而是一份带时间的行动计划:第一周封死消防通道、装红外报警;第一个月换卷帘门锁;季度大促前培训店员双人值守;每季度复查一次地图。店主照着执行,心里踏实了。

红队测试的威胁建模也要落地为可执行的结构化路线图(Structured Roadmap):把排序好的风险逐一转化为具体测试任务,明确测试目标(要验证什么安全假设)、界定测试范围(测哪些攻击面、不测哪些)、编排测试顺序(高危优先、依赖先行)、分配资源(人力、算力、时间预算)。路线图让红队从“心里有数”变成“手里有活”,也让利益相关方清楚“要测什么、为什么先测它”。

结构化路线图本质上是一个有序的测试任务序列:

防贼顾问说:“地图画得再好,不按步骤走也是白搭。”威胁建模也一样——把“测什么、为什么测、先测谁”落成一张路线图,红队上阵只管按图执行。这张图,就是AI红队测试从规划到执行的最后一公里。

Plan={t1→t2→⋯→tk}\displaystyle \text{Plan} = \{ t_1 \to t_2 \to \dots \to t_k \}
其中 t_i 是按风险优先级排序后的第 i 个测试任务,箭头表示执行的先后顺序与依赖关系。
  1. Plan(测试计划)路线图的整体框架,是威胁模型的可执行输出,交给红队直接照做。
    Plan\text{Plan}
  2. t_i(测试任务)每个任务对应“一个攻击面 + 一种攻击手法”的组合,比如对推理接口执行提示注入。
    tit_i
  3. →(顺序关系)任务之间有先后与依赖,先打通基础入口,再执行上层攻击,避免重复与遗漏。
    t1→t2→⋯→tkt_1 \to t_2 \to \dots \to t_k
  4. k(任务总数)由测试范围决定,范围扩大则任务数增加,资源预算随之调整。
    kk

AI 应用场景

大模型客服系统上线前的红队评估

阶段:红队测试规划阶段

解决的问题:产品团队上线前不知道“最该担心什么”。传统做法是让测试人员凭经验随机试各种攻击,覆盖面零散且容易遗漏关键风险。通过威胁建模,系统梳理出用户提示入口、外部知识库接口、模型推理API三大攻击面,按可利用性与影响排序后,提示注入被列为第一优先级;测试资源集中投入后,2周内定位并修复了“诱导客服泄露内部知识库”的高危漏洞。

具体案例:一家电商AI客服公司在上线前对LLM应用做威胁建模。攻击面分析发现用户对话输入直接拼接系统提示词,且日志接口未鉴权。危害评估判定“知识库泄露 + 日志越权”属于机密性高损失。路线图将这两项列为头号测试任务,红队据此构造攻击载荷并成功复现,修复后才准予上线。

金融风控模型的数据管道威胁建模

阶段:模型部署后持续安全评估

解决的问题:反欺诈模型依赖上游供应商提供的交易特征数据,数据管道不设防可能导致投毒。威胁建模将训练数据管道识别为攻击面,攻击者画像定位为“有经济动机的作弊团伙”,危害评估发现完整性破坏会直接放大欺诈放行率。按风险排序,数据完整性校验被列为最高优先级改进项。

具体案例:某金融平台在模型迭代时重画威胁模型,识别出特征工程库的第三方依赖存在供应链投毒入口。红队模拟注入0.5%的恶意样本后,模型对某类欺诈交易的识别率下降37%。平台随即修复依赖锁定并增加数据校验,该风险被移出高危区。

Python 演示

python40 行
# AI红队威胁建模演示:枚举攻击面、计算风险并生成测试路线图 class ThreatModel:    def __init__(self, system_name):        self.system_name = system_name        self.surfaces = []        self.likelihood_map = {'低': 0.3, '中': 0.6, '高': 0.9}        self.impact_map = {'低': 1, '中': 2, '高': 3}     def add_surface(self, name, category, likelihood, impact):        self.surfaces.append({            'name': name,            'category': category,            'likelihood': self.likelihood_map[likelihood],            'impact': self.impact_map[impact],            'likelihood_text': likelihood,            'impact_text': impact        })     def score_all(self):        for s in self.surfaces:            s['risk'] = round(s['likelihood'] * s['impact'], 2)        return sorted(self.surfaces, key=lambda x: x['risk'], reverse=True)     def build_roadmap(self):        ordered = self.score_all()        print('=== 威胁模型:{} ==='.format(self.system_name))        for i, s in enumerate(ordered, 1):            print('{}. [{}] {} 风险={} (可能={}, 影响={})'.format(                i, s['category'], s['name'], s['risk'],                s['likelihood_text'], s['impact_text']))  if __name__ == '__main__':    model = ThreatModel('AI客服系统')    model.add_surface('提示注入', '推理接口', '高', '高')    model.add_surface('模型窃取', '推理接口', '中', '中')    model.add_surface('数据投毒', '训练管道', '低', '高')    model.add_surface('隐私泄露', '数据输入', '中', '高')    model.build_roadmap()
目的:用 30 行代码演示威胁建模的核心流程——定义攻击面、按公式 R=L×I 计算风险、按风险值降序输出测试路线图。
  1. self.likelihood_map = {'低': 0.3, '中': 0.6, '高': 0.9}把人工定性等级映射成数值,让公式可以计算
  2. 'likelihood': self.likelihood_map[likelihood]录入攻击面时即刻完成定性到定量转换
  3. s['risk'] = round(s['likelihood'] * s['impact'], 2)核心公式实现:风险 = 可利用性 × 影响
  4. return sorted(self.surfaces, key=lambda x: x['risk'], reverse=True)按风险值降序输出,对应优先级矩阵
  5. for i, s in enumerate(ordered, 1):逐个编号输出,形成可执行的测试路线图

常见误区

误区我觉得威胁建模就是把已知漏洞一个个写下来,测试时对着清单打勾就行,和写测试用例没区别。

正解威胁建模列的是“攻击面 + 攻击者 + 危害 + 优先级”,不是漏洞清单。漏洞是具体的代码缺陷(比如某个接口没鉴权),而攻击面是“这个接口存在且可以被触达”。威胁建模回答的是“哪些门可能被撬、撬开损失多大”,至于门锁是哪颗螺丝松了(漏洞利用),是红队测试阶段的事。就像防贼顾问画的是门窗位置图,不是具体哪颗螺丝松了,这是两件事。

为何常见:人们习惯把安全问题等价于漏洞库,忽略了攻击面、攻击者与危害这些前置结构,导致建模变成“搜漏洞”。

误区系统上线前做一次威胁建模,测试完就万事大吉,文档存档后再也不用看。

正解AI系统迭代频繁,模型更新、数据管道变化、依赖升级,每一次变更都可能引入新攻击面或改变攻击者画像。威胁模型必须是活文档,随系统演进定期重画,否则会拿着过期地图找新路。想想便利店的货架改一次,监控死角就变一次,防贼地图也得重画。

为何常见:把威胁建模当成一次性的交付物,忽视了软件生命周期中系统持续变化的事实。

误区把所有风险分数加起来得到一个总值,根据总值判断系统安不安全,总值低就放心了。

正解威胁建模的排序是逐项打分排序(每个攻击面有独立的 R=L×I),不是把分数加总。加总会让一个致命高危被一群低危“平均”掉——10个低危加起来数字很大,但真正能把系统打穿的可能就那一个高危。防贼顾问不会说“小偷小摸损失加起来不超过大劫案,所以随便防”,他要单独盯住那个决定性的风险。

为何常见:习惯用单一总分数概括安全状态,但安全风险的本质是极值决策而非均值决策。

误区既然要防就按最强攻击者来防,只考虑国家级黑客,其他都不用管。

正解威胁建模要按“能力×动机”同时考虑多类攻击者,因为不同攻击者选择的攻击面和手段完全不同。脚本小子只会扫公开漏洞,职业团伙可能用0day,国家级团队会动用供应链。只盯着最强对手,会漏掉大量真实发生的高频低成本攻击,还会让防护成本失控——便利店不会按防核弹标准装修。

为何常见:追求“绝对安全”的心理倾向,导致建模脱离实际威胁分布,反而失去指导意义。

面试题

Q1. 威胁建模在AI红队流程中处于什么位置?

单选题 · easy

  • A.漏洞利用之后进行的取证分析
  • B.动手测试之前的前置规划环节← 正确答案
  • C.与渗透测试同时进行的并行活动
  • D.修复漏洞后才开始的验收工作

答案:B。威胁建模是红队流程最前置的规划环节,动手前先梳理攻击面、攻击者与危害并输出路线图。A把它放在测试之后,C把它与测试混在一起,D把它当成验收,都不符合“先谋后动”的定位。

Q2. 威胁模型四元组 M={A,T,H,P} 中,字母 T 代表什么?

单选题 · easy

  • A.测试时间(Time)
  • B.攻击面(Attack Surface)
  • C.攻击者集合(Threat Actor)← 正确答案
  • D.测试工具(Tool)

答案:C。T 是 Threat Actor(攻击者);A 是攻击面,H 是潜在危害,P 是优先级。易错点是把 T 当成 Time 或 Tool,但在威胁模型中它专指“可能来攻击的角色集合”。

Q3. CIA三元组中,数据投毒主要破坏的是哪一项?

单选题 · easy

  • A.机密性(Confidentiality)
  • B.完整性(Integrity)← 正确答案
  • C.可用性(Availability)
  • D.合规性(Compliance)

答案:B。数据投毒篡改训练样本使模型行为偏离预期,属于完整性破坏。模型窃取破坏机密性(参数泄露),拒绝服务破坏可用性。合规性不属于CIA三元组,是额外的业务维度。

Q4. 以下哪些属于AI系统的攻击面类别?

多选题 · mid

  • A.用户提示词与上传文件入口← 正确答案
  • B.模型推理API调用端点← 正确答案
  • C.训练数据采集清洗管道← 正确答案
  • D.员工考勤与绩效管理系统

答案:ABC。前三项分别对应数据输入、推理接口、训练管道三大攻击面。D是传统企业内部系统,不属于AI模型可被攻击者触碰的攻击面,选它说明混淆了“系统组件”与“可被利用入口”两个概念。

Q5. 风险评分公式 R=L×I 中,L 代表什么?

单选题 · mid

  • A.损失金额的大小
  • B.被利用的可能性← 正确答案
  • C.系统负载的高低
  • D.日志数量的多少

答案:B。L 是 Likelihood,即该攻击面被利用的可能性,取决于暴露程度、攻击者能力匹配与防护强度。损失金额实际上是 I(Impact)的语义,把 L 当 Loss 是常见字母混淆。

Q6. 关于攻击者画像,下列说法正确的是?

多选题 · hard

  • A.按能力与动机两维度刻画← 正确答案
  • B.只需考虑能力最强的攻击者
  • C.不同攻击者偏好不同攻击面← 正确答案
  • D.攻击者画像是一次性静态结论

答案:AC。威胁度=能力×动机,A正确;脚本小子与国家级团队攻击面选择差异巨大,C正确。B错在“只需”——会漏掉高频低成本攻击;D错在画像要随系统演进更新。

Q7. 威胁建模输出“结构化路线图”的核心作用是什么?

单选题 · mid

  • A.记录攻击过程证据供复盘
  • B.将优先风险转为有序测试任务← 正确答案
  • C.替代渗透测试的自动扫描
  • D.作为修复完成后的验收标准

答案:B。路线图把排序好的风险逐项转成 t1→t2→…→tk 测试任务序列,明确先测谁、后测谁。A是测试期间的事后记录,C把路线图与扫描工具混为一谈,D与威胁建模职责无关。

Q8. 风险优先级排序最终输出的形式是什么?

单选题 · mid

  • A.按资产价值降序的清单
  • B.按风险值降序的优先级矩阵← 正确答案
  • C.按攻击者数量分组的列表
  • D.按漏洞CVSS分数汇总的表

答案:B。输出的是按 R=L×I 降序排列的优先级矩阵,高风险攻击面位于榜首。A只看资产不看风险,C与攻击面无关,D属于漏洞评分体系,是另一个层次的工作。

Q9. 为什么威胁模型需要持续迭代更新?

多选题 · hard

  • A.模型版本更新会引入新攻击面← 正确答案
  • B.数据管道变化会改变攻击路径← 正确答案
  • C.攻击者能力动机随时间演进← 正确答案
  • D.为了定期向管理层汇报

答案:ABC。模型、数据、依赖的每次变化都让攻击面改变,攻击者的工具与动机也会演进,所以威胁模型必须定期重画。D“为了汇报”不是迭代的根本原因,属于本末倒置。

Q10. 攻击面A暴露度极高但仅损失公开脱敏数据(L=0.9,I=1),攻击面B暴露度低但可篡改模型输出(L=0.3,I=3)。应如何排序?

单选题 · extreme

  • A.无条件优先测A因为暴露度高
  • B.无条件优先测B因为影响最大
  • C.乘积等值需结合业务场景权衡← 正确答案
  • D.直接放弃低暴露的攻击面B

答案:C。R_A=0.9,R_B=0.9,公式层面等值。但威胁建模不是机械计算:若系统用于金融决策,B的完整性破坏实际危害远大于脱敏数据泄露,需结合业务上下文修正排序。A、B只盯单一维度,D直接放弃是危险的。