2、威胁建模与风险评估:TARA方法论、攻击树分析、风险等级判定

好,咱们进入第二章。说实话,威胁建模这块,是很多工程师觉得「虚」的地方。总觉得画几张图、列几个表,能解决啥实际问题?

我刚开始做车载安全那会儿,也这么想。直到有一次,我们一个T-Box项目在渗透测试中被攻破了远程解锁接口。复盘时才发现,这个攻击路径在威胁建模阶段其实已经被识别出来了,但当时觉得「概率太低」就给忽略了。嗯,从那以后,我再也不敢轻视TARA了。

2.1 TARA方法论:从资产到风险的完整链路

TARA,全称是Threat Analysis and Risk Assessment。说白了,就是一套系统化的「找茬」流程。它帮你回答三个问题:什么东西值得保护?谁会来攻击?后果有多严重?

我个人习惯把TARA分成五个步骤:

  1. 资产识别 – 找出需要保护的东西
  2. 威胁场景分析 – 设想可能的攻击方式
  3. 影响评级 – 评估出事后的损失
  4. 攻击可行性分析 – 判断攻击难度
  5. 风险等级判定 – 综合得出最终结论

你想想看,这其实跟医生看病很像。先问哪里不舒服(资产),再推测可能是什么病(威胁),最后判断严重程度(风险)。

核心要点:TARA不是一次性工作。我建议在每个架构迭代中都跑一遍。因为新功能引入,往往意味着新攻击面。

2.2 攻击树分析:把攻击路径可视化

攻击树,是我个人非常喜欢的一个工具。它把一次攻击拆解成多个子目标,形成一棵倒着长的树。

举个例子。假设我们要分析「攻击者通过OTA升级植入恶意固件」这个场景。攻击树可能是这样的:

根节点:成功植入恶意固件
├── OR 获取签名私钥
│   ├── 从服务器窃取
│   ├── 从开发环境泄露
│   └── 暴力破解
├── AND 绕过签名验证
│   ├── 利用缓冲区溢出
│   └── 篡改验证逻辑
└── AND 物理访问ECU
    ├── 打开车辆外壳
    └── 连接调试接口

这里要注意「AND」和「OR」节点。AND表示所有子条件必须同时满足,OR表示只要满足一个就行。这直接影响风险评估的结论。

我的经验:画攻击树时,别贪多。我一般控制在3-4层深度。太深了反而看不清重点。曾经有个项目,团队画了一棵7层的攻击树,最后发现90%的叶子节点根本不可能实现,白白浪费了时间。

2.3 风险等级判定:量化你的焦虑

风险等级判定,说白了就是把「感觉」变成「数字」。ISO 21434里推荐了一个经典矩阵:

攻击可行性 影响:严重 影响:主要 影响:轻微
严重
可忽略

影响评级我一般看四个方面:

  • 安全 – 会不会导致人员伤亡?
  • 财产 – 车辆损坏还是数据泄露?
  • 隐私 – 用户信息被窃取?
  • 合规 – 违反法规要求?

攻击可行性则考虑:

  • 攻击者需要什么设备?
  • 需要多少专业知识?
  • 攻击窗口期多长?
  • 有没有现成的攻击工具?

避坑指南:我曾经犯过一个错误——把「攻击可行性」和「攻击者动机」混为一谈。一个攻击虽然技术上可行,但如果攻击者没有收益,实际风险其实很低。记住,我们评估的是「可能性」,不是「能力」。

2.4 实战中的常见误区

做了这么多年安全评估,我总结出几个常见坑:

  1. 过度乐观 – 「这个攻击太复杂了,没人会做」——结果呢?总有比你想象中更执着的人。
  2. 忽略供应链 – 只关注自己的ECU,却忘了第三方库、云服务、甚至芯片本身都可能成为攻击入口。
  3. 静态思维 – 威胁建模不是交作业。车辆上路后,新的攻击手法会不断出现。我建议每半年重新评估一次。
  4. 只画图不行动 – 攻击树画得再漂亮,如果不转化为安全需求,就是一张废纸。

嗯,这里要注意一点。风险评估的最终输出,不是一张表格,而是一份「行动清单」。哪些风险需要立即修复?哪些可以接受?哪些需要持续监控?这些才是真正有价值的东西。

好了,第二章就到这里。下一章我们会聊聊「安全架构设计原则」,看看怎么把这些风险评估结果落地成具体的防护方案。