3、威胁分析与风险评估(TARA):基于ISO 21434的TARA方法论

好,咱们进入正题。TARA,全称是Threat Analysis and Risk Assessment。说白了,就是给咱们的汽车系统做一次「体检」,看看哪些地方容易被黑客盯上,以及被盯上后后果有多严重。

ISO 21434里把TARA当作核心流程。我个人习惯,拿到一个新项目,第一件事不是写代码,而是先拉上系统工程师、软件工程师,一起把TARA跑一遍。为什么?因为后面所有的安全需求、安全机制,都得从这里长出来。

3.1 TARA的核心目标

你想想看,做网络安全最怕什么?最怕「我以为」。我以为这个接口没人碰,结果被攻破了。我以为这个数据不重要,结果被篡改了。

TARA要解决三个问题:

  • 什么东西需要保护?——识别出关键资产(Asset)
  • 谁可能来搞破坏?——分析威胁场景(Threat Scenario)
  • 搞破坏的后果有多严重?——评估风险等级(Risk Level)

嗯,这里要注意。TARA不是一次性的工作。我在项目中遇到过,产品迭代到第三版,新增了一个OTA功能,结果原来的TARA完全失效了。所以,TARA要跟着项目走,动态更新。

3.2 TARA的七步法

ISO 21434把TARA拆成了七个步骤。我给大家梳理一下,每一步都有坑,我会把踩过的坑指出来。

步骤 名称 核心产出
1 资产识别 资产清单(Asset Inventory)
2 威胁场景识别 威胁场景列表
3 影响评级 影响等级(S, S1-S4)
4 攻击路径分析 攻击可行性等级
5 风险等级确定 风险矩阵(Risk Matrix)
6 风险处置决策 安全目标(Safety Goal)
7 文档化 TARA报告

3.3 资产识别——别漏了「隐形资产」

第一步,找出所有需要保护的「东西」。这里的资产不只是硬件,还包括数据、功能、甚至时间。

举个例子:

  • 硬件资产:ECU、传感器、执行器
  • 软件资产:Bootloader、固件、配置参数
  • 数据资产:车辆VIN、用户隐私、诊断日志
  • 功能资产:制动功能、转向功能、远程解锁
我曾经踩过的坑: 有一次做TARA,我们只关注了「制动功能」这个功能资产,却忽略了「制动踏板位置传感器」这个硬件资产。结果后来发现,攻击者可以通过篡改传感器信号来影响制动。嗯,从那以后,我要求团队必须把资产清单过三遍:功能视角、硬件视角、数据视角。

3.4 威胁场景识别——用STRIDE来帮忙

资产找出来了,接下来要问:这些资产可能被怎么攻击?

我建议用微软的STRIDE模型来引导思考。STRIDE是六个维度的缩写:

  • Spoofing(欺骗):冒充合法实体。比如伪造ECU身份。
  • Tampering(篡改):修改数据或代码。比如篡改固件。
  • Repudiation(抵赖):否认做过的事。比如否认发送过恶意指令。
  • Information Disclosure(信息泄露):敏感数据被偷看。比如窃取密钥。
  • Denial of Service(拒绝服务):让系统不可用。比如CAN总线泛洪攻击。
  • Elevation of Privilege(权限提升):获得不该有的权限。比如从普通用户提权到管理员。

你想想看,每个资产至少过一遍STRIDE,基本不会漏。我在项目中遇到过,团队用STRIDE过了一遍,发现一个「信息泄露」的威胁场景——诊断接口的日志里居然包含了明文密钥。这个要是漏了,后果不堪设想。

3.5 影响评级——别只看技术,要看业务

威胁场景有了,接下来要评估:如果这个威胁真的发生了,会造成什么影响?

ISO 21434把影响分为四个等级:

等级 描述 举例
S1 轻微影响 娱乐系统卡顿,不影响安全
S2 中等影响 导航失效,驾驶员需要手动操作
S3 严重影响 制动助力失效,需要更大力度踩刹车
S4 灾难性影响 制动完全失效,无法减速

