汽车物联网中OBD-II加密狗攻击面的综合漏洞分析

 

随着物联网的发展趋势,已开发出大量的无线OBD-II加密狗,可以将其简单地插入车辆以实现诸如复杂的车辆控制和状态监控之类的远程功能。但是,由于这些加密狗直接在车内连接网络,它们可能会为车辆打开新的攻击面。在本文中,对2019年2月在美国亚马逊上提供的所有无线OBD-II加密狗进行了首次综合安全性分析,总共有77个。为了系统地进行分析,设计并实现了自动工具DONGLESCOPE,该工具可以在真实汽车上从所有可能的攻击阶段动态测试这些加密狗。通过DONGLESCOPE,确定了5种不同类型的漏洞,其中4种是新发现的。

结果表明,每个77个加密狗都至少暴露了两种类型的漏洞,这表明当今市场上的无线OBD-II加密狗中存在着广泛的漏洞暴露。为了说明严重性,进一步构造了4类具体的攻击,这些攻击具有各种实际意义,例如隐私泄漏,财产盗窃甚至安全威胁。还讨论了根本原因和可行的对策,并做出了相应的责任披露。

 

0x01 Introduction

车载诊断系统(OBD)是一种广泛用于汽车自我诊断并报告其内部工作状态(例如电压,燃油水平和速度)的标准。作为最新最流行的OBD标准,OBD-II自1996年以来在美国的汽油车中普遍采用,用于强制性排放检查。随着物联网(IoT)的发展趋势,开发了大量的无线OBD-II加密狗,使车主能够方便地从配套移动应用程序(如许多其他IoT设备)执行远程车辆功能,以进行简单的状态监视和诊断、复杂的车辆控制,例如禁用远程解锁或安全带警告。

尽管无线OBD-II加密狗确实提供了丰富的功能和极大的便利,但是它们的使用却暴露了无线从外界进入内部车辆系统的可能性,因此不可避免地带来了安全隐患。一方面,OBD II加密狗与车载控制区域网络(CAN)总线连接,以通过OBD II端口获取诊断数据。另一方面,它们通过无线网络与外部配套应用程序进行交互,以传输数据和命令。如果未按照安全原则和实践进行适当设计,这些加密狗可能会启用一系列新的空中车辆攻击媒介,不仅是用户的财产和隐私,还有驾驶员,乘客和行人的安全。例如,在2017年,发现Bosch Drivelog Connector OBD-II加密狗上的漏洞使附近的攻击者可以在车辆仍在行驶时远程关闭引擎。该加密狗很快就从市场上删除了。截止到今天,市场上仍然有大量的OBD-II加密狗在驾驶员,维修技术人员以及汽车保险公司中广受欢迎。但是,这些加密狗是否容易受到远程或附近的攻击仍然是公众所不知道的。

为了填补这一知识空白,在2019年2月对美国亚马逊上提供的所有无线OBD-II加密狗进行了首次综合安全性分析,总共有77个。为了系统地进行分析,首先根据远程或附近攻击可以通过无线OBD-II加密狗使用CAN总线的阶段来定义攻击面:广播,连接和通信。接下来,设计并实现一个自动化工具DONGLESCOPE,该工具能够通过将待测软件狗插入到真实汽车的OBD-II端口中来动态测试所有这些阶段中的潜在漏洞,并借助伴随的移动应用程序分析来逆向这些加密狗的预期消息,这些消息用于在通信阶段设计测试消息。

通过对这77个加密狗的深入实验,在三个攻击阶段确定了5种不同类型的漏洞,其中新发现了4种。在77个加密狗中,发现它们在三个阶段中至少暴露了两种类型的漏洞,这表明当今市场上的WirelessOBD-II加密狗中存在广泛的漏洞暴露。具体来说,发现这些加密狗中大约有85%既没有连接层身份验证也不具有应用层身份验证,这实际上使附近的攻击者在广播阶段被发现后就可以任意访问CAN总线。还发现,即使将车主的移动设备与它们连接,也有29个(37.66%)加密狗容易受到这种恶意访问。在通信阶段,发现52个(67.53%)的加密狗无法过滤掉加密狗不支持的功能的CAN总线消息,意味着攻击者可以发送对安全至关重要的车辆控制命令,即使被攻击的加密狗最初仅用于诊断目的,例如换档。更糟糕的是,一些加密狗很容易被无线加密狗固件破坏或提取。最后但并非最不重要的一点是,可以使用近一半(42.86%)的加密狗的广播信息对上述漏洞进行指纹识别,从而使附近的攻击者可以方便地指出要攻击的加密狗以及如何通过空中攻击。

为了证明这些漏洞的严重性,在这些漏洞的基础上进一步构造了4类具体的攻击,并在测试自动移动设备上对其进行了验证。这些攻击可能导致广泛的实际影响,包括隐私泄露,财产盗窃,甚至对驾驶员,乘客和行人的安全威胁。在收集的77个加密狗中,其中84%易受这四种攻击级别中的至少一种攻击,而近60%易受至少三种攻击级别的攻击。

本文的分析结果显然指出,当今的无线OBD-II加密狗普遍缺乏系统性的安全保护,这在家庭环境中以IoT设备很常见,但首次全面揭示并量化了那些在车辆设置中。由于车辆的设置对安全至关重要,因此人们希望其IoT设备具有更严格的安全措施。但是,根据本研究结果,很不幸今天不是这种情况。为了主动解决这个问题,利用分析中的见解来讨论根本原因和可行的对策,同时也已经向相应的加密狗制造商进行了责任披露。随着物联网设备越来越多地用于诸如汽车之类的安全关键领域,希望本研究特定领域的发现及其安全/安全含义能够发出强烈而及时的信息,以开始在这些关键应用领域中开发和部署有原则的安全设计,以用于物联网。

•全面的漏洞分析:于2019年2月对美国亚马逊上可用的所有无线OBD II加密狗进行了首次全面的安全性分析。针对空中车辆攻击的威胁模型,本文系统地将攻击面识别为三种必要攻击的攻击媒介阶段:广播,连接和通信。本文设计并实现了一种自动化工具DONGLESCOPE,该工具能够用实际汽车动态检测这三个阶段中的潜在漏洞。

