3. 威胁场景分析:定义、STRIDE 方法论与构建实战

威胁场景分析,说白了就是回答一个问题:攻击者到底能怎么搞我们?

我刚开始做 TARA 的时候,总觉得威胁分析就是对着清单打勾。后来在一次真实项目中,一个看似不起眼的 OBD 接口威胁被我们忽略了,结果渗透测试团队只用了一根十几块钱的线,就拿到了网关的控制权。嗯,从那以后我再也不敢小看威胁场景的构建了。

3.1 什么是威胁场景?

威胁场景不是一句「有人会攻击我们」这种废话。它是一个具体的、可描述的、有上下文的故事。

我个人习惯这样定义:威胁场景 = 攻击者 + 攻击入口 + 攻击路径 + 造成的损害。

一个合格的威胁场景必须包含:

  • 谁在攻击?(攻击者画像)
  • 从哪里攻击?(攻击界面)
  • 怎么攻击?(攻击步骤)
  • 破坏了什么?(安全属性受损)

举个例子,一个「远程攻击 T-Box」的描述太模糊了。真正的威胁场景应该是:

「攻击者通过蜂窝网络向 T-Box 发送恶意 CAN 报文,绕过身份验证,导致车辆非预期加速。」

看到了吗?入口、路径、后果,全都有了。

3.2 STRIDE 方法论:威胁分类的六把刀

STRIDE 是微软提出来的威胁分类模型。说实话,它不是我见过最复杂的模型,但绝对是最实用的。我在好几个量产项目里都用它,没出过大的遗漏。

字母 威胁类型 破坏的安全属性 一句话理解
S Spoofing(欺骗) 身份认证 假装自己是别人
T Tampering(篡改) 完整性 改数据、改代码
R Repudiation(抵赖) 不可否认性 做了不承认
I Information Disclosure(信息泄露) 机密性 不该看的被看到了
D Denial of Service(拒绝服务) 可用性 系统瘫了、用不了
E Elevation of Privilege(权限提升) 授权 普通用户干管理员的事

我的实战经验:在车载场景里,S、T、D 这三类出现频率最高。R(抵赖)在 ECU 日志场景里才常见,E(权限提升)更多出现在域控制器或中央网关。别每类都平均用力,要结合系统特点来。

3.3 如何构建威胁场景?—— 四步法

我总结了一套四步法,在多个项目里验证过,效率不错。

  1. 第一步:确定分析对象 —— 是哪个 ECU?哪个功能?哪个数据流?
  2. 第二步:识别攻击界面 —— 物理接口?无线接口?传感器?诊断口?
  3. 第三步:套用 STRIDE 逐类分析 —— 对每个界面,问自己六类威胁是否存在。
  4. 第四步:描述具体场景 —— 用「攻击者 + 入口 + 路径 + 后果」的格式写出来。

举个例子,我们分析一个 智能座舱的 OTA 升级功能:

步骤 内容
分析对象 OTA 升级模块(从云端下载固件到座舱域控制器)
攻击界面 蜂窝网络、Wi-Fi、USB 本地刷写
STRIDE 分析 S:伪造 OTA 服务器 → 欺骗
T:篡改固件包 → 篡改
D:发送大量升级请求 → DoS
威胁场景描述 攻击者伪造 OTA 服务器证书,向座舱域控制器推送含恶意代码的固件,导致系统被植入后门。

我曾经踩过的坑:有一次我们只分析了无线接口,完全忽略了 USB 本地刷写口。结果渗透测试团队直接通过 USB 注入了一个伪造的升级包,绕过了所有云端安全校验。所以,攻击界面一定要列全,别只盯着「看起来危险」的接口。

3.4 STRIDE 在车载场景的适配技巧

STRIDE 是通用模型,但车载场景有它的特殊性。我个人习惯做一点微调:

  • Spoofing:重点关注 V2X 消息伪造、ECU 身份伪造、传感器数据欺骗(比如 GPS 欺骗)。
  • Tampering:重点关注 CAN 报文篡改、固件篡改、配置参数篡改。
  • Repudiation:重点关注日志系统是否可信,事件溯源是否完整。
  • Information Disclosure:重点关注密钥泄露、用户隐私数据泄露、调试接口暴露。
  • Denial of Service:重点关注 CAN 总线泛洪、OTA 带宽耗尽、传感器盲化。
  • Elevation of Privilege:重点关注诊断会话提权、Hypervisor 逃逸、安全域绕过。

3.5 威胁场景构建的常见误区

我带过不少团队做 TARA,发现新手最容易犯这几个错:

误区一:威胁场景写得太抽象

❌ 「攻击者可能通过网络攻击车辆。」
✅ 「攻击者通过 Wi-Fi 热点向 IVI 发送畸形 HTTP 请求,触发缓冲区溢出,获得 root 权限。」

误区二:只写后果,不写路径

❌ 「可能导致车辆失控。」
✅ 「攻击者通过蓝牙发送恶意诊断指令,绕过网关过滤规则,直接控制制动系统。」

误区三:忽略攻击者能力假设

同一个威胁场景,远程攻击者和物理接触攻击者的风险等级完全不同。一定要在场景里注明攻击者的访问级别。

3.6 本章知识结构图

下面这张图概括了威胁场景分析的核心逻辑,我建议你把它贴在工位旁边:

威胁场景分析核心逻辑 威胁场景分析核心逻辑 威胁场景 攻击者画像 攻击入口 攻击路径 损害后果 STRIDE 六类威胁:Spoofing | Tampering | Repudiation | Information Disclosure | DoS | Elevation 构建方法:确定对象 → 识别界面 → STRIDE 分析 → 描述场景 输出:结构化威胁场景清单 每个威胁场景必须同时包含四个要素,缺一不可

3.7 实战建议

最后,给你几个我在项目里沉淀下来的建议:

  • 别一个人闷头想 —— 拉上系统工程师、功能安全工程师一起做 STRIDE 脑暴,不同视角能发现更多威胁。
  • 用模板固化输出 —— 每个威胁场景都按统一格式写,方便后续风险评估和追溯。
  • 定期更新威胁场景库 —— 新漏洞、新攻击手法出现后,回头看看之前的场景有没有遗漏。

一个小技巧:我习惯在威胁场景描述里加一个「攻击难度」的初步判断(高/中/低),虽然正式的风险评估在后面,但这个初步判断能帮团队快速聚焦高优先级场景。