威胁建模基础:STRIDE、DREAD与攻击树分析

威胁建模,说白了就是“先想好敌人会怎么打,再决定怎么防”。

我在汽车安全项目里见过太多团队,一上来就堆防火墙、刷加密,结果漏洞根本没堵对地方。为什么?因为没做威胁建模。

这一章,我们聊聊三个最常用的工具:STRIDE、DREAD 和 攻击树。它们不复杂,但很实用。

STRIDE模型:六类威胁,一个框架

STRIDE 是微软提出的威胁分类法。每个字母代表一类威胁:

字母 威胁类型 通俗理解 汽车场景举例
S Spoofing(欺骗) 冒充别人身份 伪造ECU身份,发送虚假CAN消息
T Tampering(篡改) 修改数据或代码 刷写篡改过的固件,绕过排放检测
R Repudiation(抵赖) 做了不承认 攻击者否认发送过恶意诊断请求
I Information Disclosure(信息泄露) 不该看的被看到 通过OBD接口窃取车辆位置数据
D Denial of Service(拒绝服务) 让系统没法用 向CAN总线发送大量高优先级报文,导致刹车延迟
E Elevation of Privilege(权限提升) 低权限拿到高权限 从信息娱乐系统漏洞获取网关控制权
我的习惯:每次做威胁建模,我都会拿 STRIDE 当 checklist 过一遍。不是每个系统都有六类威胁,但漏掉一类可能就出大事。

举个例子。我参与过一个 T-Box(车载通信终端)项目。用 STRIDE 一分析:

  • S:攻击者伪造云端服务器,诱导 T-Box 上传敏感数据。
  • T:攻击者篡改 OTA 升级包,植入恶意代码。
  • R:攻击者发送非法指令后,日志被删除,无法追溯。
  • I:T-Box 与云端通信未加密,车辆 VIN、位置信息被窃听。
  • D:攻击者向 T-Box 发送大量无效请求,导致通信模块死机。
  • E:利用 T-Box 的 root 权限漏洞,控制整车网络。

你看,这么一列,哪些地方要重点防护,心里就有数了。

DREAD模型:给威胁排个优先级

STRIDE 告诉我们“有什么威胁”,但没告诉我们“哪个威胁最要命”。

DREAD 就是干这个的。它给每个威胁打分,帮你决定先修哪个洞。

字母 评估维度 评分标准(1-10分)
D Damage(损害) 1=轻微影响,10=全车失控
R Reproducibility(可复现性) 1=极难复现,10=每次都能成功
E Exploitability(利用难度) 1=需要超级计算机,10=随便找个工具就能搞
A Affected Users(受影响用户) 1=个别人,10=所有车主
D Discoverability(发现难度) 1=几乎不可能发现,10=漏洞公开在论坛上

评分后,把五个分数加起来,就是威胁的风险值。

  • 40-50分:高危,必须立即修复。
  • 20-39分:中危,需要制定修复计划。
  • 10-19分:低危,可以接受或后续处理。
我曾经踩过的坑:有次给一个网关做评估,我凭直觉觉得某个威胁很严重,给了高分。后来用 DREAD 一算,发现它复现条件极其苛刻,实际风险很低。反倒是另一个不起眼的威胁,因为可复现性高、影响面广,总分排第一。从那以后,我再也不敢凭感觉排优先级了。

攻击树分析:把攻击路径画出来

STRIDE 和 DREAD 是“找威胁”和“排优先级”。但攻击者具体怎么下手?这就需要攻击树了。

攻击树是一种树形结构:根节点是攻击目标,子节点是达成目标需要的步骤。AND 节点表示所有子条件必须同时满足,OR 节点表示满足任一子条件即可。

核心思路:攻击树把一次攻击拆解成多个步骤。你只要打断其中一步,攻击就失败了。

下面是我画的一个简化版攻击树,目标是“远程控制车辆刹车”:

攻击树示例:远程控制车辆刹车 远程控制刹车 OR: 通过T-Box入侵 OR: 通过OBD接口入侵 AND: 获取T-Box root权限 AND: 破解CAN网关认证 OR: 物理接入OBD端口 发送伪造刹车报文 利用诊断服务绕过安全访问 利用OTA漏洞提权 暴力破解CAN ID 说明:AND节点表示所有子条件必须同时满足;OR节点表示满足任一子条件即可。 攻击者只要打通一条路径就能达成目标。防御方需要阻断所有路径。

画完攻击树,你就能清楚地看到:

  • 攻击者有哪些可选路径。
  • 哪些节点是“单点失效”——只要守住它,所有攻击都白费。
  • 哪些攻击路径成本最低、最容易实现。
我的经验:攻击树别画太细。画到第三层就够了,再往下就是具体漏洞利用细节,那是渗透测试的事。威胁建模阶段,我们关心的是“攻击路径”,不是“攻击代码”。

三个工具怎么配合?

你可能会问:这三个东西到底怎么一起用?

我一般按这个流程走:

  1. 先用 STRIDE 过一遍系统架构,列出所有可能的威胁类型。
  2. 再用攻击树 把高风险的威胁展开,画出具体的攻击路径。
  3. 最后用 DREAD 给每条攻击路径打分,确定修复优先级。

举个例子。我在一个智能座舱项目里,先用 STRIDE 发现“信息泄露”风险很高——车载摄像头画面可能被远程窃取。然后画攻击树,发现攻击者可以通过“破解 Wi-Fi 密码 → 进入车机网络 → 访问摄像头流”这条路径。最后用 DREAD 一算,总分 42 分,高危。于是我们紧急加固了 Wi-Fi 接入认证,并给摄像头流加了加密。

注意:DREAD 的评分是主观的。不同的人可能打出不同的分。我建议团队一起评,取平均值,或者至少让两个人独立评分再讨论。一个人说了算,容易偏。

好了,STRIDE、DREAD、攻击树,这三个工具你记住了吗?