通过侧信道分析辅助黑盒CAN fuzzing

admin 2024年3月4日12:06:22评论14 views字数 6793阅读22分38秒阅读模式

1.前言

    在野发现汽车盗窃犯使用CAN注入盗窃 Toyota RAV4 2021, 通过拆卸大灯旁的保险杠接入CAN总线,发送特定的CAN报文(Key validated, unlock immobilizer),欺骗车辆认为钥匙是的有效的。数字钥匙ECU和车灯ECU在同一CAN网络中,这使得盗贼能够通过拆卸保险杠接入到数字钥匙 ECU 所在的CAN网络中。面向的车型为Jeep、Maserati、Honda、Renault、Jaguar、Fiat、Peugeot、Nissan、Ford、BMW、Volkswagen、Chrysler、Cadillac、GMC、Toyota。用于此次盗窃的设备还支持LexusES LC/LS/NX/RX、Toyota GR Supra/Prius/Highlander/Land Cruiser/RAV4 车型。

通过侧信道分析辅助黑盒CAN fuzzing

    现代车辆是复杂分布式系统,包含多个ECU,通过车辆总线连接,主要任务是控制各种车辆子系统。车辆总线使用CAN协议通信,确保其安全性至关重要,否则可能导致未经授权访问和攻击。最近发生的事件显示汽车ECU的安全测试至关重要,其中包括CAN总线接口的安全评估。ISO/SAE 21434、R.155和R.156等标准也规定了汽车网络安全测试的要求。

    这种评估的一个重要部分是模糊测试。在本文中,将讨论这种活动的一种特殊情况,即在黑盒情况下进行模糊测试。

    虽然有多种方法可以解决这种情况,包括逆向ECU固件,但本文提出的另一种方法是通过电磁侧信道分析辅助CAN fuzzing。

2. CAN模糊作为汽车ECU安全评估的一部分

    总体来说,对目标设备进行模糊测试可以帮助识别潜在的漏洞、非安全性错误和安全问题。

    ISO/SAE 21434 - 道路车辆的网络安全工程标准要求制造商在整个车辆的生命周期内执行系统风险评估并实施适当的安全措施。通过对ECU CAN总线接口进行系统性和全面的模糊测试,供应商可以识别并解决潜在的漏洞、错误和安全缺陷。可以区分两种主要的CAN总线模糊测试方法:突变和生成。

    突变模糊测试意味着对用于ECU之间通信的预先记录的真实CAN消息进行随机更改。在最简单的形式中,这可能仅仅是对原始消息的位(字节)进行位翻转。更复杂的方法可能包括插入随机值,甚至是能够检测CAN消息体内的特定协议字段,如控制和消息认证控制字段以及数据结构的复杂启发式算法。基于突变的模糊测试可以揭示目标系统对于意外或畸形消息的处理是否存在潜在问题。

    另一方面,生成模糊测试是根据已知的CAN消息规范或一组预定义的规则从头开始创建新消息。例如,在更复杂的情况下,它允许发送设备处理的所有可能类型的CAN消息,因此与突变方法相比,提供了更高的覆盖率。

    存在多种工具可用于CAN总线模糊测试,从简单的cangen(属于can-utils工具包),到复杂的开源项目如CANtoolz和caringcaribou,再到商业工具如Vector、Interpid Control Systems和Synopsys。

    无论是突变还是生成的模糊测试方法,其结果将是发送到目标的消息序列。

    除了生成消息之外,同样重要的是在测试期间监视目标以检测其行为的差异,特别是确定模糊测试样本是否导致目标出现问题。常见的监视技术可能包括但不限于:

调试:当ECU具有调试访问权限时,可以直接监视CAN消息的执行和解析。心跳监测:ECU通常会在CAN总线上定期发送“心跳”消息以指示其操作状态。如果在模糊测试期间中断或发生显著变化,可能表示ECU崩溃或故障。在监视的上下文中,ECU发送的任何定期消息都可以视为心跳消息。使用有效的CAN消息请求回复:某些ECU可能会在接收特定命令后以特定消息或确认作出响应。定期发送此类消息并验证是否正确响应可以指示ECU在模糊测试期间是否正常工作。观察开放接口上的流量 - 包括CAN:异常消息的存在或损坏的流量可能是意外固件行为的症状。侧信道监测,例如功耗变化。在模糊测试期间,ECU功耗的显着波动可以表明该单元出现问题,例如崩溃或重置。

    不同的监视方法将提供不同程度的洞察力。例如,在调试的情况下,可以对个别消息产生的结果进行深入分析,而在心跳监测的情况下,只能验证单元是否保持运行。

