没有合适的资源?快使用搜索试试~ 我知道了~
711CANflict:利用外设冲突对汽车网络进行数据链路层攻击Alvisede Faveri Tron a.de. faveri。tron@vu。米兰,意大利阿姆斯特丹自由大学荷兰阿姆斯特丹斯特凡诺·朗加里斯特凡诺。longari@polimi.米兰,意大利Michele CarminatiMichele carminati@polimi.米兰理工大学意大利米兰摘要马里奥·波里诺马里奥。polino@polimi。米兰,意大利斯特凡诺·扎内罗·斯特凡诺。zanero@polimi.米兰,意大利ACM参考格式:汽车领域的当前研究已经从安全的角度证明了控制器局域网(CAN)协议的局限性。应用层攻击,涉及创建恶意数据包,被认为是可行的从远程,但可以很容易地检测到现代入侵检测系统(IDS)。另一方面,最近的链路层攻击更隐蔽,可能更具破 坏 性, 但需 要 对 总 线进 行 物 理 在 本 文中 , 我 们 提 出了CANflict,一个纯软件的ap-proach,允许可靠的操作CAN总线在数据链路层从一个未经修改的微控制器,克服了国家的最先进的作品的限制。 我们证明了从远程受损ECU部署隐形CAN链路层攻击是可能的,目标是同一CAN网络上的另一个ECU。为此,我们利用微控制器外围设备之间存在的引脚冲突来制作多语言帧,这使得攻击者能够在位级别控制CAN流量并绕过协议规则。我们的实验证明了我们的方法对高,中,低端微控制器的有效性,我们提供了一个可扩展的工具,可用于实现我们的方法在不同的平台上,并建立在数据链路层的CAN对策,为未来的研究奠定了基础。CCS概念• 安全和隐私→硬件攻击和对策;·网络→网络物理网络。关键词汽车安全;控制器局域网;硬件攻击;多语言框架;加密外围设备允许免费制作本作品的全部或部分的数字或硬拷贝,以供个人或课堂使用,前提是制作或分发副本的目的不是为了盈利或商业利益,并且副本的第一页上有本声明和完整的引用。 本作品的版权归ACM以外的其他人所有,必须予以尊重。允许使用学分进行摘要以其他方式复制、重新发布、在服务器上发布或重新分发到列表中,需要事先获得特定许可和/或付费。请求权限请发邮件至permissions@acm.org。CCS©2022计算机协会ACM ISBN 978-1-4503-9450-5/22/11。. . 15美元网址://doi. org/10. 1145/3548606。3560618Alvisede Faveri Tron , Stefano Longari , Michele Carminati , MarioPolino和Stefano Zanero。2022年。CANflict:利用外设冲突对汽车网络进行数据链路层攻击. 2022年ACM SIGSAC计算机和通信安全会议(CCS'22)的会议记录。ACM,美国纽约州纽约市,13页。网址://doi.org/10. 1145/3548606。35606181引言如今,车辆配备了大量的车载电子设备[41],其中包括WiFi接入点、蓝牙模块、蜂窝通信模块、网关、遥测系统和数十个电子控制单元(ECU)[18]。 一辆现代汽车,即使功能不全,通常也有超过100个ECU,估计有7000个信号要在内部传输[22,36]。 为了协调ECU之间的通信,车载网络采用多种总线协议。这种协议的最普遍和事实上的标准是CAN。CAN协议开发于20世纪80年代,主要设计用于噪声环境中的可靠和快速通信,而没有太多考虑安全方面。 由于缺乏加密、身份验证和完整性检查,CAN总线网络容易受到各种攻击。这种攻击首先通过板载攻击面[8,19,26]证明是可能的,然后证明从远程[17,28,35]是可行的,主要包括伪造来自被利用或恶意ECU的数据包,这将攻击者的能力限制在可以通过在总线上发送有效CAN帧来实现的攻击上然而,最近的攻击(如[32]中描述的攻击)表明,在CAN数据链路层也存在不安全性。 这些攻击更强大,更难检测,但只有在攻击者可以在低级别(例如,如果可以在另一个ECU同时写入时在总线上写入 在实际应用中,这需要高精度,尤其是在高速CAN总线上,而这在资源受限的微控制器(如ECU中的微控制器)上几乎是不可能的。因此,到目前为止,只有当攻击者物理访问CAN 总 线 时 , 才 认 为 对 CAN 的 链 路 层 攻 击 是 可 行 的 ,Kulandaivel等人的工作除外。[21]但是,它有很大的局限性。CCSAlvise de Faveri Tron,Stefano Longari,Michele Carminati,Mario Polino,StefanoZanero712在本文中,我们向前迈出了一步,提出了CANflict,这是一种针对CAN的链路层攻击的新方法,它利用了连接到CAN控制器相同物理引脚的外围设备(即,引脚冲突)来代表其在CAN总线上发送和接收位这些外设可以通过从软件访问专用内存映射寄存器来启用和禁用,使这种方法完全适用,无需任何硬件修改。由于冲突外设无法处理开箱即用的完整CAN帧,因此我们还引入了多语言帧的概念,其灵感来自已应用于其他领域的多语言的一般概念(例如,多语言程序、文件、信号)[2,6]。 这使我们能够识别和产生符合CAN协议和相关外围设备的位序列,并生成可通过协议接口传输的数据序列,并可被不同的协议接口解释为有效消息。我们从不同的角度证明了我们的方法的有效性。首先,我们验证了嵌入式CAN控制器和其他约束较少的外设,如UART,SPI,I2C和ADC外设之间的引脚冲突的存在,在各种汽车级微控制器和相应的多语言帧的存在。其次,我们证明了上述外设可以实际用于在真实的CAN网络上产生和接收完整的CAN帧,跟上现代CAN总线的速度。这表明了我们的方法的灵活性,并实际证明了真正的CAN硬件不能区分CANflict位从合法的CAN帧。最后,我们使用CANflict实现了一个端到端的有针对性的拒绝服务攻击,展示了远程受损的ECU如何完全关闭同一CAN网络中的另一个ECU,而无需对受害者消息的周期性进行任何假设,这是[21]的要求。总而言之,我们的贡献如下:我们提出了一种新颖的,纯软件的方法,可靠和精确地读取和注入CAN总线上的位,绕过了CAN控制器施加的限制我们表明,这种方法可以用来安装链路层攻击CAN网络从远程受损的ECU,这使得远程链路层攻击实用;我们证明了使用多语言帧产生完全符合CAN时序和格式规范的最后,我们发布了一个可扩展的框架,用于使用不同的微控制器和外围设备读取和写入CAN总线上的任意位,并且可以进一步扩展到包括其他硬件和协议,以便将来研究该主题。2CAN协议引物CAN是汽车工业中广泛使用的总线标准ISO 11898标准[16]定义了与OSI模型相关的CAN协议栈的三层:物理层,定义了总线的电气属性;数据链路层,定义了帧格式,仲裁和错误报告机制;1可在https://github上获取。com/necst/CANflict,上传以供在附加材料中审查。应用层,在该应用层中,进一步的协议可以定义它们的消息格式。应用层的每个消息由有效载荷和ID组成,有效载荷在标准CAN中最多可以是8字节长,ID用作消息标识符,并且隐含地也用作优先级标签,如下所述。节点布局。 在物理层面,CAN是一种以广播方式互连节点的双线差分总线。 每个参与CAN通信的节点都需要一个CAN接口,该接口由CAN控制器和CAN收发器组成。CAN控制器单元可以作为一个独立的电路,或者更常见的是作为主机微控制器的专用模块。控制器在数据链路层实现CAN协议,如标准所述,生成必须在总线上传输的位序列,并将输入位解码为应用级消息。 CAN收发器负责将CAN控制器连接到物理通信线路时,在逻辑数据和相应的物理信号之间进行转换,逻辑数据来自CAN控制器并去往CAN控制器。重要的是要注意这两个组件处理的信号的差异:CAN控制器负责使用CANTX和CANRX线(数字)将应用级对象(消息)转换为位序列,反之亦然。 另一方面,CAN收发器负责将从CANTX接收的每个位转换为CANH和CANL之间的电压差,并持续监控总线,以在CANRX线路上输出电流差分电平为1或0。位表示和消息仲裁。CAN规范定义了两种位:显性位,其逻辑值通常为0,隐性位,对应于逻辑1。根据规范,显性总线电平必须总是覆盖隐性总线电平。因此,CAN总线被实现为有线与总线。因此,如果CAN总线上的任何设备发送一个主导位(在逻辑电平上用0表示),它将覆盖任何其他正在进行的通信。这种行为使得能够实现CAN仲裁机制。CAN仲裁机制应用于帧的第一部分,即,ID字段。如果两个或多个节点同时开始发送帧,只要从总线上读出的位的值等于它们在总线上写入的值,它们就会继续传输。 当其中一个设备在总线上读取的值与它写入的值不同时,它将立即退出。由于在总线上放置隐性位的节点将总是失去对写入显性位的节点的仲裁,因此具有较低值的标识符具有较高的优先级。错误处理。 CAN协议定义了一种基于总线监控的错误检测机制,由消息的发送方和接收方执行。发送方负责逐位监视发送的消息并读取确认字段。每当检测到错误时,检测节点从错误检测之后的第一位开始发送错误帧。在发送错误帧且经过间歇时间后,错误消息的发送方将尝试将其删除。请注意,这种机制发生在数据链路层:CAN控制器自动生成错误消息,并在检测到错误后重新传输。因此,应用层从不参与这些操作。····CANflict:利用外设冲突对汽车网络CCS713×REC > 127或TEC > 127误差活性TEC > 255第128章和TEC 128误差被动总线O软件复位128x11“1”图1:CAN总线的错误状态故障限制。CAN协议规范描述了故障限制机制,以防止故障节点产生高总线负载。 根据该机制,每个节点应实现两个错误计数器:TEC(传输错误计数器)和REC(接收错误计数器)。这些错误计数器在每次成功发送或接收数据帧时分别减1在检测到错误时,发送器节点将TEC递增8,而接收器将REC递增1,除非它们是引起错误的节点,在这种情况下REC递增8。 取决于这些错误计数器的值,CAN节点可以处于三种错误状态之一:错误激活:当处于此状态时,CAN节点行为正常,没有任何特定限制。错误被动:处于此状态的节点只能通过发送6个隐性位来指示错误,防止其他节点将错误全局化。当发送连续数据帧时,处于此错误状态的节点必须等待相当于8位的额外时间(暂停传输时间)。总线关闭:达到总线关闭状态的节点不再以任何方式影响总线通信此状态只能在128 11正确记录隐性位后退出。图1显示了这三种状态之间的可能转换以及触发条件。3CAN攻击的现状与许多旧的低级协议一样,CAN协议缺乏一些基本的安全机制,使车辆容易受到恶意攻击。如[ 41 ]所述,CAN的主要安全缺陷与缺乏认证和加密、广播传输、基于优先级的仲裁以及有限的带宽和有效载荷有关。 除了CAN固有的安全性缺陷之外,CAN最常实施的环境(车辆)目前具有多种攻击面,以外部和内部通信接口为代表。事实上,关于这个问题已经进行了大量的研究[4,5,8,19,26,27],突出了现代车辆的许多方面可以被恶意行为者利用从一般的角度来看,可以根据攻击者的位置或进行攻击的网络层对CAN攻击进行分类。 关于攻击者的位置,获得对CAN总线的访问的最常见方式是:本地-将恶意节点物理地安装在电子系统中或由对手附接到诊断端口,以及远程-远程地危害CAN总线的合法内部节点。很明显,在第二类攻击事件中,易受攻击目标的规模要大得多,正如Miller和Valasek在[ 28 ]中所研究的那样,他们观察到,在美国,成千上万的车辆在开发时容易受到攻击从网络层因此,CAN攻击可以在应用层进行或数据链路层。3.1应用层攻击在标准CAN网络中,能够将恶意ECU连接到网络或重新编程现有ECU的对手通常可以发送和接收消息,而不受其ID或有效载荷的任何限制。这种能力使得以下攻击成为可能:(a)Eccurdrop攻击-由于CAN不实现加密并且具有有限的有效载荷和带宽,因此消息被完全加密是不常见的,这意味着在总线上侦听的任何人都可以完全读取所有节点发送的消息。(b)欺骗和重放攻击-由于没有认证,能够编写消息的攻击者可以通过伪造ID和有效载荷或重新发送先前接收的消息来冒充任何节点。(c)网络拒绝服务-由于CAN仲裁取决于ID,攻击者可以用0x 00ID数据包使总线过载,迫使节点延迟通信。这些攻击可用于针对安全相关系统,例如,ABS,改变仪表板上显示的信息,要么向驾驶员隐藏现有的问题,要么向驾驶员发出不存在的信号,干扰或控制自动驾驶功能,如停车辅助或巡航控制,最后完全关闭汽车,如[28]中著名的演示。然而,由于这种类型的主动攻击依赖于在总线上注入额外的消息,并且绝大多数CAN帧都是以一定程度的周期性发送的[40],因此这种攻击很容易被现代网络检测到。IDS[1,14,24]。3.2数据链路层攻击最近的研究表明,对CAN网络的攻击也可以在数据链路层进行,在消息级IDS的雷达下飞行。(a)完全拒绝服务-CAN总线的电气特性是占主导地位的位,即,0,优先于隐性位。 这意味着将总线始终保持在主导状态将阻止在总线上执行任何进一步的通信。(b)选择性仲裁拒绝-由于具有较低ID的消息在CAN协议中具有较高的优先级,因此当消息ID正在被传送时在总线上注入主导位将导致发送设备失去仲裁,这迫使其后退并停止发送。 这可以在传输特定消息时重复进行,以防止ECU赢得总线争用。(c)有针对性的拒绝服务-如果相反地,在消息的有效载荷中注入显性比特,而发送设备正在发送隐性比特,则发送设备将检测到总线上的错误,增加其内部错误计数器并立即终止传输。重复此过程一定次数将导致设备积累太多错误,从而迫使其进入总线关闭状态。该机制可用于完全关闭连接到CAN总线的任何节点的通信。(d)同步中断-最后,CAN协议的同步机制和采样点设置都可以用于引起CAN总线上节点之间的去同步化,并且在某些情况下[38,39],这可能导致CCSAlvise de Faveri Tron,Stefano Longari,Michele Carminati,Mario Polino,StefanoZanero714不同的节点以不同的方式读取总线上的相同消息这对于逃避IDS消息检查或中断CAN总线上节点之间的通信虽然完全的拒绝服务攻击很容易识别和预防,但更复杂的攻击(如定向拒绝服务攻击)很难与总线上的真正故障区分开来,并且使用IDS检测更具挑战性然而,这些攻击对攻击者一方提出了更高的要求Cho等人的方法[9],它基于将有效消息与伪造消息重叠以触发错误的生成,要求攻击者能够预测具有一小部分位时间错误的消息的到达,并且最近的工作[20]证明了其在现实世界场景中的不可靠性。攻击,如由帕兰卡等人介绍。[32]以及在[3,29]中进一步发展的方法依赖于攻击者读取传入消息的初始部分并将有效载荷的单个隐性比特替换为显性比特的能力,这施加了严格的定时约束,特别是在高比特率下。解压缩攻击有更严格的时间要求:在[39]中,攻击者必须以这样一种方式制作包,即CAN帧中一个位和后续位之间的上升沿或下降沿发生在1/10位时间的时间窗口中( 在全速CAN总线上已经是1 s)。这种严格的时序要求使得对真正的微控制器(如汽车ECU核心)实施这些攻击非常具有挑战性,在某些情况下甚至是不可能的:例如,在[39]中,使用FPGA而不是微控制器进行实验评估,而[32]使用50 kbit/s的总线作为攻击目标,这比平均速度慢很多倍。对链路层攻击所需的性能进行了更广泛的评估,如[29],结果表明1 s位时间约束显著限制了攻击者的自由。3.3现有的位注入技术近年来,人们对低级CAN总线操作的兴趣越来越大,特别是在汽车黑客社区中,已经产生了许多可用于拦截和产生CAN流量的工具。特别是,CANT [7]和CAN-hack [37]等开源工具使用bitbanging来访问CAN总线数据链路层。然而,CANT是专门为高端微控制器(STM Nucleo-H743 ZI 2时钟频率为400 MHz)设计的,并配有定制的外部屏蔽。 另一方面,CANhack是一个为STM32 F405和Raspberry Pi Pico实现的MicroPy- thon工具,但该工具的作者明确指出,使用中的硬件平台必须“足够快,可以实现CAN”,这不包括低端微控制器。最后,该工具已被测试,只有一个500 kbit/s的CAN总线。最近,CANnon的方法[ 21 ]基于选通CAN控制器的外围时钟以延迟发送主导位直到发送受害者帧,显著地公交车这意味着攻击者必须依赖周期性消息来了解何时“发起”攻击,并且对总线上实时发生的流量视而不见因此,使用这种技术进行的定向拒绝服务攻击必须在触发之前对总线的当前状态进行大量假设,并依赖于CAN网络流量的特定特性,要求攻击者事先预测给定CAN帧的到达时间,这在现实场景中并不总是可行的。最后,这种方法固有地有噪声,并且作者讨论的用于增加其可靠性的技术具有使其更容易检测IDS的缺点,因为它需要在延长的时间段内保持主导状态。4CANFLICT:冲突周边的用于CAN位注入的当前最先进的工具和技术不适合在远程受损ECU上实现复杂的数据链路层攻击。它们要么太不精确,无法处理高级数据链路层攻击所需的时序约束,要么需要高端硬件,而这在实际车载网络中可能并不总是可用或可利用的,或者对CAN总线流量的特定特性做出强烈假设,而这并不总是在实践中得到验证。在本文中,我们提出了一种新的,灵活的方法来可靠地访问CAN数据链路层的软件。 我们的方法甚至可以用于低层微控制器,而无需任何额外的硬件。此外,我们的方法不对目标CAN流量进行假设,因为它提供了强大的读写原语,可以将这些原语组合起来,从未经修改的远程受损ECU对CAN数据链路层发起当前和未来的攻击。我们的方法的附加要求是,将CAN外设连接到总线的引脚必须可由同一微控制器上的其他外设访问。 乍一看,这个要求可能看起来很有限,但是,由于第4.1节中解释的原因,绝大多数现代微控制器都满足这个条件。例如,表1列出了一些最常见的低级外围设备与汽车行业顶级供应商制造的一些流行微控制器上的CAN控制器之间的冲突。4.1引脚冲突在汽车ECU的核心,与任何其他嵌入式系统类似,我们发现微控制器单元(MCU)。与微处理器不同,MCU是廉价、小型、低功耗和专用的计算设备,具有更简单的CPU、片上存储器和许多硬件外设,所有这些都在同一个硅芯片中烘焙表1:常见汽车微控制器中CAN外设的冲突列表[12]。微控制器供应商编号CAN冲突放宽了目标平台的性能要求,因为任何带有嵌入式CAN外设的微控制器都可以注入V850ES/JC3-H RenesasMPC5554 NXP设备13GPIO,I2C,GPIOSPI,GPIO比特使用这种技术。然而,这种方法具有显著的限制,因为它不提供低级读取原语。事实上,当时钟保持在攻击的“加载”阶段时,攻击者没有关于当前状态的反馈。AT90CAN32Atmel 1 Timer,GPIO SPC564A80B4 STMicroelectronics 3SPI,eSCI,GPIOC8051F50x Silicon Labs 1 SPI,I2C,LIN,GPIO AURIX TC399XPInfineon 4SPI,UART,I2C,ADC,GPIOSTM32L562 STMicroelectronics 1SPI,UART,I2C,GPIOCANflict:利用外设冲突对汽车网络CCS715单片机CPU可以控制器选择MUXMUX选择CAN_TXCAN_RXCAN收发器CANHCANL外周B外围A图2:旁路CAN控制器的外围设备方法它们的内存大小和性能通常也非常有限:典型MCU的时钟频率范围从几十kHz到高端设备上的几百MHz。相反,消费电子CPU现在通常以几GHz的速度计时。为了满足实时响应的需要,即使是这样有限的硬件,微控制器配备了各种片上外设,这些外设旨在有效地实现一些特定的,通常需要的功能,如处理SPI或I2C数据包,转换模拟信号在一个高频率,或对外部信号的变化作出反应。 随着对更快通信的需求不断增长,需要处理的复杂协议数量不断增加,以及供应商希望提供通用产品,导致现代MCU封装了许多此类硬件外设,这些外设需要比物理封装上可用的更多的硬件引脚。此外,每个外设通常连接到多组引脚,以便在PCB设计和布线阶段为客户提供最大的灵活性。 因此,许多外设最终共享相同的引脚,其物理连接在内部多路复用,并通过一组内存映射寄存器重定向到所选外设,这些寄存器可以由软件读取和写入。我们将这些引脚称为“冲突引脚”,将涉及的外围设备称为“冲突外围设备”。4.2安装CAN控制器如第2节所述,CAN网络中的节点通过两个组件访问总线:控制器,处理数据链路层,收发器,处理物理层。 为了执行链路层攻击,我们需要访问CAN数据链路层,然而,这受到CAN控制器的阻碍。实际上,通过CAN控制器,不可能直接处理总线上发送或接收的每个位,也不可能强制从软件读取和写入事件的定时。事实上,软件层只能向CAN控制器传送它想要发送的消息的ID和有效载荷,或者当在总线上没有错误地接收到完整的消息时得到通知,而所有的总线仲裁、错误处理和帧处理都可以在CAN控制器上进行。工艺逻辑由硬件自动处理这使得通过CAN控制器对CAN的链路层攻击不可行。这可能会在设计时产生一种错误的安全感,这种安全感建立在攻击者无法访问协议的数据链路层的假设然而,CAN控制器通常作为现代MCU中的嵌入式外设,这意味着CAN控制器使用的相同引脚CANTX和CANRX也与其他外设共享,如4.1所述。我们可以访问这些引脚的一种方式是通过通用的Pur-pose输入/输出(GPIO)外设,使软件能够通过内存映射寄存器控制和读取引脚的逻辑电平。这种技术通常被称为bitbanging,可用于高端微控制器访问相对低速的总线。这种技术的主要限制是,每个位的读或写事件必须由软件命令,在全速CAN总线的情况下,这给CPU留下了1微秒的窗口来执行每个位所需的任何逻辑,例如,以给定序列保存总线的当前电平,计数已经接收到多少比特,并将接收到的序列与给定序列进行比较。对于具有例如10MHz时钟的微控制器,这显然是强定时限制。此外,使用这种技术,CPU完全被读写操作占用,并且任何可以改变指令定时的事件,例如中断请求(IRQ),都可能导致微控制器与总线解同步,并且攻击失败或在错误的时刻被触发。最后,在实践方面,比特碰撞技术依赖于高分辨率定时器的存在或平台特定的微调,这可能并不总是实用的,并且非常容易出现诸如时钟漂移之类的问题。相反,CANflict使用低级协议外设来控制CANRX和CANTX引脚。 我们的直觉是,我们可以利用这些引脚上存在的冲突外设来绕过CAN外设,并从软件获得对CAN数据链路层的完全访问,如图2所示。特别地,诸如串行外围接口(SPI)和通用异步接收器发送器(UART)之类的低级协议中的数据包具有比CAN帧少得多的限制,并且可以被级联以部分或完全重叠给定的CAN消息。 通过这种方式,我们可以从专用外设的速度和异步特性中受益,以将高速通信的处理从CPU中卸载,CPU本身无法应对CAN施加的严格时序,同时仍然可以对总线上的流量进行高度控制。 上述原理扩展了汽车制造商在设计车载网络时应考虑的威胁模型,即通过添加该附加攻击面(即,来自应用层的远程数据链路层攻击),这在现有的威胁模型中经常被忽视[1,24]。4.3多语言框架对CAN控制器进行加密本身并不足以实施复杂的链路层攻击,因为为了读取和写入长序列的位,我们需要处理来自另一个外设的CAN数据。为此,我们引入了多语言框架的概念。一般来说,信号的含义不是信号本身固有的(无论是数字信号,还是模拟信号)。数字CCSAlvise de Faveri Tron,Stefano Longari,Michele Carminati,Mario Polino,StefanoZanero716信号仅仅是高电压和低电压的时间序列,而存储在信号中的实际信息取决于它的解释方式,遵循规则和惯例。因此,它的意义不受物理信号本身的约束,而是受赋予它意义的解释者的约束。例如,如果将字节序列解释为音轨,则可以输出旋律,但是如果将其解释为图像,则其可能看起来随机且无意义。相反,一个字节序列作为声音和图像文件都有效CSCLKCIPOCOPI123456789101112131415 16123456789101112131415 16图3:SPI消息的时序图被称为Polyglot文件[2,33]。遵循相同的推理,通信信道上的比特流(即, 由协议接口传输的既是有效SPI消息又是有效CAN消息的多语言帧)将被称为多语言帧。在实践中,我们使用此概念来识别与给定协议兼容的CAN帧片段,然后可以使用相应的外设对其进行读写 我们还利用本文中选择的协议和CAN协议之间的全帧polyglots的存在来证明CANflict也可以生成被合法节点接受的完整和有效的CAN帧。4.4利用移动外围设备取决于外围设备的冲突与CAN控制器的 RX和TX引脚,CANflict的能力各不 每种协议都有自己的要求,并且由于必须填满它们才能读取或发送CAN帧,因此这可能会限制或完全启用攻击者的能力。 我们继续分析我们的直觉在现代微控制器上发现的一些最常见的外围设备上的能力,即,SPI、UART、I2C和ADC。串行外设接口(SPI)。 SPI是一种主要-次要2系列协议,通常采用四条线路(见表2)。图3所示为典型SPI通信的时序图。当处于主模式时,SPI器件自动选择适当的副器件,生成时钟信号,在COPI线上发送位,并在CIPO线上读取位从次设备到主设备的通信也由主设备发起,主设备通过将相应次设备的CS线设置为低电平并生成时钟信号来决定哪个设备可以在CIPO线上通信。该协议没有定义任何内在的限制的形状的数据包发送和接收的主要。最后,SPI设备通常会暴露一些机制,公交车通常,要从一开始就读取完整的CAN消息,应用程序代码需要识别帧起始(SoF)位。类似地,为了从SPI外设写入总线,SPI外设的COPI线和CAN外设的CANTX线需要共享同一引脚,同时还要知道波特率。由于从主设备传输SPI数据包时没有特定的规则适用,因此提供给外设的任何比特流都将在COPI线路上按原样传输这意味着,如果COPI线与来自微控制器的CANTX信号冲突,SPI外设可用于发送总线的任意位数请注意,由于CS线和CLK信号由SPI外设自动生成,因此我们可以完全忽略它们的存在。事实上,这些信号都与在CAN总线上发送任意位无关,SPI器件从不读取它们。 图6显示了SPI外设传输的位序列如何被解释为CAN消息和SPI消息的示例。通用异步收发器(UART)。UART协议是另一种广泛应用于许多嵌入式应用的串行协议。与SPI不同,SPI协议不使用时钟信号来同步发送器和接收器设备;相反,它异步传输数据。 与CAN外设信号类似,CAN外设的两个主要信号是传输线(TX)和接收线(RX)。 在RTP协议中,每个数据包必须具有预定义的格式,包括起始位、数据帧、奇偶校验位和停止位,如表3和图4所示。特别地,开始位的值总是0,停止位的值是1,并且每个分组的有效载荷可以包含5至9位。多语言帧:如果CANTX线和PCI外设表2:SPI线路描述。修改信号的时钟极性和时钟相位,确定在通信期间如何对比特进行编码具体而言,时钟极性影响外围设备空闲时CLK信号的逻辑电平,而时钟相位定义每个位的读/写操作是在每个时钟脉冲的上升沿还是下降沿开始。SPI Polyglot帧:在总线上读取的主要要求是SPI外设的CIPO线和CAN外设的CANRX线共享同一个引脚,以便来自CAN总线的传入信号可以重定向到SPI外设。另一个要求是了解CAN总线的波特率。考虑到这两个要求,2虽然OSHWA建议[31]控制器和外围设备作为新的命名约定,但我们避免使用这个术语,因为它可能会导致我们在微控制器上下文中的混乱因此,我们将在整个文本中将控制器设备称为主要设备,并将受控设备称为次要设备但是,我们将使用名称描述 CS芯片选择线用于初级选择第二,沟通。CLK时钟信号产生的主要和设置位定时的通信。CIPO 2 从中学到小学的数据。COPI 2 从小学到中学的数据。表3:支架描述。名称描述起始位始终设置为0。数据帧有效载荷的长度可以从5到9位奇偶校验位可选,用于错误检测。停止位一个或两个连续的逻辑1,取决于外设配置。为便于参考,建议使用CIPO和COPI代替MISO和MOSICANflict:利用外设冲突对汽车网络CCS717图4:一个同步消息的时序图SDASCL7位地址8位数据启停图5:I2C消息的时序图CAN总线使用CAN外围设备。同样地,CANRX线和CANRX线之间的引脚冲突可以被利用来读取总线上的位。尽管SPI外设仍然允许攻击者在任意时刻在总线上发送和接收位,绕过仲裁逻辑,但SPI数据包具有固定的开始和停止位的事实在尝试模拟CAN流量时对SPI施加了一些额外的约束。特别地,虽然每个帧的有效载荷完全由软件控制每个分组中的开始和停止比特具有固定值。然而,通过修改数据包长度,用户仍然可以控制这些固定值的位置,这大大放松了仿真和拦截CAN流量的实际约束。在实践中,如第5节所示,通过使用一系列CAN数据包,仍然可以匹配CAN消息的重要部分,并且在某些情况下,我们甚至可以通过连接一系列CAN数据包来制作完整的CAN帧。图6显示了一个多语言CAN帧的特定实例,其中相同的信号可以被解释为CAN帧和CAN数据包序列我们在实验验证中利用了这一特性,证明了一个真正的CAN外设可以生成一个被未修改的CAN控制器接受和确认的信号。给定一个我们想要产生的CAN帧,为了获得一个有效的多语言包,我们遵循一种“贪婪”方法:(a)分配第一个数据包的长度,验证最后一位是否符合停止位值。(b)如果不是这种情况,则修改长度,直到第一个分组是有效的反向分组。(c)验证下一位是否符合起始位值。如果不是这样,则从B开始重复。直到满足这个条件。(d)从a开始重复。 直到覆盖了所有CAN帧。(e)如果没有找到正确的解决方案,则回溯以将较早的分组重新分配到不同的长度。此外,可以修改每个数据包的停止位长度,以提供更多解决方案。关于读取,应该注意的是,在没有单独的时钟线的情况下,同步通信所需的在CAN协议中的起始位的存在实际上对于我们的目的是有利的,因为它具有与CAN帧SoF位相同的值。这意味着CAN外设可以配置为在帧间时间窗口的任何时刻开始读取总线,并自动识别下一个CAN帧的开始。正如我们已经提到的,后续的位必须符合UART协议:接下来的5到9位,取决于外设的配置,由外设正常读取。 以下1或2位必须为1,具体取决于停止位配置。 如果不是,则CPU外围设备会将传入的消息作为错误消息丢弃。下一位必须为0(起始位),这将强制外围设备侦听新数据包,依此类推。这意味着,为了正确配置外围设备,攻击者必须提前(至少部分)知道它想要攻击的位序列内部集成电路(I2C)。现代嵌入式系统中另一种流行的通信协议是I2C,它是一种多主多辅同步协议。 由于它是一个串行协议,数据是沿着一条称为SDA线的单线逐位传输的。与SPI一样,I2C也是同步的。因此,位的发射和采样由初级和次级之间共享的时钟信号同步。主要控制时钟信号。在I2C协议中,消息被分解为两种类型的帧:地址帧,其中主设备指示消息被发送到的外围设备,以及一个或多个数据帧,它们是从主设备传递到外围设备或从外围设备传递到主设备的8位数据消息。 这两条线被称为串行数据(SDA)和串行时钟(SCL)。SCL变为低电平后,数据被置于SDA线上,SCL变为高电平后,数据被采样时钟边沿和数据读/写之间的时间由总线上的器件定义,并且因芯片而异典型I2C通信的时序图如图5所示。I2C数据包的结构如表4所示。I2C Polyglot帧:如果SDA线和CANTX线存在于目标微控制器中,此协议可用于在CAN总线上发送位对于读取来说,情况并非如此,因为在该协议中,初级必须在读取之前始终在总线上发送命令。 该协议规则甚至更严格的限制,因为每个数据包的开始和结束是由SDA线上的低电压,其持续时间取决于特定的设备。此外,期望由主设备发送的每个分组在ACK时隙中被辅设备确认,在ACK时隙期间,主设备以高电压状态离开SDA线。最后,I2C协议中的每个帧由多个数据包组成,并以地址数据包开始,其中主设备传送从设备的地址、通信方向(读或写),并等待来自从设备的ACK信号。 如果消息未被确认,则通信被主设备中断。协议的所有这些方面都干扰了在总线上发送任意位的必要性,因为在开始条件、停止条件、ack时隙和帧间间隔期间总线的电压不能被控制。尽管如此,对于TCP/IP数据包,能够控制在总线上发送的至少一些比特就足以注入表4:I2C通信过程。名称描述启动条件SDA线被拉低,而SCL是高,以表明通信的开始。SDA线上的有效负载8个可控位,用于地址帧和数据帧。ACK插槽SDA线由初级保持高电平,次级预计将拉低(0),时钟为一个积极的承认。当SCL为高电平时,SDA线被拉高以指示通信的结束帧比特时间=1/波特率空闲开始D1D2D3D4D5D6D7D8P停止空A6A5A4A3A2A1A0R/W ACKD7D6D5D4D3D2D1D0 ACKCCSAlvise de Faveri Tron,Stefano Longari,Michele Carminati,Mario Polino,StefanoZanero718小的位序列,并且,有足够的I2C器件特性的知识,甚至可以制作完整的,有效的CAN消息,如图6所示。与UART类似,以下步骤产生对CAN和I2C都有效的帧:(a)从UART或通过直接测量获得I2C开始条件、停止条件、ACK时隙和帧间间隔的持续时间:这些是I2C帧的(b)验证目标CAN位时间划分所有固定部分的持续时间。 这导致每个固定部分的位表示。(c)定义要发送的I2C帧的数量。(d)分配对应于I2C固定部分的比特,如b. . (e)在CAN协议中分配具有固定值的位(例如,ACK_REQ)。(f)选择CAN帧的剩余位,不包括CRC部分。(g)计算帧的CRC。(h)检查CRC是否与帧的该部分的已经分配的比特兼容(1)重复f。如果CRC不兼容。请注意,B。 和e. 可能不可行。 一方面,给定CAN波特率,不能保证I2C写入技术适合以该波特率制作消息。 另一方面,给定兼容的波特率,I2C固定部分的位置和长度可能会干扰CAN控制字段,导致错误格式化的消息。尽管如此,由于许多链路层攻击不需要制作完整数据包的能力,I2C仍然可以用于攻击CAN数据链路层,如第5.4节所示。模数转换器(ADC)。 ADC是本节讨论的最后一类外设。 这种外设的能力在不同的平台和供应商之间可能会有很大的不同,但基本思想是它们可以用于执行快速和重复的模数转换,而无需CPU的干预(例如,对CANRX信号进行采样,就好像它是模拟信号一样)。 许多微控制器包括一个或多个ADC器件作为片上外设。典型地,这样的设备暴露调节转换的分辨率的机制,即,两个模拟值之间的差异在变得不可分辨之前能有多小显然,由于我们对总线的数字值感兴趣,因此可以为这些转换选择尽可能低的分辨率(通常也意味着更高的采样频率),然后将结果与一个常数值(相当于ADC满量程范围的一半)进行比较。 模数转换器(ADC)通常提供一个简单的接口,用于以精确的间隔对模拟信号进行采样。ADC多语言帧:显然,通过ADC外设可以执行的唯一操作是读取。因此,如果CANRX信号与所选目标的模拟输入冲突,则ADC可用于嗅探总线上的位。实现是简单的,在我们的例子中,意味着每次接收到新的ADC值时调用一个函数,该函数检查是否5实验验证为了验证我们的方法,我们证明了冲突的外设可以利用真实的硬件,它们可以用来实现可靠的控制CAN链路层。特别是,我们首先demonstrate生产CAN polyglots从冲突的外围设备的实用性,并验证这种polyglots是无法区分的合法CAN位通过测试整个CAN帧
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 4
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- RTL8188FU-Linux-v5.7.4.2-36687.20200602.tar(20765).gz
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
- SPC统计方法基础知识.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功