•漏洞发现和量化:通过DON GLESCOPE,系统地分析了收集的77个dongle,并在三个攻击阶段中发现了5种类型的漏洞,其中新发现了4种。结果表明,在这三个阶段中,每个77个加密狗至少都暴露出两个漏洞,这表明当今市场上的无线OBD-II加密狗中存在着广泛的漏洞暴露。

•攻击案例研究构造:为了证明所识别漏洞的普遍性,进一步根据这些漏洞构建了4类具体攻击,并在测试用车上对其进行了验证,这些攻击可能会带来广泛的实际影响,包括隐私泄露,财产盗窃,还讨论了根本原因和可行的对策,并向相关的加密狗制造商进行了负责任的披露。

 

0x02 Background

1)控制区域网络

汽车不再是孤立的机械设备,相反它们是具有大量电子控制单元(ECU)的复杂计算机系统,这些电子控制单元负责不同的功能,例如转向,制动和加速。这些ECU构成了一个复杂的网络,随时都有大量的消息来回传输。为确保这样一个复杂的系统正常工作,必须有一个车载网络来协调这些ECU组件之间的消息传递。

控制区域网络(CAN)总线是当今现代车辆中部署最普遍的基于消息的协议。在该网络中,ECU与总线系统相互连接,不断广播和收听CANbus消息。 CAN总线消息的结构如下图所示。 CAN总线消息中的标识符和数据字段确定CAN总线消息的功能。消息的标识符由11或29位组成,指示此消息的发送方ECU(例如0x191代表传输系统ECU)。消息的数据字段最多包含8个字节,用于存储发送方ECU的状态参数(例如,数据的第三个字节代表发动机转速)。

1600954334427

2)OBD-II加密狗和配套应用

OBD-II加密狗:OBD-II是CAN总线之上的高级通信协议(“语言”),可为车主,维修技术人员以及汽车保险公司提供诊断能力,例如监控汽车的速度和燃油。汽车。自1996年以来,美国政府已将其强制用于每辆汽油汽车。如今,大多数车辆在方向盘下方安装了诊断端口,该诊断端口连接至CAN总线并传递CAN总线消息。作为基于消息的协议,特殊的OBD-II消息被定义为传达诊断信息,称为OBD-II参数ID(PID)。不同于特定车辆制造商定义的高度定制的CAN总线消息,这些OBD-II PID是标准化的。而且,作为一种CAN总线消息,PID具有与上图相似的结构。每个查询的PID都使用0x7DF作为标识符,并且数据字段包含服务编号和PID编号,制造商还可以定义专用PID。基于OBD-II标准,开发了许多用于车辆诊断的OBD-II软件狗,例如监视速度,燃油和发动机状态。插入OBD-II端口后,这些加密狗可以不断发送CAN总线消息,以查询来自CAN总线的诊断数据。

在当今市场上所有可用的OBD-II加密狗中,无线加密狗是最主要的类型,因为它们提供了极大的便利,同时为用户提供了可观的价格。使用时,它们充当附近移动设备连接和连接的端点。通过Wi-Fi,Bluetooth Classic和BLE等无线网络进行通信。结果,这些加密狗也有了相应的移动应用程序。在本文中,漏洞分析重点是无线加密狗,因为它们允许无线访问OBD-II端口,因此是攻击者更现实的目标。下图显示了在此研究中购买的77个无线加密狗。

1600954364209

配套移动应用:由于无线OBD-II加密狗没有诸如屏幕和键盘之类的用户界面,因此它们依靠外部设备来使它们变得易用且用户友好,因此,其制造商或第三方开发商已经开发了相应的配套移动应用程序。有了这样的配套应用程序,可以轻松便捷地监视汽车的状态。首先,用户将加密狗插入方向盘下方的OBD-II端口,然后启动发动机。其次,她打开配套移动应用程序,并通过加密狗托管的无线网络建立连接。之后,用户能够从应用程序UI监视车辆状态,并且该应用程序自动与加密狗进行交互,该加密狗从CAN总线查询车辆状态数据,并向CAN总线发送车辆控制命令(如果有)。

 

0x03 Attack Model and Attack Surface

1)攻击模型

在本文中,攻击者的目标是考虑利用新兴的无绳OBD-II加密狗暴露的新车辆攻击面,从而对受害车辆的CAN总线进行无线攻击。如前所述,无线OBD-II加密狗用作周围设备进行连接和通信的无线端点。结果,攻击者必须在无线网络的范围内,以使其能够与目标加密狗建立连接,该距离通常可达100米。但是借助放大器,攻击者可以检测到远距离的无线信号(例如,使用BleScope中演示的BLE An tenna长达1000米),从而使她能够发现并接近受害者以执行一般威胁模型如下图所示。

1600954381014

攻击之前,第一步但非常重要的步骤是识别空中附近的OBD-II加密狗。之后,她尝试通过无线网络与其建立连接。如果成功建立了连接,则她随后尝试通过OBD-II加密狗向CAN总线注入恶意消息来攻击车辆,例如读取敏感数据或导致不安全的车辆驾驶行为。如果加密狗成功将主题消息传递到CANbus,并且触发了相应的攻击后果,则攻击成功。

对何时进行攻击没有具体限制,例如,攻击者可能会危害仍在道路上行驶且驾驶员和其他乘客在车上的车辆。此外,由于即使车辆关闭,OBD-II加密狗仍可以从OBD-II端口获得电源,因此她甚至可以将停在停车场的车辆对准有机会潜入的车辆并偷走所有物品。当车辆高速行驶时,某些具有更直接的安全后果(例如,停止发动机)的CAN总线消息将被禁用。因此,如果这些消息是实现某个攻击目标所必需的(并非所有潜在的攻击目标都是必需的,如稍后所述),则攻击者可以选择在常见的低速驾驶情况下(例如,在红灯,交通拥堵或得来速队列中等待。

2)攻击面

