宝马汽车安全评估报告

阅读量    123381 | 评论 2   稿费 190

分享到: QQ空间 新浪微博 微信 QQ facebook twitter

 

 

0x01 介绍

近年来,越来越多的宝马汽车配备了新一代“智能网联”的信息娱乐系统(例如HU_NBT/HU_ENTRYNAV) – 也叫做车载系统 – 和远程信息处理控制系统(例如TCB). 虽然这些组件显著提高了用户体验和便利性, 但他们也为新的攻击提供了机会.

在我们的工作中, 我们系统地对多辆宝马汽车的车载系统、远程信息处理控制系统和中央网关模块的硬件和软件进行了深入而全面的分析. 通过主要关注这些系统的各种外部攻击表面, 我们发现通过一组远程攻击表面(包括GSM通信、BMW远程服务、BMW ConnectedDrive服务、UDS远程诊断、NGTP协议和蓝牙协议), 可以对宝马汽车进行远程目标攻击. 因此, 攻击者可以通过利用不同车辆组件中存在的多个漏洞的复杂供应链, 对宝马汽车的CAN总线进行远程控制. 此外, 即使没有互联网连接的情况下, 我们也能够以物理访问方式(例如USB、以太网和OBD-II)危害车载系统. 根据我们的测试, 我们确认所有漏洞都会影响各种现代宝马车型.

我们的研究结果证明, 在选定宝马车辆模块的特定速度之上获得信息娱乐系统、T-Box组件和UDS通信的本地和远程访问是可行的, 并且能够通过执行任意的、未经授权的诊断请求获得对CAN总线的控制.

 

0x02 研究描述

从安全的角度来看, 现代宝马汽车会暴露出几个远程攻击表面以及物理攻击表面. 在本文中, 我们重点关注三个重要的车辆组件: 信息娱乐系统(也叫做车载系统), 远程信息处理控制系统和中央网关模块, 它们容易受到外部攻击的影响. 根据我们对宝马汽车车载网络的研究, 我们发现所有三个组件都通过物理总线(例如USB,CAN总线,以太网)与其他组件紧密配合.

在对固件进行深入的安全性分析后, 我们发现这些车载组件存在14个漏洞. 我们发现的所有软件漏洞都可以通过在线重新配置和离线固件更新(而不是空中升级)来修复.

目前, 宝马正在制定修复计划, 一些高优先级的对策正在推出.

2.1 信息娱乐系统

宝马汽车的车载信息娱乐系统(也叫做NBT车载系统)由两部分组成: hu-intel系统和hu-jacinto系统.

hu-intel. QNX系统运行在high-layer芯片(Intel x86)上, 主要负责多媒体服务和BMW ConnectedDrive服务.

hu-jacinto. 在Jacinto ARM芯片上运行的QNX系统, 是一种用于处理电源管理和CAN总线通信的low-layer芯片.

hu-intel和hu-jacinto都可以通过QNET相互通信. 远程信息处理控制系统通过USB连接到hu-intel, 车载和BMW远程服务器之间的所有通信数据都将被传输. hu-jacinto和远程信息处理控制系统都连接到K-CAN总线, 这是一个用于信息娱乐的专用CAN总线. 为了安全隔离, 以太网交换机阻止了从hu-intel到中央网关模块的以太网连接, 在较新的BMW汽车(例如BMW I3)中, 中央网关模块和以太网交换机都集成到车身控制器模块(BDC/FEM)上了.

2.1.1 USB接口

NBT在QNX OS中提供了一些内置的io-pkt网络驱动程序, 用于通过USB接口建立以太网网络. 根据hu-intel系统中的USB配置文件(/opt/sys/etc/umass-enum.cfg), 它默认支持某些特定的USB-to-ETHERNET适配器.

使用网络驱动程序时, 如果插入了某些特定芯片组的USB加密模块, 将启用USB以太网网络. NBT车载将充当具有固定IP地址(192.168.0.1)的网络网关. 更糟糕的是, 这种USB以太网接口没有任何安全限制, 这使得可以访问主机的内部网络, 然后通过端口扫描检测许多暴露的内部服务.

本地代码执行. 有许多更新服务在hu-intel系统中运行(例如导航更新/软件更新)并监控USB存储器. 随着USB存储器中提供的预期更新内容, NBT将进入一定的升级阶段. 有些内容是由BMW私钥签署的, 有些则不是, 这使我们有机会在USB存储器中准备好格式错误的内容, 并利用更新服务中存在的一些漏洞来获得具有root权限的hu-intel系统的控制权.

还有另一种获取root shell的方法,稍后将对此进行解释.

