威胁建模基础: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 节点表示满足任一子条件即可。
核心思路:攻击树把一次攻击拆解成多个步骤。你只要打断其中一步,攻击就失败了。
下面是我画的一个简化版攻击树,目标是“远程控制车辆刹车”:
画完攻击树,你就能清楚地看到:
- 攻击者有哪些可选路径。
- 哪些节点是“单点失效”——只要守住它,所有攻击都白费。
- 哪些攻击路径成本最低、最容易实现。
我的经验:攻击树别画太细。画到第三层就够了,再往下就是具体漏洞利用细节,那是渗透测试的事。威胁建模阶段,我们关心的是“攻击路径”,不是“攻击代码”。
三个工具怎么配合?
你可能会问:这三个东西到底怎么一起用?
我一般按这个流程走:
- 先用 STRIDE 过一遍系统架构,列出所有可能的威胁类型。
- 再用攻击树 把高风险的威胁展开,画出具体的攻击路径。
- 最后用 DREAD 给每条攻击路径打分,确定修复优先级。
举个例子。我在一个智能座舱项目里,先用 STRIDE 发现“信息泄露”风险很高——车载摄像头画面可能被远程窃取。然后画攻击树,发现攻击者可以通过“破解 Wi-Fi 密码 → 进入车机网络 → 访问摄像头流”这条路径。最后用 DREAD 一算,总分 42 分,高危。于是我们紧急加固了 Wi-Fi 接入认证,并给摄像头流加了加密。
注意:DREAD 的评分是主观的。不同的人可能打出不同的分。我建议团队一起评,取平均值,或者至少让两个人独立评分再讨论。一个人说了算,容易偏。
好了,STRIDE、DREAD、攻击树,这三个工具你记住了吗?