3.黑盒挑战

    在前一节中,我们描述了理解单元在正常操作下的行为以及识别异常的机制都非常重要。因此,拥有更多关于目标的信息以及更好的调试访问权限将使分析更加有效。

    不幸的是,在现实世界中,这些信息或访问权限的可用性可能有限,项目通常无法提供及时和完整的信息,如消息规范、流量转储、调试访问或源代码。即使从现场系统捕获了样本流量,也有可能并非所有提取的CAN消息都能被目标单元处理。在这种情况下,可以使用基于突变的模糊测试技术来识别单元支持的其他有效消息。

    然而,发送的CAN消息是否会有效处理并不确定。在许多情况下,有效的CAN消息(由ECU固件处理的CAN ID,可能激活某些功能)不会产生任何直接或间接的反馈。在这些情况下,有效地对CAN总线进行模糊测试以实现适当的覆盖面是一个重大挑战。

    让我们简化一下在黑盒情况下面临的任务:为了更有效地进行模糊测试,我们需要知道一个有效的CAN ID。这将允许我们缩小模糊测试样本空间,增加在模糊测试期间触发漏洞或脆弱性的可能性。

    当没有任何已描述的监视方法适用时,例如因为设备在接收有效和无效的CAN ID之间的行为变化太小,我们需要一种替代方法来外部检测测试消息是否被SoC固件处理或丢弃。

    在这种情况下,如果可以访问固件二进制文件,可以进行逆向工程并从中提取CAN ID。此外,您甚至可以找到现代反汇编器的自动化工具和插件,可以帮助完成此任务。或者,如果可以访问包含目标ECU的最终产品(完全组装的汽车),则可能可以通过将车辆置于各种运行模式下,从实时流量记录中提取CAN ID。

    在没有实际车辆、固件二进制文件和有关ECU接受的有效消息的任何文档的情况下,最后的选项之一可能是在模糊测试目标时执行电磁侧信道分析(EM-SCA)。

4.侧信道分析来拯救

    侧信道分析是系统测试和评估领域的一部分,它使用非侵入性技术从目标获取一些信息。这些信息或信息泄漏可能会揭示有关目标内部流程的一些潜在见解。这种技术最初是作为攻击加密算法物理实现的一部分而出现的。在这个学科中,信息通过意想不到的渠道泄漏,包括时间、功耗或电磁(EM)辐射,甚至温度和声音。这些信息可以用来利用加密实现。需要注意的是,在这里,算法本身并不是目标,而是其软件或硬件实现中的弱点,或者可能两者都有。

    电磁侧信道分析(EM-SCA)关注的是目标在运行期间发出的电磁辐射。所有电子元件,从电容器和晶体管到复杂的集成电路,在正常运行期间都会发出电磁波。这些波可以被捕获和分析,以提取有关系统行为的潜在相关信息。EM-SCA的重要优势在于它可以通过在目标系统或片上系统(SoC)上放置探针来进行非侵入性操作,而这些操作是我们感兴趣的。一般来说,通过使用探针和示波器或数据采集设备(DAQ),可以收集来自目标的信号。这些信号可能会揭示底层过程的一些细节。例如,在密码分析中,攻击者可以将EM辐射与密码算法实现中特定指令或指令块的执行相关联。

    在EM-SCA期间捕获的EM信号的差异是由于软件/算法实现在SoC上执行不同的逻辑分支,这意味着在处理SoC时会以不同的顺序激活不同的晶体管和其他组件。这使得通过比较系统在对外部输入作出反应时的EM图像来区分系统行为成为可能。在我们的情况下,这个外部输入将是CAN消息。

    对于这类任务,EM-SCA的另一个好处是,与功耗分析不同,不需要大幅修改目标板来捕获SoC的功耗消耗,从而减少了所需的时间和精力。此外,现代SoC可能有多达数十个电源线,这会使功耗分析变得相当棘手。实际上,这将导致一个繁琐的过程,在许多不允许使用侵入性技术的项目中无法应用。

5. CAN消息处理和EM发射

    不同的ECU可能会采用不同的处理CAN消息的方法。例如,实现可以从switch-case构造到一组高级抽象,最终变成处理程序表。当编译成汇编语言时,这将导致将ID与静态值进行比较或查找表,然后跳转到指定的处理程序代码或继续执行。如果接收到的CAN ID未被目标处理,固件将立即继续执行其正常操作。然而,如果接收到有效的消息,将执行不同的指令流,因此EM图像会相应改变。这是因为在SoC内部,会以不同的顺序激活不同的晶体管。

    为了更好地解释,我们将在以后的说明中使用以下术语:

