两年前汽车破解案终见天日,这才是真·戳痛点·BUG

界面新闻   2015-08-18 20:27
作者:车云 ·

车云按:上个月底克莱斯勒被Charlie Miller&Chris Valagek联手破解的事件似乎打开了一个开关,通用、特斯拉纷纷中招,还有黑客发现了可以在品牌之间无差别攻击的手段。黑帽大会+USENIX安全会议,也公布了一个又一个让车企们胆跳心惊却还要表现得面不改色的安全漏洞。

随着联网功能、近场通讯手段的愈加增多,汽车上可被攻击的地方也越来越多。要攻破一辆汽车的防线,能从哪些方面入手?汽车制造商和供应商们又该怎么防止入侵呢?车云菌将以近段时间被公开的案例为引,逐步给出解答。

 

这是一个本该在两年前就公布的汽车破解案例,不过因为来自于英国伦敦高等法院的一纸禁令,直到最近的USENIX安全会议上,几位研究员的研究论文才真正发布。起诉他们的,则是大众。今儿要八的就是这件事情,不过在八之前,提醒各位看官一句,所有相关信息均是两年前的数据,现在的情况如何还未可知。

不能说的秘密

具体是个什么事儿呢?

2012年,来自荷兰Radboud大学的三位研究员发现了车辆防盗器上的一个大漏洞(漏洞何在下文详述)。这个防盗器是由安装在车钥匙中的RFID芯片、车内钥匙孔内的天线与车内的防盗单元组成,在车辆启动之前,车内的防盗单元都会检查车钥匙的RFID芯片是否插在了车内的钥匙孔上,如果没有,那么就不会启动车辆,小偷儿们也就无法偷走汽车了。

大众车钥匙与其内的RFID芯片

这种防盗器在很多汽车品牌商都有广泛使用,除了大众之外,大众旗下的几大品牌奥迪、保时捷、兰博基尼、宾利,还有通用、本田、沃尔沃、雪铁龙等等。因为这个漏洞的特殊性,以及涉及到车辆的广泛性,在他们将漏洞告知汽车制造商并准备在九个月之后公开的时候,却被大众在英国起诉,最终不得发布。

在这之后,几位研究员开始了与大众的长期交涉。最终,经过了一年多的努力,终于被车企松了口,允许他们发布一个编辑过的版本。咳咳,据国外媒体Arstechnica透露,其实这个所谓编辑过的版本,只是删掉了其中的一句话。

话说回来,最近这么多公布了的汽车被黑事件,走的也是同样的流程:发现并验证漏洞——告知汽车厂商,留下改进时间——公布。为什么这个本来预留了9个月时间的面临的是完全不同的结果呢?

即便对这个漏洞并不很清楚,从这一点上是不是可以猜测,9个月的时间并不足以车企们做好补丁并修复漏洞。但是其实现在已经公布的一些事件中,也有很多并没有得到完全修复的呢。所以,这最多也就是原因之一。

为了知道更为核心的原因,车云菌从USENIX的官网下载了这份时刻两年才重见天日的论文。论文并不长,加上留白、说明、资料才20页,详细讲述了车辆防盗器的种类、漏洞所在、实施手段等等,当然,也给出了改进的方法与建议。

这个防盗器中的RFID芯片安装在车钥匙中,与现在车钥匙都有的遥控锁车/解锁功能并不相同。后者是需要电池、只有到按下相应按钮时候才起作用的,而这块RFID芯片与车辆防盗单元之间的通讯则是被动存在的,也就是时刻都处于激活状态。另外,RFID是通过低频无线电波进行通讯,而后者则是通过超高频信号通讯。

在一些老电影中,我们经常能看到的场景就是,主角或者反派从仪表板里抽出两条线来点火的办法去偷车。这个防盗器的存在就是为了防止这类偷车行为。只要车内防盗单元没有检测到RFID芯片的存在,ECU会控制燃油喷射系统和点火系统,让发动机不喷油、不点火,要偷就只能推着、抬着走了。

所以,市面上也有一些设备是通过一些干扰设备,让车辆以为车钥匙已经插上了来破解的。而且,在与一些地方警察进行合作调查的时候,三位研究员——Roel Verdult、Flavio Garcia以及Baris Ege——发现,很多人丢得莫名其妙。所以他们才展开了研究工作,而最终破译了这种通讯方式所使用的密码。

不过,破译不是关键,关键在于,这套密码系统的漏洞是,决定其是否容易被破解的关键数值,其被存储的位置的防护措施却很简单,可以很容易知道和被改写的。也就是说,虽然密码本身被藏得很好,但是密码被藏起来的开关却大咧咧地只有一个很薄的防护层。

这个锁闭开关只是1位字符,在二进制里,这代表了这个字符只有两个可能:锁上或者打开。锁闭状态下,密码不能读取或者改写;打开状态下,密码只能被改写。看上去,只要设定这里是锁闭就可以了,但是这也只是延长了破解时间而已,因为可以通过某种手段把锁闭的状态转换为打开……

试想,作为一只只学过C还基本上都还给大学老师的车云菌都能够配合维基百科轻松看懂原理和手段,真的公布出来了对于稍微专业一点的人来说,会有什么难度呐?

而且,需要的工具也并不复杂,一块125Hz的RFID分析工具就可以了,虽然要配上相应的破解数据库才行。唯一较难的是这个工具必须同时与车钥匙、车辆出在近场无线通讯的环境中,但是代客泊车和汽车租赁都很容易实现。