2.1.2 OB-II上的E-NET

E-NET是一种车载以太网网络, 托管在宝马汽车的OBD-II接口上. 通过E-NET, 汽车工程师可以连接到中央网关, 并对车载系统进行离线诊断和固件更新. 相应地, 在hu-intel系统中, 点对点诊断服务负责处理来自中央网关的请求. 在对中央网关和NBT之间的诊断协议进行逆向工程后, 我们发现了可用于绕过代码签名机制的漏洞, 并成功从hu-intel系统获得了root shell.

此外, 考虑一种成本较低的方式: 通过使用USB以太网加密模块, 黑客也可以root QNX系统(hu-intel), 该系统使用en5网卡接口、具有固定IP地址(192.168.0.1).

2.1.3 蓝牙栈

凭借内置的蓝牙功能, NBT允许移动电话连接到它以进行免提通话. 由于我们已获得具有root权限的hu-intel系统的访问权限, 因此我们确定了负责处理蓝牙功能的特定服务. 通过逆向工程, 我们认为它使用第三方蓝牙堆栈库, 它是蓝牙堆栈的管理和服务组件的实现. 通过向车载发送格式错误的软件包对蓝牙堆栈进行模糊测试后, 最终我们得到了一个格式错误的软件包, 可能导致蓝牙堆栈中的内存损坏.

因此, 通过简单地将NBT设置为配对模式, 我们可以利用此漏洞在没有PIN码的hu-intel系统中崩溃蓝牙堆栈. 因此, 由于内部监视机制, 导致主机重启.

2.1.4 ConnectedDrive服务

NBT的BMW ConnectedDrive服务通过内置在远程信息控制系统中的嵌入式SIM卡来使用蜂窝网络连接, 为客户提供广泛的在线功能, 包括ConnectedDrive商店、TeleServices、实时交通信息(RTTI)、智能紧急呼叫、在线天气和在线新闻. ConnectedDrive服务提供的大多数在线功能都由车载浏览器处理, 即NBT中所谓的“DevCtrlBrowser_Bon”.

“DevCtrlBrowser_Bon”使用自定义的浏览器引擎. 它似乎是由Harman为车载信息娱乐系统开发的.

远程执行代码. 在我们使用通用软件无线电外围设备(USRP)和OpenBTS实现稳定的GSM网络之后, 所有来自ConnectedDrive服务的流量都被捕获, 并且由于NBT中的有一些不安全的ConnectedDrive服务编码实现, 我们还成功拦截了来自ConnectedDrive服务的网络流量. 之后, 我们可以自由地找到“DevCtrlBrowser_Bon”中的错误. 然后我们利用“DevCtrlBrowser_Bon”中的内存损坏漏洞, 并使用浏览器权限在车载中实现远程代码执行. 最后, 通过利用前面提到的漏洞, 我们实现了root权限升级, 并通过与2.1.1章节不同的路径从NBT获得了一个远程root shell.

2.1.5 K-CAN总线

通过利用上述漏洞访问高级别QNX系统(hu-intel)后, 我们还可以通过QNET登录低级别的hu-jacinto系统. 如上所述,hu-jacinto系统运行在Jacinto ARM芯片上, 负责处理CAN消息. 通过深入分析, 我们找到了两种在K-CAN总线上发送任意CAN消息的方法:

(1)虽然数据表不向公众开放,但我们可以重用TI开发的BSP项目中的一些CAN总线驱动程序源代码来操作Jacinto芯片的特殊存储器来发送CAN消息.

(2)通过动态挂载CAN总线驱动程序用于传输CAN消息的功能,我们还能够稳定地向K-CAN总线发送任意CAN消息.

通过将漏洞链接在一起,我们能够远程破坏NBT. 之后,我们还可以利用中央网关模块中实现的一些特殊远程诊断接口发送任意诊断消息(UDS)来控制不同CAN总线上的ECU.

2.2 远程信息处理控制系统

远程信息处理控制系统通过蜂窝网络以及BMW远程服务(例如远程解锁,环境制御等)为BMW连接的车辆提供电话功能和远程信息处理服务(例如,E-Call,B-Call等). 在本节中,我们的目标是德国公司“Peiker Acustic GmbH”生产的远程信息通信盒(TCB)控制系统,这是最广泛使用的远程信息处理控制系统,在现代宝马汽车中配备了NBT和ENTRYNAV车载系统.