无效的EM图像:记录了未经处理或目标ECU不识别的无效CAN消息的EM图像。有效的EM图像:记录了由目标ECU处理的CAN消息的EM图像。候选EM图像:用于具有我们试图确定其是否有效或无效的CAN ID的消息的EM图像。

让我们看一下这个图片,其中显示了两个EM图像捕获,无效(橙色)和有效(蓝色):

通过侧信道分析辅助黑盒CAN fuzzing

    正如从EM图像中可以看出的,处理的CAN消息与拒绝的CAN消息相比差异显著。出于演示目的,我们选择了一个边缘案例,其中有效的CAN ID为7df,这是该ECU的诊断(UDS)仲裁ID。因此,图像捕获之间的差异对于肉眼是显著可见的。然而,使用适当的数学距离和阈值比较EM图像时,这些差异在更不显著的情况下也可以检测到。

遵循这个方法,遍历完整的CAN ID空间允许我们识别哪些CAN ID是有效的并由单元处理,并以此指导我们的模糊测试工作。因此,我们可以按照以下算法来实现这一点:

  1. 记录已知无效消息的EM图像。

  2. 对于每个CAN ID:

    2.1. 记录候选消息的EM图像

    2.2. 如果EM图像与无效消息的差异显著,将此CAN ID记录为潜在有效,并作为模糊测试的目标。

    始终比较时间对齐的信号非常重要。换句话说,这些信号是从解析逻辑的相同起始点记录的。为了实现这一点,可以设置一个触发器,该触发器在ECU处理CAN消息之前开始捕获信号。为此,可以使用支持CAN触发或具备FPGA或快速SoC/MCU的专用板,运行能够启动此类触发器的自定义固件。这种设备的探针可以连接到候选消息生成器附近的CAN总线,或连接到消息生成设备上的CAN收发器的RX/TX引脚。一旦触发条件达到,就会记录处理候选消息的EM图像。

    即使使用极其精确和快速的设备,结果仍然会稍微漂移。这是因为噪声或触发设备的速度/精度不足,或者更常见的是因为现代ECU执行流的不可预测性质。这些不是硬实时系统,而是大多数使用多任务操作系统的软实时系统,这些操作系统可能在从收发器接收消息后的确切时间处理CAN消息方面存在差异。缓解这种效应的一种方法是对信号进行平均处理。与仅捕获作为对候选CAN消息的响应的一个样本不同,我们捕获每个样本的多个样本并使用平均值代替。此外,我们可以在平均之前对每个不同的样本进行归一化(即使用标准分数)。这可能有助于减小设置和触发的不完美,以及对信号漂移的补偿。

     不幸的是,由于我们周围的EM环境不稳定且不断变化,我们无法承受过多样本的平均值。电源线的波动、室内温度或湿度的变化、其他楼层上的吸尘器或微波炉的运行、无线通信流量的突然增加等都可能影响观察结果。具有提供稳定环境条件的完全隔离房间的实验室环境可以减小这些问题的影响。如果没有这个条件,随着时间的推移记录更多的样本以进一步平均CAN消息的无效EM图像将导致总体环境发生变化,以至于即使候选消息也是无效的,这两个平均值之间的距离也会过大。

   因此,平均需要仔细调整我们希望平均的样本数量。如果使用太多样本,那么在我们捕获所有样本时,EM环境可能会发生太大的变化;如果使用太少样本,则ECU中的执行流不可预测性可能无法得到足够的补偿。

6.实用方法及测量台设置

    考虑到之前的所有上下文,我们可以将我们的方法描述如下:

  1. 找到一个CAN ID,生成一个无效(未处理)CAN消息的EM测量。

  2. 对于每个其他的候选CAN ID:

    2.1. 为已知的无效CAN消息记录M个归一化的EM捕获,并对它们进行平均。我们可以将结果标记为I。

    2.2. 为候选CAN消息记录相同数量(M)的归一化的EM捕获,并对它们进行平均。让我们将结果标记为C。

    2.3. 如果I到C的距离(即欧几里德距离)超过某个阈值,将C视为有效并记录以供进一步进行模糊测试。

现在我们需要了解捕获EM信号的具体方法。在我们的方法中,我们使用以下设备:

生成器,根据方法的步骤,生成无效或候选的CAN消息发送给目标。触发设备,发出CAN ID已达到执行流中的目标点的信号。测量设备,记录处理CAN消息的目标MCU/SoC的EM图像。

    作为生成器,我们使用一个自定义脚本,遍历指定的CAN ID范围,并用随机数据填充消息主体,具体取决于目标。根据对目标的了解程度,可以考虑其他方法。我们的脚本实现了CAN消息生成、设置触发器、将它们发送到车辆总线以及处理测量结果。

    作为触发设备,可以使用自定义FPGA或快速微控制器/SoC板。此外,具有CAN触发功能的示波器也可以完美控制(例如,通过LXI/SCPI)。任何能够相当快速输出外部触发器的设备都足够完成工作。例如,Keysight DSOX1xxx或DSOX2xxx可用于CAN消息的触发,而Siglent SDS2xxx Plus适用于CAN FD。在将消息发送到总线之前,生成器需要通过USB或以太网(使用例如SCPI命令)在示波器上设置触发器并装备它。一旦具有此CAN ID的消息出现在线上,示波器将在Ext.Trig.输出上触发它,并且测量设备将开始记录EM捕获。

    作为测量设备,您需要一个示波器或DAQ。设备必须具备足够的分辨率和缓冲区大小,以正确记录来自EM探针的信号。在我们的设置中,PicoScope 5XXX USB示波器系列表现得足够出色。我们使用了各种分辨率,大多数情况下12位+足够了。

    应该使用的EM探针类型至关重要。有两种主要类型的探针:H场(磁场)和E场(电场)探针。通常情况下,H场探针更适合这些目的,因为它们对于探针与目标设备SoC之间的具体方向不太敏感。探针应具有高灵敏度和高频率范围,以捕获目标的EM辐射。探针的尖端尺寸将取决于目标SoC,并应根据我们是否希望测量整个设备的信号或只是SoC的特定部分来选择。

    EM探针应该非常靠近目标设备,距离不超过几毫米,以捕获设备产生的电磁辐射。重要的是在所有测量过程中固定探针(和目标)的位置,因为甚至轻微的位置变化都可能影响结果。

    通常从探针输出的信号比较"弱",您需要使用信号放大器,以增加其振幅(即电压)。如果可能的话,通过对设置进行屏蔽可以减少外部噪音。此外,正如已经提到的,控制环境因素,如温度和湿度,可以帮助确保更可靠和准确的结果。

    即使使用不昂贵的EM探针和NewAe的ChipWhisperer基本平面H探针套件(CW505)的LNA,我们也能够在速度较慢(<100MHz)的MCUs上以良好的精度发现已处理的CAN ID。对于更通用的设置或具有挑战性的目标,我们使用了TekBox的TBPS01-TBWA2/20dB套件,其中包括20dB LNA、三种不同尺寸的H场探针和一个E场探针。

    您可以在以下照片中看到我们设置的一个变种在操作中的情况:

通过侧信道分析辅助黑盒CAN fuzzing    从图片中可以看出,使用与OpAmp配对的NewAE HPROBE执行EM图片的捕获。信号进入PicoScope 5XXX系列。触发器由Keysight DSOX1202G示波器提供。

7.结论

    在本文中,我们描述了基于EM侧信道分析的可用方法,该方法可用于发现由目标ECU处理的有效CAN ID。该技术可用于提高模糊过程的效率和有效性,特别是在CAN消息映射不可用的所有黑盒场景中。我们可以采用一种更有针对性的方法,专注于设备实际处理的消息,而不是在总线上发送大量消息,这些消息立即被设备丢弃。这种设置的成本是合理的,并且大多数设备已经存在于普通硬件或汽车测试实验室中。

    这种方法并不是成功的普遍保证,它在过去曾使我们失败。这通常是由于目标MCU/SoC的高工作频率,或者芯片周围的其他组件产生的噪声太大。尽管如此,它仍然是一个有用的工具,很高兴在我们的武器库中拥有汽车ECU的完整黑盒安全评估项目。

    也就是说,我们非常希望我们的客户只是分享某个单元支持的CAN ID列表,它更直接,更快,并导致更好的结果。

通过侧信道分析辅助黑盒CAN fuzzing

原文始发于微信公众号(安全脉脉):通过侧信道分析辅助黑盒CAN fuzzing

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年3月4日12:06:22
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   通过侧信道分析辅助黑盒CAN fuzzinghttps://cn-sec.com/archives/2100200.html

发表评论

匿名网友 填写信息