在设计自动化安全分析工具之前,必须首先全面识别这些无线OBD-II加密狗的攻击面。根据攻击模型,成功的攻击必须具有以下三个必要阶段:(I)广播阶段,即当攻击者在连接之前扫描受害者加密狗时;(II)连接阶段,即,当攻击者(3)通讯阶段,即攻击者在连接后注入恶意消息时。因此,在分析中考虑的攻击面被定义为以下三个阶段中每个阶段的攻击向量:

(一)广播阶段:在连接之前,无线OBD-II加密狗将其连接信息广播到附近的设备,以表明其意愿。因此,附近的设备可以发现并识别它,并尝试建立连接。作为附近的攻击者,她有能力收集此广播信息,并且她的目标是识别受害者的加密狗并根据该信息建立连接。

(二)连接阶段:在此阶段,攻击者的任务是与加密狗成功建立网络连接,以便将与CAN总线消息传递相关的命令发送到加密狗。建立连接后,在合法连接到加密狗之前,可能要求她提供足够的凭据,例如密码或PIN码。如果不需要证书,则攻击者可以任意连接到加密狗。

(三)传输阶段:建立连接后,攻击者可以发送未经授权的CAN总线消息,以与加密狗进行通信并迅速执行。在此之前,她可能需要先绕过应用程序和加密狗之间的通信协议中的身份验证步骤。之后,攻击者将攻击者所需的CAN总线消息发送到加密狗,请求其将消息中继到CAN总线以触发相应的后果。在本文中,将CAN总线消息称为执行加密狗预定义消息和其他未定义消息的设计功能的消息。前者是设计允许的,因此应直接中继到CAN总线。但是,设计的加密狗功能可能非常有限,例如仅诊断功能。因此,对于某些攻击目标,例如与安全相关的那些攻击目标,注入未定义的消息(例如那些干扰车辆控制的消息)是令人感兴趣的。但是,由于设计不允许这些消息,因此攻击能否成功取决于加密狗端的消息过滤过程。

 

0x04 Analysis Methodology

确定了OBD-II加密狗的攻击面之后,设计并实现了一个名为DONGLE SCOPE(at https://github.com/OSUSecLab/DongleScope )的自动化工具,以测量可能导致跨广播,连接和通信阶段的无线OBD-II加密狗中的漏洞的一些目标。

1)概述

1600954400381

上图展示了DONGLESCOPE的工作流程。从高层次上讲,它可以在真实的自动移动设备上动态测试OBD-II加密狗,还可以使用相应的随附mobileapp进行静态分析。该分析分为与三个攻击阶段相关的四个主要部分。对于动态分析中的每个组件,都定义了特定的测量目标,如下表所示。在广泛的发布阶段,DONGLESCOPE从无线OBD-II加密狗收集所有广播信息。接下来,它尝试在连接阶段与加密狗建立连接。请注意,该工具还测试了另一移动设备与加密狗连接时连接是否仍然成功,这可以模拟真实的攻击场景(即驾驶员仍在车内时)。在此阶段,有两个测量目标:是否可以建立连接以及是否允许多个连接。建立连接后,将尝试在通信阶段使用预定义和未定义的CAN总线消息进行测试。目的是检查是否可以将预定义和未定义的消息注入CAN总线,以便可以观察到相应的攻击后果。同时,预定义消息生成步骤产生预定义消息,以帮助设计用于CAN总线消息测试的消息。

1600954417239

在进行设计之前,需要解决一些挑战:首先,由于OBD-II加密狗可以采用各种制造特定的实现方式(例如,不同的消息模式和协议),因此很难提出一种完全通用的方法。结果,假设所有的OBD-II加密狗都是基于ELM327的,这是解释底层CAN总线协议并为编程提供标准化接口的通用实现。根在研究中,超过90%的加密狗均基于ELM327。为了实现与CAN总线的加密狗配置和消息通信,利用ELM327命令集设计测试消息。

其次,有必要找到每个加密狗的所有预定义消息,以便确保要测试的未定义消息在加密狗中未预定义。受先前物联网研究的启发,该研究利用伴随的移动应用程序分析来了解黑匣子物联网设备,引入了使用后向程序切片提取预定义加密狗的所有预定义消息的预定义消息生成步骤。

第三,必须获取对CAN总线有效的未定义消息,以便能够观察到注入消息带来的影响。直观上,应该使用CAN总线控制消息,因为OBD-II加密狗在设计上不应提供车辆控制功能。因此们需要对CAN总线协议进行逆向,这对汽车研究人员来说一直是一项棘手但有价值的任务,因为不同制造商之间的协议是高度定制的但是机密的。逆向CAN总线协议的最新技术是通过CAN消息模糊或手动触发物理车辆动作。受他们的启发,本研究还尝试在测试汽车上分析CAN总线协议。具体来说,首先通过一些物理动作来操作车辆(例如踩下油门,踩下制动器),然后观察动态CAN总线流量的变化,以查看导致该行为的CAN总线消息。因此,可以在测试车辆上获得许多控制CAN总线消息。

在实验中,要从未定义的消息中选择一个代表进行测试,因为对它们进行全部测试是不现实的,因为在原厂中至少有2 75条可能的CAN总线消息。此外,由于预定义的OBD-II PID与其他消息相比具有不同的标识符,因此假定过滤策略基于消息格式。换句话说,如果任何特定格式的消息都可以通过过滤器,则所有具有相同格式的消息也可以通过过滤器,反之亦然。为了验证这一假设,通过注入10种不同的未定义消息对26个加密狗进行了实验,观察到每个加密狗都接受或过滤了这些消息,这证实了怀疑。因此,可以将测试未定义的消息限制为仅一个代表。此外,测试一个预定义的消息就足够了,因为所有预定义的消息都应被设计接受,并且已经通过类似的实验进行了验证。

2)详细设计与实现