也不难想象,大众为什么要通过法律手段来禁止其发布了。毕竟目前公布的其他远程控制车辆的攻击手段,虽然直接影响到人身安全,但是在现实中有人这么做的概念很低,至少到现在一起案例也没有,但是偷车这种直接带来经济效益、实现手段又不复杂的方法却大有吸引力。

更何况,这个漏洞的存在并不是发个补丁再OTA更新就可以实现的。据研究员表示,这必须对密码的原理与机制进行更改才行,或者换个另外的密码验证方式。

看到这里,估计大部分人跟车云菌想法差不多,为什么不接着禁呢?难不成问题已经解决了?

很难改的漏洞

先不管解没解决,咱们先看看这个密码到底怎么被破译的,以及怎么去改。

在RFID芯片与车辆防盗单元的通讯中,首先防盗单元会发出一个信号到芯片上,芯片对该信号进行验证之后,再发出一个回应信号,这个回应信号再通过防盗单元的验证,那么就可以点火。类似于接头暗号,你喊“天王盖地虎”,我对“宝塔镇河妖”。有一方说错了,都无法往下进行。

在现在这类RFID芯片的通讯中,有四种常用密码协议,其中三种已经被破解过了,唯一剩下的这种,叫做Megamos Crypto,人们却对其知之甚少。这三位破解的就是这个Megamos Crypto。

Megamos Crypto的通讯信号中包含一个96位(二进制)的密码、一个32位的PIN码以及其他存储内容(包含保护密码的开关所在,这个开关下称锁定码)。其中密码和密码作为防盗单元与转换器之间验证使用,而32位PIN码的作用则是验证你是否能够在芯片中写入信息,这个被写入的信息之中,就包含了锁定码的所在。三位研究员经过多次分析之后,从三种成功破译密码的攻击方式中,发现了Megamos Crypto的一些可被攻破的弱点所在。

 

Round 1

进行无差别攻击,发现以下问题:

1.芯片中缺少一种伪随机数字生成器,因为验证协议的过程能够重复进行,而不受次数限制

2.密码实际生效的并没有96位,在很大一部分车型中密码的前32位都是0

3.密码的内部状态可以被反推,给出一个符合要求位数的密码文本和状态,能够反算出之前的密码状态

4.验证协议的最后一个提供了可供反推的15位已知编码文本

Round 2

1. 现阶段,很多Megamos Crypto芯片能够被一个公开的默认PIN码解锁或锁上。这也就意味着任何人都可以拿到写入芯片的权限,这个权限对密码也是开放的。

2. 96位的密码并非一次性写入到转换器中,而是每16位写入一次。

没有验证次数限制,这一次的攻击能够在30分钟之内完成,最多只需要推算次数是3×216(196607,也就是写入三段16位字符),不到20万次,对于计算机来说,完全小事一桩。

Round 3

前两种破解都是在只窃听一次通讯过程的基础上。基于前两次的发现,可以利用大多数密码前32位都是0,以及96位密码分次写入的特性,窃听到两次验证过程后,就能够在几分钟之内破解密码。

 

最终,三位研究员建立了一个开源的数据库,并利用这个数据库更改了RFID分析工具Proxmark 3(硬件设备)的固件,让它可以窃听并对RFID芯片进行读写操作。

也是在成功攻击的验证之下,他们画出了芯片的存储分布。

Megamos Crypto芯片存储模块特性

基于Megamos Crypto的芯片有两种,在汽车行业对应的是V4070和EM4170。EM4170比较新,有16个不同的存储模块,每个模块能够存储16位字符。V4070与EM4170的区别只在于,只有10个内存模块。EM4170多出的6个模块是64位(4个)额外的用户存储空间以及32位(2个)PIN码存储区。

在这里面,芯片的ID一直处于可被读取的状态,其他模块的读取条件,也就是锁定码,是存储在第二个模块中的倒数第二个数值l0决定的。这个锁定码其实有两位字符,但是后一位字符并没有什么作用。

  1. 1. 当l0=0的时候,所有的模块都能够被写入。关键部分的密码、PIN码只能被写而不能被读取,其他的部分可读可写,而这个部分包含l0存储的地方。新的l0值决定了下一次的读写状态。

  2. 2. 当l0=1的时候,所有的写入功能都被禁止了,但是并不影响读取的权限,也就是密码、PIN码不能被读取,但是其他部分都可以读取。因为l0存储在其他部分中,所以依然可以被读取。

EM4170允许使用者用PIN码将l0的值重置到0,当然这个PIN码必须与存储在芯片中的一样才行。所以,如果芯片处于被锁状态时,先要破译32位PIN码。所以,如果汽车制造商们能够将l0的数值统一设置为1的话,那么会增加破解的难度和成本,当然,这个难度对于最有可能发生的场景,代客泊车与汽车租赁,并没有什么用,可以通过多次窃听验证过程、使用第三种攻击方式来破解。

归根结底,还是密码设置的方式不对。

车云小结

这个bug在2012年被发现,2013年6月被禁止发布。在那之后,很多车企都推出了无钥匙一键启动的车型。在那个时候,也有这类车型存在。研究员们也表示,对于无钥匙启动的车型来说,需要考虑的是,其他的验证手段是否可靠。

在论文的最后,三位研究员发出了疑问,其实市场上已经有了更安全的解决办法,但是为什么这些汽车制造商不愿意在售价5万美元以上的车型做出这个成本不及1美元的改动呢?