CAN 总线上是否有针对恶意设备的保护措施?

信息安全 硬件 拒绝服务 协议
2021-09-07 06:08:42

CAN(控制器局域网)是所有现代汽车中使用的总线。您可以通过该总线读取很多汽车信息,我认为(但我对此不太确定)一些关键控制信号(中断,例如对于 ESP?)通过该总线。

我对CAN知之甚少:

通过 CAN 总线进行通信的设备必须在开始发送任何其他内容之前发送其标识符。该协议定义具有较低标识符的设备具有优先级。该协议有一个“显性 0”,这意味着如果一个设备将 0 放在总线上,而另一个设备将 1 放在总线上,则 0 在总线上。设备一直在监听,包括发送时。这意味着将其标识符放在总线上的设备在某个位置具有 1,但读取为 0,它知道更高优先级的设备也想要使用总线并且它必须停止。

当攻击者一直通过总线发送“0”时会发生什么?例如,是否有可能升级汽车收音机的软件以将“0”一直放在总线上(请参阅汽车攻击面的综合实验分析以了解许多更复杂的攻击)或者这样的低级协议是否在一种不可更新的方式(例如硬件或ROM),以便不会发生这种攻击?是否可以保护总线免受恶意设备/这种拒绝服务攻击?

2个回答

CAN 设计得相对简单,通常在处理能力非常低的微控制器之间实现(忙于处理时间很重要的事情),并用于实时中继消息。添加一些加密和 DoS 保护会引入太多的复杂性,并且考虑到它只是所有控制器共享的两条线,我认为在这种情况下甚至不可能进行 DoS 保护(如果流氓设备决定泛滥,你会怎么做?有垃圾的总线还是连续保持数据线“高”?)。

部分解决方案是将网络分成多条总线,就像在大多数(所有?)汽车中所做的那样,其中一条单独的总线用于关键元素,网关用于在它们之间中继特定消息。单总线上的 DoS 不会影响另一总线。

确实可以重新编程任何控制器的固件:

邪恶的软件

甚至还有易于使用的软件和硬件。这个特定的屏幕截图显示了一个能够更新引擎控制器和仪表组固件的程序,但我确信这同样适用于所有控制器,只是对能够篡改引擎/仪表组的软件的需求更高(显然原因)比能够与安全气囊或 ABS 交互的那些。我确信犯罪分子正在利用这些漏洞,这再次证明默默无闻的安全是行不通的。

如果您有时间对原始固件进行逆向工程,您可以轻松制作自己的恶意版本,您只需要 30 秒访问汽车的 CAN 总线(通过诊断端口)即可安装新固件。当然,您可以使用无线电作为入口点(例如,通过利用其 MP3 解码功能中的漏洞)进入 CAN 总线并在其他控制器上安装恶意固件。唯一的安全性是协议的模糊性,它会随着时间的推移而衰减。

最后,我认为没有一种有效的方式来保护 CAN 总线 - 加密和身份验证不会起到太大作用 - 它确实可以防止总线上的入侵(例如连接到诊断端口的恶意设备),但不会防止破坏应该可以访问总线的设备(例如收音机),这将是攻击者的主要入口点。

关于安装固件,在安装任何固件之前要求在汽车文件中打印一个唯一的密码是一个很好的解决方案,它可以防止公共汽车上的受感染设备破坏其他设备,同时仍然允许汽车的合法所有者篡改如果他们愿意,可以购买固件(因为必须向经销商支付 300 欧元甚至更多的费用来更换丢失的钥匙或重新编程使用过的控制器,这就是我所说的被敲诈)。

因此,发送“0”强制总线处于显性状态是对可用性的攻击。因此,每次另一个设备想要发送时,总线仲裁算法都会告诉它后退。总线上不会有任何消息。

对车辆有什么后果?打开点火开关时,安全模块和发动机控制单元 (ECU) 必须对话。如果他们不能说话,什么都不会发生。如果攻击者在驾驶过程中的某个时刻强行淹没了一辆公共汽车,它就会被视为一辆有故障的公共汽车。容错将确保子系统正确关闭且不会对乘客造成危险。