(1)广播信息收集:根据其连接,将OBD-II加密狗分为三种类型:Wi-Fi,BluetoothClassic和BLE。由于不同类型的加密狗的广播信息不同,因此,DONGLESCOPE会相应地处理它们。在此步骤中,首先手动将加密狗插入OBD-IIport。接下来,DONGLESCOPE开始自动从中收集必要的广播信息,并将该信息存储在配置JSON文件中。概括而言,所有可广播的信息包括Wi-Fi服务集标识符(SSID),Bluetooth Classic和BLE的设备名称以及BLEdongles的通用唯一标识符(UUID)等。请注意,确保收集的广播信息是从软件狗中进行测试时,周围不应有其他广播设备。

(2)连接设置:在广播阶段识别了OBD-II加密狗之后,DONGLESCOPE尝试与其建立连接以进行进一步的通信。在连接期间,通过设置与加密狗连接的移动设备来模拟真实的攻击场景,该加密狗充当驾驶员的设备。如果DONGLESCOPE无法与加密狗连接,这意味着不允许进行多次连接,将使用加密狗断开驱动程序的设备连接,然后尝试进行一次连接。建立系统层连接后,DONGLESCOPE尝试使用加密狗在应用程序层上建立通信通道。为此,需要从规范中获取一些其他信息(例如IP地址,端口号),并将其预加载到DONGLE SCOPE中。对于Wi-Fi加密狗,DONGLESCOPE会遵循IP地址以及端口号来建立用于通信的套接字。对于Bluetooth Classic加密狗,DONGLE SCOPE首先从加密狗查询蓝牙地址和端口号,然后尝试根据射频通信(RFCOMM)协议为其设置蓝牙插座。对于BLE加密狗,该过程更加复杂,因为它需要DONGLESCOPE获得与加密狗通信所必需的读写特性。这些特性是BLE设备传达具体数据的属性,可以由UUID标识。解决方案是一次将ELM327 commandAT E0注入每个特性,以检查哪个其他特性回显OK。这两个特性分别被认为是写和读特性。

建立连接后,DONGLESCOPE可以通过接口的ELM327与加密狗进行通信。使用Python套接字库,PyBluez和PyBLE实现通信过程。在此之前,DONGLESCOPE仍需要配置加密狗,否则可能无法获得有效的响应。具体来说,它注入以下ELM327命令以实现相应的配置目的:

•ATD:将加密狗恢复为默认设置;

•AT E0:阻止消息回显;

•AT AT0:禁用超时;

•AT H1:显示消息标题作为响应;

•在CAF1:关闭自动格式化;

•AT SP 6:将ISO 15765-4 CAN协议设置为默认值(使用11位标识符)。

(3)CAN总线消息测试:成功建立连接后,DONGLESCOPE可以通过OBD-II加密狗向CAN总线发送消息。在此步骤中,DONGLESCOPE分别从预定义和未定义的CAN总线消息中测试两个代表,因为不需要测试所有预定义和未定义的消息。具体而言,DONGLESCOPE采用标准PID 09 02作为测试预定义消息,这是用于查询VIN的诊断消息。至于未定义的消息,则使用CAN总线消息191 04 00 00,它在测试车辆中将变速箱设置为N。该未定义消息是通过对CAN总线协议进行逆向工程获得的。在分析过程中,使用了ATMA命令来转储CAN总线流量,并将档位转移到其他位置。在此过程中,观察了CAN总线上的变化,并确定了触发该行为的消息。获得未定义的消息后,将其与应用程序分析结果进行了交叉检查,并确保未为研究中的所有加密狗预定义该消息。

获得感兴趣的消息后,DONGLESCOPE开始在加密狗上自动对其进行测试。具体来说,DONGLESCOPE使用AT SH命令指定要发送的CAN总线消息的标头,并使用AT CRA命令指定响应消息的标头。首先,DONGLESCOPE使用预定义的消息09 02进行测试。成功的查询将以十六进制形式返回有效的VIN编号。其次,DONGLESCOPE发送未定义的消息191 04 0000。如果加密狗成功将其传递到CAN总线,则ECU将回显一条具有相同标识符0x191的CAN总线消息,以显示其状态。否则,该消息将被加密狗过滤,该工具将获得“无数据”响应。

(4)预定义消息生成:为了在通信阶段设计测试消息,DON GLESCOPE在相应的伴随移动应用程序上执行静态分析以生成预定义的消息。具体来说,它使用后向程序切片,这是一种获取生成目标数据所需的程序切片的技术。为了开始分析,首先确定底层网络目标API,包括TCP套接字发送功能以及BluetoothClassic和BLE的写入功能。根据观察,它们是配套应用与OBD-II加密狗进行通信以执行设计功能的唯一方法。结果,这些API中的变量表示发送到加密狗的消息。然后,设计了一种反向切片算法,该算法从这些已识别的API开始并向后迭代以记录生成消息的必要指令,该算法在算法1中进行了详细说明。

1600954438514

在较高的层次上,该算法将程序的控制流程图(G)以及变量(V)的一组变量作为输入,并生成一组生成路径(P)。首先,将生成路径(P)和临时路径(path)的集合初始化为空(第1-2行)。接下来,它将E构造为G的子图,其中所有离开节点都是目标API,并以DFS反向顺序遍历E(第3-4行)。对于每个边沿(i,j)的每个节点表示一条指令,算法将检测节点i的左操作数是否在V中(第6行)。如果是,则算法将righof i上的所有变量操作数加到V(第6行)。请注意,当i不是库函数时,该算法需要深入研究i的实现并继续进行切片;否则,它将指令i添加到临时路径路径(第8-12行)。之后,当当前路径到达终点时,该算法将路径添加到P(第14-15行)。然后,它开始遍历另一条路径,并将当前路径和V恢复到最新分支点的状态(第16-18行)。最终,该算法输出许多odata生成路径,这些路径包含生成感兴趣的数据的指令。

DONGLESCOPE基于生成路径进行正向计算,以重构所发送数据的实际值。静态分析是builatop Soot,它是用于逆向Android移动应用程序的流行静态分析框架。

 

0x05 Vulnerability Analysis

1)OBD-II加密狗和应用程序集合