硬件架构. TCB控制单元可分为两部分,上层部分为MPU,基于带有AMSS RTOS(REX OS)的Qualcomm MDM6200基带处理器。通过嵌入式SIM卡,MDM6200负责TCB和BMW远程服务器之间的远程信息处理通信. 下层部分是MCU,一个基于飞思卡尔9S12X的CAN控制器,通过K-CAN总线直接连接到中央网关模块. MPU(MDM6200基带)使用基于UART的IPC机制与MCU(Freescale 9S12X)进行通信.

软件架构. 远程信息通信盒(TCB)控制系统是BMW ConnectedDrive系统功能的平台之一. TCB可以建立连接GSM和UMTS网络,在我们对固件进行反向工程时,我们发现TCB将支持以下功能:

1. 增强紧急呼叫

2. BMW远程服务(例如远程门锁解锁,环境制御等)

3. BMW TeleService诊断,包括TeleService帮助

4. BMW TeleService Call

5. BMW LastStateCall

6. 其他人

高通公司为基于ARM的高级模式用户软件(AMSS)开发的REX OS(实时操作系统)在TCB的MPU上运行. 有超过60个系统任务(“CallManager”,“Diag_task”,“Voice”,“GPRS LLC”等),以及大约34个应用程序任务(“NGTPD”,“NAD Diag”,“SMSClient”, “LastStateCall”等)在为上面提到的多个功能工作.

2.2.1 使用NGTP进行远程服务

下一代远程信息处理模式(NGTP)是一种技术中立的远程信息处理方法,旨在为汽车,远程信息处理和车载技术行业提供更大的灵活性和可扩展性,为驾驶员,乘客和车辆本身提供更好的连接. NGTP提供BMW车辆中的BMW远程服务,bmwinfo和myinfo等功能. 根据原始设计,一些NGTP消息应通过HTTPS传输到TCB. 在对固件进行反向工程之后,我们发现通过SMS直接发送任意NGTP消息以触发与通过HTTPS相同的各种远程信息处理功能是有效的,加密/签名算法是公知的,加密密钥也是硬编码的.

经过一些深入的研究,我们完全恢复了NGTP协议,并使用USRP和OpenBTS来模拟GSM网络,然后用信号抑制器抑制TSP信号,使我们的伪基站为BMW车辆提供服务. 最后,我们可以直接向BMW车辆发送任意NGTP消息,以触发BMW远程服务.

注意:所有这些测试都是在实验室环境中进行的,用于研究目的。不要在公共场所试图这样做.

2.2.2 远程诊断

在TCB的固件中,“LastStateCall”任务负责远程诊断和诊断数据收集. 一旦“LastStateCall”任务启动,就会调用函数“LscDtgtNextJob”从固件的全局缓冲区中提取诊断CAN消息(UDS),然后通过K-CAN总线将诊断消息发送到中央网关. 中央网关将这些诊断消息传输到不同CAN总线上的目标ECU,最后通知TCB将相应的响应数据从目标ECU通过HTTPS上传到BMW远程服务器.

远程执行代码. 在对TCB固件进行了一些艰难的逆向工程之后,我们还发现了一个内存错误漏洞,它允许我们绕过签名保护并在固件中实现远程代码执行. 到目前为止,我们能够在没有任何用户交互的情况下远程root TCB,并发送任意诊断消息来控制CAN总线上的ECU,如PT-CAN,K-CAN等

2.3 中央网关模块

出于不同的设计目的,宝马汽车的中央网关模块集成在不同的系统中(例如FEM和BDC). 在较旧的系列中,ZGW–一个独立的网关ECU–是车载网络的中央网关模块。在较新的系列(例如BMW I3)中,中央网关模块集成在一些车身控制器模块(例如BDC和FEM)中. 我们选择ZGW和BDC作为我们的研究目标,代表宝马汽车的两代中央门户模块.

中央网关模块由定制的MPC5668芯片组成,这是PowerPC架构. 它连接到一些CAN总线,以及LIN,FlexRay和MOST总线. 中央网关最重要的功能是从远程信息处理控制系统和车载系统接收远程诊断CAN消息(UDS),然后将诊断消息传送到不同CAN总线上的其他ECU.

2.3.1 跨域诊断消息

在研究期间,通过中央网关模块中的远程诊断功能,我们可以利用中央网关中的远程诊断功能将UDS消息发送到其他ECU. 在正常情况下,当中央网关模块处理来自远程信息处理控制系统或车载系统的合法远程诊断消息时没有危险,此功能可能是一个大问题,它为黑客提供了一个潜在的攻击面来控制其他ECU并破坏安全隔离不同的域. 考虑到我们已远程控制远程信息处理控制系统和车载系统,我们很容易使中央网关模块传输受控诊断消息,以便操纵CAN总线上的ECU(例如PT-CAN,K-CAN等).

