4、攻击路径分析:攻击树建模、攻击可行性评估、攻击路径量化

攻击路径分析,说白了就是回答一个问题:攻击者到底能不能摸到我的资产?

在 TARA 里,我们前面已经识别了资产、找到了威胁场景。但光知道「有人可能通过 OBD 口搞事情」还不够。你得把攻击者每一步怎么走、需要什么条件、花多少时间,全摆到桌面上来。

我个人习惯把这一步叫做「把威胁翻译成技术动作」。你想想看,一个远程攻击,从互联网入口到车内网关,再到目标 ECU,中间要过多少道坎?每一道坎,就是一个攻击节点。

4.1 攻击树建模:把攻击路径画出来

攻击树(Attack Tree)是 ISO 21434 里最常用的建模方法。它长什么样?根节点是攻击目标,子节点是达成目标需要的子步骤,叶子节点是具体的攻击动作。

核心原则:攻击树的「与/或」逻辑决定了攻击的难度。

  • AND 节点:所有子条件必须同时满足,攻击才能成功。
  • OR 节点:只要满足任意一个子条件,攻击就能推进。

举个例子。我在做某个 T-Box 项目时,遇到过这样一个场景:攻击者想通过远程接口篡改固件。攻击树长这样:

攻击树示例:远程篡改 T-Box 固件 远程篡改固件 获取远程访问权限 绕过签名校验 维持持久连接 AND 暴力破解密码 利用已知漏洞 社会工程学 OR 提取公钥 伪造签名 AND 说明 AND 节点:所有子条件必须同时满足。OR 节点:任一子条件满足即可。 叶子节点是具体的攻击动作,需要评估可行性。

我的经验:画攻击树时别贪大求全。我见过有人把一棵树画了七八层,结果一半节点根本不可能实现。建议先画主干,再逐步细化。控制在 3~4 层以内,否则评审时没人看得完。

4.2 攻击可行性评估:时间、设备、知识

树画好了,接下来要回答:这些叶子节点,攻击者到底能不能做到?

ISO 21434 没有规定死评估方法,但业界公认的三个维度是:时间、设备、知识。我习惯用一个简单的三维打分表来做初步筛选。

维度 低(1分) 中(2分) 高(3分)
时间 几分钟到几小时 几天到几周 几个月以上
设备 普通电脑 + 开源工具 专业调试器 + 商业软件 定制硬件 + 实验室环境
知识 公开资料、通用技能 特定领域经验、内部文档 零日漏洞、芯片级逆向

怎么用?举个例子。攻击树里有个叶子节点叫「通过 CAN 总线发送伪造报文」。评估一下:

  • 时间:2 分。需要先逆向 DBC 文件,大概花几天。
  • 设备:1 分。一个 PCAN-USB 加 Wireshark 就够了。
  • 知识:2 分。懂 CAN 协议和 UDS 诊断就行,网上教程很多。

总分 = 2+1+2 = 5。我个人习惯把总分 ≤4 定为「高可行」,5~7 为「中可行」,≥8 为「低可行」。这个阈值可以根据项目风险偏好调整。

避坑指南:我曾经在一个项目里,把「知识」维度打低了。团队觉得某个攻击需要芯片级逆向,肯定很难。结果三个月后,攻击者用侧信道攻击真的拿到了密钥。后来我学乖了——永远不要低估攻击者的学习能力。知识维度建议参考公开漏洞库(CVE)和学术论文,别只凭感觉。

4.3 攻击路径量化:从定性到定量

评估完单个叶子节点,还得把整条路径串起来算总账。这里我推荐两种方法:

4.3.1 攻击难度累加法

对于 AND 节点,攻击难度 = 各子节点难度之和。对于 OR 节点,攻击难度 = 子节点中的最小值。

为什么?因为 AND 要求所有条件都满足,难度叠加;OR 只要挑最容易的走,攻击者肯定选最省事的。

# 攻击难度计算示例
# 叶子节点难度(1=低,3=高)
leaf_nodes = {
    '暴力破解密码': 2,
    '利用已知漏洞': 1,
    '社会工程学': 3,
    '提取公钥': 2,
    '伪造签名': 3,
    '维持持久连接': 2
}

# OR 节点:取最小值
access_difficulty = min(2, 1, 3)  # = 1

# AND 节点:取和
bypass_difficulty = 2 + 3  # = 5

# 根节点 AND:取和
total_difficulty = access_difficulty + bypass_difficulty + 2  # = 8
print(f"攻击路径总难度:{total_difficulty}")

4.3.2 攻击成本量化法

更精细的做法是把时间、设备、知识换算成成本。比如:

  • 时间成本:按工程师时薪 × 预估工时
  • 设备成本:工具采购或租赁费用
  • 知识成本:参考漏洞悬赏金额或培训成本
攻击路径 时间成本 设备成本 知识成本 总成本
路径A:远程利用漏洞 $5,000 $500 $10,000 $15,500
路径B:物理接触OBD $2,000 $3,000 $2,000 $7,000
路径C:无线侧信道 $20,000 $15,000 $50,000 $85,000

关键结论:攻击路径量化不是为了得到一个精确数字,而是为了比较不同路径的相对风险。你想想看,如果路径A成本 $15,500,路径B只要 $7,000,那显然路径B是更现实的攻击入口。安全防护资源应该优先堵住路径B。

4.4 实战中的常见误区

做了这么多年 TARA,我总结了几条容易翻车的地方:

  1. 攻击树太理想化:别假设攻击者会按你的树一步步走。真实攻击往往是跳跃的、组合的。建议画完树后,找几个没参与建模的同事「红队演练」一下。
  2. 忽略攻击链的复用性:同一个叶子节点可能出现在多条路径里。比如「提取公钥」既可以用在固件篡改,也可以用在通信劫持。评估时要考虑复用带来的成本分摊。
  3. 时间维度只看绝对时间:我见过有人把「需要 6 个月」的攻击直接标为低风险。但别忘了,攻击者可能同时投入多个资源。6 个月对 APT 组织来说根本不是问题。
  4. 设备成本只看硬件:云服务、API 调用、数据标注这些隐性成本往往被忽略。现在很多攻击工具是 SaaS 化的,按小时付费,门槛比想象的低。

一个小技巧:在做攻击可行性评估时,我习惯把每个叶子节点写成「攻击者画像」的形式。比如:「攻击者是一名汽车电子爱好者,有 CAN 分析经验,预算 $500,时间 2 周」。这样评审时大家更容易达成共识,而不是抽象地打分。

好了,攻击路径分析的核心就是这些。记住:攻击树是骨架,可行性评估是血肉,量化是灵魂。三者缺一不可。