OBD-II加密狗:为了实现研究的高度全面性,通过搜索所有可能相关关键字(即“ OBD-II”或“ OBD2”或“ OBDII”与“ dongle”结合)的组合,从亚马逊购买了美国在美国提供的所有无线OBD-II加密狗。该系列最终共获得77个OBD-II加密狗。在这77个加密狗中,有44个(57.14%)Wi-Fi加密狗,3个(3.90%)蓝牙加密狗和30个(38.96%)BLE加密狗,这表明基于Wi-Fiand BLE的加密狗是当今市场上最受欢迎的加密狗。

1600954455980

上表中显示了加密狗的完整列表。为了估算这些加密狗的受欢迎程度,在亚马逊上衡量了它们的评论数量。根据亚马逊的评论数量,列出了排名前10位的最受欢迎的加密狗。如图所示,最受欢迎的是带有10,000条评论的Wi-Fi加密狗。该加密狗提供基本的诊断功能,并与大量免费的第三方随行移动应用程序兼容。 VEEP EAK,iSaddle和GXG等类似的加密狗也非常受欢迎。此外,某些加密狗(例如BlueDriver,FIXD和Carista)是特定于应用程序的,由于提供了高级诊断功能,它们也很受欢迎。如稍后的实验结果所示,DONGLESCOPE发现最流行的十大加密狗中至少包含两个漏洞,这表明当今拥有OBD-II加密狗的大多数车辆都容易受到攻击。

配套移动应用:由于DONGLESCOPE也致力于分析配套应用程序,因此也根据加密狗的规范从Google Play收集了这些应用程序。总共,收集了21个可在实验中映射到所有77个OBD-II软件狗的配套应用程序。如前所述,排名前6的同伴应用程序在Google Play上的下载次数超过了数百万次,这表明它们在移动应用程序用户中的流行程度。此外,还研究了这些应用程序是否针对特定的加密狗而设计。如表中所示,超过一半的伴随应用程序是特定于加密狗的,例如BlueDriver,Carly for Toyota和FIXD,它们提供高级诊断甚至是远程控制功能。但是,最受欢迎的应用程序(例如Torque Lite)是第三方为基于ELM327的加密狗开发的,因此它们与购买的大多数加密狗兼容。

2)实验设置

动态分析是在一辆空旷的停车场中的2015本田Civicautomobile上进行的,以避免发生意外事故。它在方向盘下方有一个标准的OBD-II端口,可插入OBD-II加密狗进行测试。 DONGLESCOPE的动态分析部分已实现并部署在MacBook Pro笔记本电脑上,该笔记本电脑具有六个Intel Core i7-8850H CPU(2.6 GHz)和16 GB RAM,运行10.14.5 macOS Mojave。静态配套应用analysis在运行Ubuntu 12.04的Linux服务器上运行,该服务器配备了十二个Intel Core i7-8700(3.2 GHz)CPU和32 GB RAM。

3)漏洞分析结果

1600954558026

正确设置实验环境后,将DONGLESCOPE应用于77个OBD-II加密狗以及21款移动应用程序。尽管以前对OBD-II加密狗的安全性分析显示应用程序层身份验证漏洞不足,并且消息过滤中存在安全漏洞,但本文的分析更为全面,因为不仅发现了新的漏洞,而且还在市场上的加密狗中对它们进行了量化。上表和下表给出了所有加密狗和配套应用的完整评估结果。总之,在广播,连接和通信阶段发现了5种类型的常规漏洞(其中4种是新发现的),发现所有加密狗都是易受这些漏洞中至少两个漏洞的影响,这表明当今这种新的车辆攻击面普遍存在漏洞。接下来根据分析的每个阶段展示详细的结果。

1600954592229

(a)连接阶段

V1:大部分(84.16%)的加密狗都没有连接层或应用层认证。实验结果表明,OBD-II加密狗之间在连接阶段缺少认证,这可以进一步分类为连接层和应用层缺乏认证。前者导致任意附近的连接,因为一个人无需提供任何凭据即可建立连接。基于已建立的连接,后者进一步允许任何未经授权的用户与加密狗进行通信,这实质上允许未经授权的用户访问CAN总线。总而言之,发现84.16%的加密狗既没有连接层也没有应用层认证,一旦攻击者在广播阶段发现它,攻击者就可以任意访问CAN总线。

V1.1:默认情况下,几乎所有(92.21%)的加密狗都没有连接层身份验证。在连接阶段,工具报告说附近的设备可以任意连接71个(92.21%)加密狗,而连接之前只有6个(7.79%)加密狗需要身份验证,这意味着这些加密狗之间的连接层受到了弱保护。只需保持与目标加密狗的连接即可执行拒绝服务攻击。进一步发现,这6个加密狗通过两种方式来实现连接层身份验证,如下表所示,OBDLink MX采用WPA2-PSK来验证其连接,这需要用户输入密码。输入的凭证然后生成一个加密密钥,以建立安全的通信通道,以防止窃听攻击。实现身份验证的另一种方法是通过按钮。特别是,用户需要按加密狗上的物理按钮以使其进入可发现模式,以便外部设备可以对其进行扫描和连接。此模式只能持续大约几分钟,并且连接的时间窗口很窄。在6个加密狗中,有5个已应用此实现。有趣的是,还发现了一种特殊情况,即如果未建立连接,BlueDriver加密狗将在60秒后强迫自己进入睡眠状态,这大大缩短了攻击的时间范围。

1600954625776

V1.2:默认情况下,在77个加密狗中只有1个具有应用层自动认证。建立连接后,DONGLESCOPE尝试直接注入CAN总线消息以与加密狗进行通信,并成功从71个(92.21%)加密狗中查询了VIN,这表明它们默认情况下没有应用层身份验证。进一步手动调查了其余6个加密狗的配套应用程序,以了解注入失败的根本原因。令人惊讶的是,发现只有1个加密狗(即Auto matic Pro)实现了应用程序层身份验证,其余5个加密狗(包括BlueDriver,HaulGauge,Innova,DODYMPS和OHP Forscan)也没有应用程序层身份验证,因为它们是不基于ELM327,并且仅接受专用于制造商的命令来执行车辆诊断。在本文中,将这些命令称为私有命令,这些命令可以在其配套应用程序的预定义消息生成结果中找到。