2.3.2 UDS缺乏高速限制

应正确设计安全诊断功能,以避免在异常情况下使用不当。但是,我们发现即使在正常行驶速度下(在BMW i3上确认),大多数ECU仍然会响应诊断信息,这可能会导致严重的安全问题。如果攻击者调用某些特殊的UDS例程(例如重置ECU等),情况会变得更糟.

 

0x03 漏洞调查结果

宝马已经确认了以下所有漏洞和CVE:

 

0x04 供给链

在我们发现一系列漏洞主要存在于现代宝马汽车的不同车辆部件中之后,我们仍然希望在现实世界的情景中评估这些漏洞的影响,并试图找出潜在的危险.

在我们的研究中,我们已经找到了一些通过向ECU发送任意诊断消息来通过不同类型的攻击链来影响车辆的方法.

攻击链旨在通过中央网关模块实现对其他CAN总线的任意诊断消息传输,以便影响或控制不同CAN总线上的ECU,因为我们能够在NBT和TCB中发送诊断消息.

所有攻击链都可以分为两类:接触式攻击和非接触式攻击. 我们确实相信这些攻击链可以由技术娴熟的攻击者以极低的成本使用 – 有足够的研究.

4.1 接触攻击

在真实的场景中,仍有很多人有机会接触NBT,所以接触到的攻击仍然是一种应该引起注意的高潜在攻击方法.

借助USB接口和OBD-II接口的严重漏洞,攻击者可以轻松地使用它们在NBT中安装后门,然后通过中央网关模块操纵车辆功能.

4.2 非接触式攻击

非接触式攻击基于车辆的无线接口. 在这种类型的攻击链中,攻击者可能会远程影响车辆. 在这一部分中,将说明通过蓝牙和蜂窝网络的攻击链.

4.2.1 蓝牙频道

蓝牙是车辆中NBT的典型短程通信协议. 由于前面提到的蓝牙堆栈中存在漏洞,当蓝牙处于配对模式时,攻击者可能会在未经身份验证的情况下影响车载的可用性. 但是,只有当攻击者非常接近车辆并使NBT异常工作时才会发生这种攻击.

4.2.2 蜂窝网络

免责声明:我们在一个受控制的环境中进行了道德黑客研究(不要在现实世界的移动网络中尝试).

如果TCB落入伪基站,攻击者可以借助一些放大器设备将攻击距离扩展到较宽的距离. 从技术上讲,即使汽车处于驾驶模式,也可以从数百米发动攻击. 在TSP和车辆之间使用MITM攻击,攻击者可以远程利用NBT和TCB中存在的漏洞,导致在NBT和TCB中留下后门. 通常,恶意后门可以将受控诊断消息注入车辆中的CAN总线.

 

0x05 有漏洞的宝马车型

在我们的研究中,我们发现的漏洞主要存在于车载系统,远程信息处理控制系统(TCB)和中央网关模块中. 根据我们的研究实验,我们可以确认车载系统中存在的漏洞会影响几款BMW车型,包括BMW i系列,BMW X系列,BMW 3系,BMW 5系,BMW 7系. 远程信息处理控制系统(TCB)中存在的漏洞将影响2012年生产的配备该模块的BMW车型.

下表列出了我们在研究过程中测试过的易受攻击的BMW型号,以及每种型号的特定组件的固件版本.

由于不同的宝马汽车型号可能配备不同的组件,甚至相同的组件可能在产品生命周期中具有不同的固件版本. 因此,从我们这方面来看,有漏洞的车型的范围很难得到准确确认. 从理论上讲,从我们的角度来看,配备这些易受攻击部件的宝马车型可能会受到影响.

宝马证实,上面提到的车载系统和T-Box组件中存在漏洞. 感兴趣的客户可以通过关注宝马官方客户通知来检查他们的个人汽车是否会受到影响以及是否可以获得软件更新.

 

0x06 结论

在本报告中,我们揭示了我们在车载系统,远程信息处理控制系统和中央网关模块中发现的所有漏洞. 攻击者可以通过车辆面向外部的I/O接口并利用这些漏洞,包括USB,OBD-II和蜂窝网络. 特别是,远程信息处理控制系统在没有任何物理访问的情况下受到攻击,攻击者可以通过向宝马车辆的内部CAN总线发送恶意CAN消息,远程触发或控制宽范围的车辆功能,无论何时停车或驾驶模式.

分享到: QQ空间 新浪微博 微信 QQ facebook twitter
|推荐阅读
|发表评论
|评论列表
加载更多