我个人习惯: 影响评级不能只让安全工程师拍脑袋。一定要拉上功能安全工程师和系统工程师一起讨论。为什么?因为有些影响是「连锁反应」。比如一个娱乐系统的漏洞,可能通过车内网络影响到制动系统。这种跨域的影响,一个人很难想全。

3.6 攻击路径分析与可行性评估

影响评完了,接下来要看:攻击者要达成这个威胁,难度有多大?

攻击可行性评估,我一般看四个维度:

  • 攻击时间:需要几分钟?几小时?还是几个月?
  • 专业知识:需要普通黑客水平?还是顶级专家?
  • 设备成本:需要一台电脑?还是需要价值百万的专用设备?
  • 攻击机会:需要物理接触?还是远程就能搞定?

举个例子:

  • 远程攻击(比如通过4G/5G)→ 攻击机会高 → 可行性高
  • 需要拆开ECU外壳,用JTAG调试器 → 攻击机会低 → 可行性低

嗯,这里要注意。攻击可行性不是一成不变的。我记得有一次,我们评估一个CAN总线攻击的可行性为「低」,因为需要物理接触。结果后来发现,攻击者可以通过OBD接口的蓝牙适配器远程接入。所以,攻击路径分析一定要动态更新。

3.7 风险等级确定——用矩阵说话

影响等级和攻击可行性都出来了,接下来就是「算账」了。ISO 21434推荐用风险矩阵来确定最终的风险等级。

影响等级 攻击可行性高 攻击可行性中 攻击可行性低
S4(灾难性) 严重风险 严重风险 中等风险
S3(严重) 严重风险 中等风险 低风险
S2(中等) 中等风险 低风险 低风险
S1(轻微) 低风险 低风险 可忽略

避坑指南: 我曾经见过一个团队,把所有风险都评成了「中等」。为什么?因为不敢评「严重」,怕被领导骂;也不敢评「低」,怕被审计说不够严格。结果整个TARA报告失去了区分度。我的建议是:该严重就严重,该低就低。风险等级是用来指导决策的,不是用来讨好谁的。

3.8 风险处置决策——四种选择

风险等级出来了,接下来要决定:怎么处理这个风险?

ISO 21434给出了四种处置方式:

  • 规避(Avoid):直接去掉这个功能或接口。比如,如果远程诊断接口风险太高,干脆砍掉。
  • 降低(Reduce):增加安全机制来降低风险。比如,加加密、加认证、加防火墙。
  • 转移(Transfer):把风险转给第三方。比如,让云服务商负责通信安全。
  • 接受(Accept):风险低到可以接受,或者有业务原因必须保留。但需要记录在案,并得到管理层批准。

我个人习惯,对于「严重风险」,必须降低到「中等」或以下。对于「中等风险」,至少要有缓解措施。对于「低风险」,可以接受,但要定期复查。

3.9 文档化——别让TARA变成「黑盒」

最后一步,把所有的分析过程、决策依据、风险等级都写下来。这不是为了应付审计,而是为了后续的追溯和复用。

一份完整的TARA报告应该包含:

  • 资产清单及分类
  • 威胁场景及对应的STRIDE维度
  • 影响评级及理由
  • 攻击路径分析及可行性评估
  • 风险矩阵及最终风险等级
  • 风险处置决策及对应的安全目标

我曾经踩过的坑: 有一次,我们做完TARA后,没有及时更新文档。三个月后,项目组换了一批人,新来的工程师完全不知道当初为什么做这个决策。结果,他们又把已经规避掉的风险重新引入了。所以,文档不是写给别人看的,是写给未来的自己看的。

3.10 小结

TARA是网络安全设计的「地基」。地基没打好,上面盖的房子再漂亮也没用。我建议大家在项目初期就投入足够的时间做TARA,而不是等到开发快结束了才补。

记住一句话:没有TARA的网络安全,就像没有地图的旅行——你可能走得很远,但大概率会走错方向。

下一章,咱们聊聊如何把TARA的输出转化为具体的安全需求。嗯,那才是真正开始「干活」的时候。