有趣的是,还发现Automatic Pro的开发人员已定义了专用命令来查询VIN或从车辆读取参数。下表中提供了这些命令的详细内容。结果表明,私有命令通常是人类可读的字符串或数字,如表的最后一列所示。然后加密狗将这些专用命令解释为CAN总线消息,并将其中继到CAN总线。请注意,这5个加密狗也缺乏连接层身份验证,因此附近的攻击者仍可以利用这些私有命令来发起攻击。总结来说,对于除了一个加密狗之外的所有加密狗,攻击者都可以在建立连接后直接访问CAN总线。唯一的加密狗Automatic Pro已演示了一种在应用层上实现身份验证的方法。具体地,在通信阶段之前,它要求用户手动输入PIN码,该PIN码是印在加密狗上的随机6位长度的字符串。但是,仍然可以通过蛮力攻击来破坏PIN码。之后,它会验证PIN并利用它来创建用于与授权用户进行通信的加密密钥。传输消息时,必须使用密钥对其进行加密并通过安全通道进行发送。

1600954700039

V2:29(37.66%)加密狗即使在连接了车主的移动设备时也可以允许未经授权的访问。对于大多数加密狗,它们一次只能连接一个移动设备,这是预期的,因为这些加密狗的最流行用法是专门连接令人惊讶的是,发现某些Wi-Fi加密狗已配置为允许多个设备连接和访问。这些多个连接的设备在通信阶段受到同等对待,这意味着即使连接了车主的设备,攻击者也可以攻击这些加密狗。在研究中的49个Wi-Fi加密狗中,发现其中29个(37.66%)允许多个设备访问。此外,这29个加密狗中只有1个已实现身份验证,这意味着超过一半(即28个)Wi -Fi加密狗即使连接了车主的智能手机,也可能受到攻击。

(b)交流阶段

V3:大部分(67.53%)的加密狗无法过滤出未定义的CAN总线消息。在通信阶段,DONGLESCOPE尝试发送未定义的CAN总线消息,该消息不应被加密狗接受并传递到CAN总线,但是结果表明,有52个(67.53%)的加密狗未能过滤掉此未定义的CAN总线消息,这这表明,他们很容易受到不确定的CAN总线消息注入的侵害。之前在市场上尚无博世加密狗发现过这种过滤器不足的情况,而研究是第一个衡量此类漏洞普遍存在的方法。今天提供了一套完整的加密狗。相反,DONGLESCOPE确认只有24(31.17%)个加密狗(包括5个使用private命令的加密狗)能够识别未定义的消息,并阻止将其传递到CAN总线。至于其余的1dongle(即Automatic Pro),由于应用层身份验证,本文工具无法确定是否可以过滤未定义的CAN总线消息。还从一组预定义的消息中发现,两个加密狗(即Carista和Automatic Pro)除了具有诊断功能外,还支持非诊断功能。

例如,Carista提供了远程控制功能,例如禁用远程门锁,取消安全带警告以及修改停车传感器,这会影响汽车的控制性能。由于此加密狗也没有任何身份验证,因此攻击者可以通过对配套应用进行反向工程来提取这些有效的非诊断性CAN总线消息,然后注入它们以发起攻击。另一个软件狗Automatic Pro允许使用专用命令gps_location跟踪当前GPSlocation。幸运的是,此加密狗已在应用程序层上实现了身份验证,因此附近的攻击者无法轻松地注入相应的私人命令。

V4:一些(3)加密狗很容易受到空中软件的破坏或破坏。除了OBD-II加密狗的预定义消息外,发现预定义消息生成步骤的输出还包括大块数据,这些数据显然不是CAN总线消息。根据关键词“固件”和“升级”等启发式线索,发现这些是OBD-II加密狗的固件映像。由于OBD-II加密狗通常没有蜂窝网络,因此它们依靠配套移动应用程序作为网关来无线下载和传输其固件数据包以实现升级。

通常,加密狗需要在升级之前进入BootLoader模式,这是通过从应用程序向加密狗发送特定命令(例如AT∧和AT @ BL)来完成的。接下来,配套应用通过无线网络通道将固件数据包传输到加密狗。由于升级过程是由移动应用程序启动的,因此攻击者有可能欺骗加密狗并通过转移恶意软件来破坏其固件。如下表所示,发现4OBD-II加密狗具有固件升级功能。因此,通过手动分析其配套应用程序进一步调查了其升级过程。分析表明,这4个加密狗中有3个(75%)容易受到固件破坏者或提取的攻击。

1600954716802

由于破坏加密狗的固件需要首先访问它,因此消除了具有加密功能的固件。在这四个加密狗中,只有Automatic Pro具有应用层身份验证,因此不受攻击。对于其余3个没有任何身份验证的加密狗,它们的固件有被颠覆的风险。为了破坏加密狗的固件,必须确保在加密狗方面没有进行完整性检查。因此试图通过注入修改后的固件来进行攻击,发现Carly和Innova的升级过程接受任意固件映像。尽管Innova通过验证每条消息后附加的校验和来验证完整性,但是可以通过分析配套应用程序轻松获得计算校验和的算法,从而使攻击者能够构造欺骗性的升级消息来进行攻击。

此外,甚至可以通过逆向工程从其配套应用程序中提取三个加密狗的固件映像。例如,BlueDriver应用程序公开其固件映像的下载URL和身份验证凭据。因此,成功下载了所有可用版本的固件映像。更糟糕的是,某些应用程序直接在应用程序代码中对固件映像进行硬编码,包括Carly for Toyota和RepairSolutions。有了访问加密狗固件的权限,攻击者便可以利用它们发现更多的漏洞,例如是否包含任何后门。

(c)广播阶段

1600954738802

