跳至正文
AutoST by Zyberum GmbH
菜单
UDS枚举

UDS 枚举详解:如何安全地绘制 ECU 诊断面

UDS 枚举能在汽车 ECU 上发现什么,为什么诊断会话和服务至关重要,以及非破坏性扫描如何在不干扰 ECU 的前提下绘制出完整的诊断面。

Tom Zaubermann · 发布于 · 7 分钟阅读

在为电子控制单元做安全加固之前,你必须先知道它暴露了什么。UDS(统一诊断服务,ISO 14229)是绝大多数 ECU 用于诊断的语言,而枚举就是把它提供的一切绘制出来的过程:存在哪些诊断会话,每个会话中哪些服务会应答,以及哪些数据标识符可以被读取。

为什么枚举是第一步

ECU 并不是一个扁平的单一接口。在默认会话中保持沉默的服务,可能会在扩展会话或编程会话中应答。一个看似无害的数据标识符,可能返回序列号、标定值,甚至是一个秘密。在逐个会话走完整个表面之前,你对攻击面只是在猜测。

一次合格的扫描应覆盖什么

一次彻底的枚举会遍历四个层面:

  • 端点。 ECU 会应答的 ISO-TP 地址对,覆盖 11 位和 29 位两个范围。
  • 会话。 默认会话、扩展会话,以及需要谨慎处理的编程会话。进入会话的过程必须足够稳健,因为有些网关会卡在里面。
  • 服务。 每一个服务 ID,在每个会话中逐一探测并分类:支持、因安全原因被拒绝、当前会话不支持,或条件不满足。
  • 数据标识符。 可读的 DID,无论是标识范围还是完整的标识符空间。

保持非破坏性

枚举应该只读不写。它发现存在的内容,并标记出有风险的服务(ECU 复位、例程控制、内存访问),但不会触发它们。这正是“理解一个 ECU”与“干扰一个 ECU”的区别,也是枚举成为任何模糊测试或写入测试之前安全第一步的原因。

AutoST 的枚举引擎做的正是这件事:自动完成,只需几分钟,并对发现的高风险服务进行评分,让你清楚接下来该往哪里看。

FAQ

常见问题

UDS 枚举安全吗?

做得对的话,是安全的。枚举只做发现和读取,不写入也不做模糊测试。编程会话会被谨慎处理,因为有些 ECU 会卡在该会话中。

什么是诊断会话?

UDS 会话(服务 0x10)解锁不同的服务集合。默认会话功能有限;扩展会话和编程会话暴露更多内容,这正是它们值得测试的原因。

致电我们预约演示

选择一个方便的时间

在新标签页中打开