V5:可以使用广播信息来唯一标识近一半(42.86%)的加密狗的漏洞状态。在确定了各种漏洞之后,将分析在广播阶段是否可以对这些OBD-II加密狗的漏洞进行指纹识别。这可以帮助攻击者确定要攻击的加密狗,然后相应地进行攻击,并且这种指纹识别可以显着提高攻击成功率。如上表所示,按它们的连接名称汇总所有加密狗,并显示具有相同漏洞状态的加密狗。总体而言,发现使用此类广播信息,可以针对其漏洞状态以唯一的方式指纹识别出33个(42.86%)加密狗。在这33个加密狗中,每个加密狗至少包含一个漏洞,这表明可以在广播阶段对其进行唯一指纹识别,并利用先前发现的漏洞(V1至V4)加以利用。连接名称重复的加密狗可能共享相同的开发模型,因此它们也可能共享相同的漏洞状态。

 

0x06 Attack Case Studies

为了证明发现的漏洞的严重性,构造了4类具体的攻击来构建这些漏洞,并在测试工具上对其进行了验证。这4种攻击可能导致广泛的安全隐患,包括隐私,财产盗窃,甚至驾驶员,乘客和行人的安全。

1600954751223

在发起这些攻击之前,攻击者首先会嗅探来自周围无线网络的广播连接信息。根据嗅探到的信息,她可以利用V5来识别易受攻击的OBD-II加密狗,或任意尝试连接到附近的加密狗以进行攻击。接下来,缺少连接级身份验证漏洞(V1.1)允许攻击者建立连接。请注意,即使加密狗与车主的移动设备连接,多设备访问漏洞(V2)也会启用这种恶意连接,从而大大提高了攻击的灵活性。建立连接后,如果不存在应用程序级身份验证漏洞(V1.2),攻击者可以对受害者车辆进行至少4次攻击,包括与车辆有关的数据泄漏(A1),财产失窃(A2),车辆控制干扰(A3)和车载网络渗透(A4)。每种攻击都需要一个或多个已识别的漏洞作为前提条件,如上表。还列出了每种攻击易受攻击的加密狗的数量,包括带有或不带有两个可选前提条件(V2或V5)的统计信息。当存在V2或V5时,攻击的灵活性或成功率要高得多。接下来,详细描述每种攻击。

A1 车辆相关数据泄漏:这种攻击只需要V1即可使附近的攻击者能够连接和读取带有OBD-II PID的易受攻击的OBD-II加密狗的私有数据。已经展示了一些案例,这些案例可以通过易受攻击的加密狗从受害车辆那里获取位置,车辆诊断数据和CAN总线流量,从而危及用户隐私或协助进行其他复杂的攻击。如表中所示,研究中的65个(84.42%)OBD-II加密狗容易受到这种攻击。

•A1.1位置泄漏:攻击者可以使用诊断PID 09 02获得唯一标识汽车的车辆识别号(VIN)。由于VIN也印在驾驶员侧仪表板上,并且可以从外面看到,因此攻击者能够将目标车辆定位在安装有漏洞的加密狗的位置,并进行进一步的攻击。

•A1.2诊断数据泄漏:除VIN之外,攻击者还能够通过PID读取车辆的诊断数据,包括里程表,燃油费率,发动机RPM等,这侵犯了车主的隐私。此外,她还可以利用泄漏的数据(例如车速和油门位置)分析驾驶行为和指纹驾驶员。

•A1.3 CAN总线交通泄漏: CAN总线协议的逆向工程并非易事,但具有很大的价值。通过向基于ELM327的OBD-II加密狗注入ATMA命令,就可以转储CAN总线流量以分析CAN总线协议。因此,当V3存在时,攻击者能够收集与安全相关的CAN总线控制消息(例如,施加制动),以执行任意CAN总线消息注入攻击。

A2 财产盗窃:要实现此攻击,需要使用V1和V3。因此,有46个(59.74%)的加密狗很容易遭到财产盗窃。在实验过程中,发现了一种能够禁用测试车辆的无线锁定功能的CAN总线消息。使用此消息,构造了财产盗窃攻击。首先,攻击者如A1.1所述找到目标车辆。接下来,她注入该消息并禁用无线锁定功能,并等待车辆上的车主离开。当驾驶员退出车辆并像往常一样用钥匙远程锁定车辆时,他或她可能不知道锁定不成功,因此无需担心。之后,攻击者就有机会潜入车辆并偷走所有物品。

A3 车辆控制干扰:模糊测试是软件测试中广泛使用的一种技术,它可以通过将随机输入发送到计算机程序来帮助发现错误。同样,攻击者可以通过带有V1的易受攻击的加密狗,将诊断CAN总线消息发送到车辆,以达到拒绝服务(DoS)的目的。此外,使用与控制相关的CANbus消息对V3的加密狗进行模糊处理甚至会干扰车辆控制,从而威胁驾驶员,乘客和行人的安全。先前的研究已经证实了由引信攻击引起的严重后果,可能会影响发动机,仪表板和制动系统。在收集的加密狗中,有46个(59.74%)容易受到此攻击。请注意,要触发对车辆的实际影响,必须以高频率进行模糊测试以覆盖正常消息。为了验证这种攻击,编写了一个Python脚本,该脚本每10毫秒向带有V3的易受攻击的加密狗注入随机的CAN总线消息,由于其警报系统持续运行,导致测试车辆出现异常行为,必须在模糊不清对车辆造成永久损坏之前将其停止。

A4 车载网络渗透: V1和V4允许未经授权的攻击者发送恶意固件数据包,以破坏加密狗的固件。由于OBD-II加密狗直接与CAN总线连接,因此攻击者可以通过替换固件来渗透到车载网络中,从而达到诸如欺骗和窃听攻击之类的恶意目的。在研究的所有OBD-II加密狗中,有2个(2.60%)(包括2个由于私信导致的误报)加密狗容易受到这种攻击。

 

0x07 Discussion and Future Works

1)工具效果

误报:在DON GLESCOPE的设计和实现中,通过将被测软件狗插入真实汽车中,对所有三个攻击阶段的测量目标进行了动态测试。结果,分析结果没有误报。识别出的漏洞是真实漏洞,并通过动态分析予以确认。

动态软件狗分析和静态移动应用程序分析中都可能存在误报。在广播和连接阶段,DONGLESCOPE遵循默认配置来收集广播信息并建立连接,这不会导致误报,否则,加密狗也不适用于普通用户。交流阶段的分析可能会给结果带来误报。例如,误报的一个来源是设计假设,即所有加密狗均基于ELM327。但是,在收集的加密狗中,发现加密狗中的一小部分在加密狗和应用之间具有自己的通信协议实现。对于这些加密狗,DONGLESCOPE无法通过使用标准ELM327命令进行测试来获得响应。使用app分析结果和手动确认发现了这些案例,在连接阶段分析中导致5个误报。由于每个加密狗的实现可能有所不同,因此设计通用的方法来覆盖这些案例并非易事,因此,这留作以后的工作。至于静态分析分析结果,由于代码混淆可能会导致误判否定,这会混淆程序的控制流程。因此,可以通过静态分析识别的消息集是加密狗支持的所有消息的子集。

总而言之,DONGLESCOPE没有漏报,但可能有误报。因此,本文的分析结果提出了在实验中加密狗的脆弱性状态的下限。

2)根本原因与对策

在本文中,发现了导致远程或附近攻击的无线OBD-II加密狗的5个一般漏洞。归纳起来,有两个根本原因。一方面,OBD II加密狗可以通过OBD-II端口直接访问CAN总线。另一方面,未经授权的访问允许附近的攻击者向OBD-IIdongles写入恶意消息。为了消除这些漏洞,可以在以下三个实体中的任何一个上部署对策:CAN总线,OBD-II端口或OBD-II加密狗,详细说明如下。

CAN总线上的身份验证:在CAN总线上部署安全认证是一种基本的解决方案,因为它消除了所有未经授权的消息,而不管OBD-II端口和OBD-II加密狗的安全性如何。但是,由于CAN总线协议设计的不安全特性以及对性能的高要求(例如,低延迟),到目前为止,尚无有效且可实际部署的解决方案。

OBD-II端口上的防火墙:另一个对策是在OBD-II端口上建立防火墙,以防止恶意消息注入。例如,为Chrysler模型开发了一个物理网关模块,该模块已将云身份验证部署用于访问控制。具体来说,未经授权的设备仅具有有限的无害功能,例如对诊断CAN总线的读取操作。这种对策的缺点在于,它要求车主购买额外的网关来保护OBD-II端口。而且,现有的网关设备仅与几种汽车型号兼容,这显然不是通用解决方案。因此,这种通用网关的设计和开发留给另一项未来的工作。

在OBD-II加密狗上进行身份验证。正如文中所证明的那样,OBD-II加密狗的连接层和应用层缺乏认证是附近任何车辆受到攻击的必要前提。因此,部署安全认证也是防止攻击的有效方法。但是,由于两个原因,这是一项艰巨的任务。首先,由于OBD-II加密狗通常既没有蜂窝网络也没有诸如显示器或键盘之类的用户界面,因此它们需要外部设备(例如移动应用程序)通过在通信之前发送特定凭证来首先进行身份验证,这可能会引入新的攻击面。例如,在Bosch dongle应用程序中发现了硬编码的凭据,因此,开发人员还需要花费大量精力来确保应用程序中的身份验证过程的安全(例如,通过使用复杂的算法或涉及云计算)是昂贵的。一方面,需要涉及云等基础架构。另一方面,可能需要付出额外的努力来定制加密狗固件,例如在每个加密狗中对随机PIN进行硬编码。可能由于这些原因,当今市场上的大多数加密狗仍然容易受到攻击。在未来的工作中,计划在一些知名平台上设计和开发OBD-II加密狗与mobileapp之间的安全身份验证协议例如OpenXC。

3)责任披露

2019年8月7日,通过电子邮件将发现的漏洞报告给29个供应商,这些漏洞涵盖了研究中的47(61%)OBD-IIdongles。对于其余30个(39%)加密狗,设法找到其供应商的联系信息。截至2019年11月19日,也就是披露信息的3个月后,仅收到了少数供应商的答复。其中,两家供应商已决定在其加密狗的未来版本中部署身份验证,而另一家仍在讨论报告的问题。

如此低的响应率的原因可能有两个。首先,这些OBD-II加密狗大多数都非常便宜,例如,其中75%的价格实际上不到30美元。如此低的价格可以提高其产品在市场上的竞争力,但这也意味着供应商可能无力负担额外的安全功能。在这些加密狗中部署身份验证需要付出巨大的努力,因此不可避免地会增加加密狗的成本。其次,发现某些供应商之间缺乏安全意识。特别是,在收到的答复中,一些供应商并未将某些CAN总线数据(例如速度和VIN)的泄漏视为隐私泄漏。但是,如前所讨论并由先前的工作所示,这些数据确实会导致隐私泄露,例如泄露驾驶员身份。

根据经验,通过直接联系供应商来解决OBD-II加密狗漏洞实际上无效,因为不仅很难找到他们的联系信息,而且很难说服他们采取安全性增强措施。因此,已经向CVE报告了本文中发现的所有漏洞,以确保足够的公开披露此类安全问题。截至2019年11月27日,本文发现已得到一系列CVE的认可。同时,也希望本文工作能够引起社区的立即关注,并共同努力确保汽车物联网中产品的安全。

 

0x08 Conclusion

在本文中,于2019年2月对美国亚马逊上提供的77个无线OBD-II加密狗进行了首次全面的安全性分析。为了系统地进行分析,设计并实现了自动分析工具DONGLESCOPE,并使用它来识别5个不同类型的漏洞,其中4个是新发现的。结果表明,这77个加密狗中的每一个都至少暴露了两种类型的漏洞,这表明当今市场上的无线OBD-II加密狗中普遍存在这种漏洞。为了说明严重性,构造了4类具体的攻击,这些攻击可能导致隐私泄露,财产盗窃和安全威胁。还讨论了根本原因和可行的对策,并进行了责任披露。

最后,随着物联网设备越来越多地用于诸如车辆之类的安全关键领域,希望本文在特定领域的发现及其安全/安全含义能够发出强烈而及时的信息,以开始在这些高度关键的应用领域,例如汽车物联网中开发和部署有原则的安全设计。

(完)