薛玮:大家早上好!大家觉得今天北京的天气怎么样?(不好)。希望接下来的演讲能够带给大家一些好的心情。大家了解科恩实验室都是从视频或一些报道,今天在这里给大家简单介绍一下科恩实验室。
科恩实验室初创于一个比较小的创业公司,做安全的团队,基本上之前60%的员工都是来自于微软或其他一些大的IT企业,在过去四年中我们参加九届世界最高级安全黑客比赛,得到了九个世界级冠军。
最近两次,我们还拿了两个世界破解大师的称号。在世界著名的安全大会里,我们得到了四个提名,这个提名放在电影界里就是电影界里的奥斯卡提名。所以非常荣幸能够在这里跟大家聊一聊汽车安全。
从我们研究目标来看,科恩实验室最初是以PC和mobile传统的这些IT操作系统作为一个起点,在PC和mobile上我们windows、iOS都有很多业界CVE的输出,最近我们还着力于研究IOT的系统,我们会在11月底放一个比较精彩的小视频展示一下我们对于一个新的IOT的小成果,但是现在暂时不能告诉大家IOT的设备是什么。
除了传统PC端,我们还有对于PC/mobile上APP做一些研究,比如微软IE等一些浏览器都是我们研究的范畴。
最近更加火了是云和Web安全,很多客户都选择性地把数据放到我们云上,但如果一旦云的平台有问题、有安全漏洞的话,就会很大影响到我们存放在上面的数据,所以云安全也是我们方向之一。
接下来就是今天的主角——汽车安全。今天我们讲的汽车安全并不是传统意义上汽车的功能性安全,在过去很多年中,我们车厂都致力于把汽车做得功能安全,保证驾驶员和乘客的人身安全,但是信息安全并不完全等同于功能安全。
举例,比如一个黑客把你的手机通讯录同步到车上的通讯录获取出来的话,可能并不会对驾驶员造成人身的功能安全,但是它的确是一个信息泄露的信息安全事件,这当中是有区别的。
但是也有交集,当我们入侵特斯拉以后,如果特斯拉在高速上行驶,远程给它一脚刹车命令的话,就很有可能造成功能安全的事故。所以这两种安全既有联系,又有区别。
这一辆S-Class Mercedes车有1亿行代码,有100多个ECU,5个网络。如果把它的线缆展开,有3公里的线缆,10多个操作系统。微软Office 2003是2500万行代码。
大家好奇想知道下一个代码量级别是一个小老鼠基因DNA配对的信息,这个信息是1.2亿行,仅仅比车的代码量多了200万行。如果大家是从事软件开发或信息安全的话,都应该知道有一个CMM的模型,CMM是软件能力成熟度模型。
这个模型最高的等级是CMM5,在CMM5里规定:每千行的代码里不得超过千分之零点三二,换句话说每1万行代码,可以出3.2个bug信息,按照安全界经验来说,每10个普通的bug里就会有这样1个安全的漏洞在那边可能会被不法黑客所利用。
这1亿行代码中到底可能存在多少安全漏洞?我计算了一下应该是32000个漏洞可能被黑客所利用。在2010年以前,几乎所有对于汽车信息安全的研究都是基于物理接触式的研究。
举例,过去的黑客在研究什么?他们知道我们汽车上有一个CD播放器,CD播放器里会有一个解码装置,黑客研究解码装置工业标准,研究解码装置里的代码信息,可以找到这个解码装置里的漏洞。
制作一张CD,把这张CD放进CD room里,让它运行,但是这个CD并不能放出一首歌,但是会让解码器在解码时崩溃掉在2010年代的车机,这是当时研究比较倾向的方式。
但是整个汽车在发展,越来越多的联网汽车、越来越多的智能汽车概念已经在我们生活里出现。例,未来汽车的15个攻击面。看看大家是否能理解这些攻击面所带来潜在的威胁。
比如smartphone,现在很多智能车厂把无钥匙进入做到手机上,做成了一个APP,可能这个APP有一些蓝牙通讯和我们汽车相关联。手机会不会有任何可能性被黑客所利用?如果手机被黑客所利用,上面的APP还是否安全?
最近有一些黑客在研究荣威iX5,因为没有公布很多细节,我们从表象上来看,可能就是从入侵智能手机上APP开始,劫持里面一些信息,配到这个车上,让车打开车门或打开车窗的一些事情,这是值得大家思考的问题,就是手机和车的关系。
TPMS,很多车都配备了胎压检测系统,目的是为了功能安全,但造成了矛盾的东西,就是在引入这样一个东西对信息安全可能就是一种降低。比如黑客可以从远程控制TPMS,造成胎压显示值过低。
由于某一些高级车会有一些逻辑在这个车上,比如行驶到80公里时,监测到你的胎压过低,就会帮助你紧急刹车或者减缓速度,靠边停靠,这也会造成在高速上人员的伤亡。
DSRC系统。这是一个车对车、车对公共交通设施、车对行人的技术,可能这个车是每秒钟发10次的广播包在它的周围,它周围其他的设备都会得到这个包,读取里面的内容,包括车的速度、车的角度、车重、车高等等一系列的东西。
假设现在得到这些信息并不是一个合法的车辆或道路设施,而是一个黑客的话,会发生什么?也许黑客的回复可能是你的对面迎头过来一辆车,它可以伪造这样的信息,让你的车进行紧急刹车,从而间接或直接控制这辆车。所以越来越多的互联能够带来越来越多的攻击面。
像这样传统的USB系统,大家不要仅仅认为车上USB系统,插上手机就可以充电,简单来说我们的USB系统插上以后可以播放手机上的音乐,手机上的通讯录也可以被同步到车的显示屏上。
更重要的是很多车厂会使用USB系统对车做一个固件的升级或刷写,就很可能造成车的攻击面的入口。如图,攻破特斯拉当天的照片。给大家介绍一下细节,那是一个雨天,我们有两辆特斯拉,一辆是白色老款特斯拉,一辆是全新款红色特斯拉,这辆特斯拉是向我们其他部门同事借来的。
当时我们想把这样的攻击试着去证明它能够用于其他任何特斯拉的车型上,但是我们只有80%的把握能够验证我们的漏洞也会影响到其他的特斯拉。另外20%是什么?
我们也非常担心当刷入我们固件以后,把红色的特斯拉刷成砖。在非常忐忑过程中,我们还是做了这样的决定,准备借这辆特斯拉。
借我们这辆特斯拉的小伙子也非常支持我们安全研究,我认为主要出于两个原因,第一他非常喜欢安全这一块,第二他的家底非常丰厚,可以供得起我们做这样的安全测试。
如图,特斯拉CTO在我们整个漏洞报告一个月以后对外声明,我们非常感谢,这是非常非常积极的声明。他说:科恩的小伙子们做了一件非常好的事情,帮助特斯拉找到了一些他们必须要面对的问题。也是非常肯定的一个答复。
下面放一个视频给大家重温一下我们的精彩画面,这个视频是拍自于我们在车停下来时的操作,当时Simon和研究员沟通了一下,研究员说你只要进了你的车,打开特斯拉浏览器去查询一下最近的充电站在哪里。
过了2分钟,当Simon再回到这个车的时候,特斯拉已经被我们小伙子们控制了。是用了一个后台进程强制占领了特斯拉的屏幕,导致你不能够点任何东西。 在行车过程中,关闭后视镜也是相当危险的操作。
我们还可以通过4G方式,让我们在实验室里的同事远程操控特斯拉,让它进行刹车。这个刹车并不等同于普通的刹车,停下来的时候并没有亮刹车灯。接下来稍微看一下我们的研究成果。
我们比较重点关注特斯拉前面方向盘下面的IC屏,15寸中控屏,还有网络交换机组件。在中控屏上,最上面是Webkit浏览器,还有一些开关组件,下面有OTA Update Service,还有其他一些service就是侦听。
这一套是跑了一个Linux的系统,下面还有一些接口,比如以太网卡,3/4G、蓝牙。整个WiFi,特斯拉把它独立出来,在一个分开的非常简单的Linux操作系统上把这个WiFi安装上去了,然后和中控屏网段也是独立的,特斯拉有很大意识把WiFi作为攻击入口的话,要单独独立出来。
如果你的控制走过来,CAN信息分成5路CAN,其中2路,有一路叫做CH CAN Bus,比较高速,这一路挂了我们叉车系统、驻车系统、刹车稳定系统;下1路CAN 是Body CAN Bus,低优先级,车门的开启、反光镜的折叠等等。
当时视频为什么要分阶段去驻车时拍一段,又在行车时拍一段?特斯拉gateway有一个特性,行驶时它就会像一个二极管一样,自动帮你关掉,打不通了,信息传不了。
这时候我们就远程刷起这样一个gateway,把这个gateway ITOS操作系统刷写掉了。我们先是通过webkit几个漏洞,可以得到webkit完全操作的控制权限,再利用这样一个权限走到了Linux系统上,再经过几个漏洞,可以把Linux整个权限给root掉。
特斯拉在linux上面也加了很多防范机制,有点类似于杀毒软件或一些保护安全的软件。先root它,再把它删掉,才能把这个固件包发到gateway上。并不是简单能够直接刷写,gateway还有校验,比如CRC校验,这样把本来操作系统逆向了一遍,再把一致校验码固件填充到gateway里面去进行刷写。从而整个攻击连就打通了。
特斯拉的特性,当启动一台特斯拉的时候,windows电脑,插一根网络上去,网络图表从大X变成联网标识符,windows会去微软某个网站查询DNS记录,下载这个记录上.TXT文件,如果能够下载到,说明你的网络是连通的,这样就会把符号换掉。
特斯拉其实也有这样的机制在里面,所以它的后台就会不断地侦听这样一个请求,可能是为了OTA Update机制来设计的,一旦点开的话,就会有这样的请求发到特斯拉某一个官网去下载一个东西。
这个时候我们就可以用DNS篡改或其他手段变成他下载的东西不是他需要的东西,而是我们的固件包,所以整个攻击都是完全自动化,完全不要用户做很多点选等等,只要你触发了浏览器、触发了流量,整个攻击链就形成了。
从整个应急响应来看,我们非常称赞特斯拉对于应急响应里面的投入,我们觉得特斯拉是一个有互联网思维造车的企业,特别是把互联网安全这一块带进了它的车里。
应急响应流程:特斯拉在官网上会有一个安全事件通报部分,点击它,可以给特斯拉发邮件。当你发送这封邮件时,会给你提供一个公钥,也就是说你发送的内容已经帮你加密过了,要确保在传输过程中没有中间人的劫持或攻击。
它也有一个奖金计划激励这些研究人员更多发现特斯拉的安全问题,每一个bug是从1000美金到10000美金不等,我们这样一系列漏洞攻击,听特斯拉安全团队负责人跟我们说,是史上最丰厚的一笔奖金。
他们的人只需要1.5个小时,就回复我们他们已经有人看这个问题。仅仅过了10天就得到了特斯拉的回复,他们已经把更新ready了,可以推送给他们的客户了。车企的同事可以想想,如果出了这样的安全问题,我们需要几天把我们安全更新准备好。
3天90%,也就是说利用了它的OTA升级机制,能够实现这样有灰度的推送Update,第一天推送5%的更新,然后看一下有没有客户抱怨问题,第二天20%,第三天推了90%。特斯拉这样的车在待机模式下也会侦听OTA上面发过来的数据。
如果一旦OTA有这样的信息过来,这个车就会在后台帮你自动做升级,对于车主来说根本没有任何升级破坏的体验,而是第二天去开这辆车时已经全部帮你升级好了。
关注好安全建设的四要素:
专业安全。要做好信息安全是一个非常系统化的工程,我们希望有专业的人来做专业的事情。40个安全团队的人来一起进行特斯拉安全研究,大部分来自苹果、Google和微软这样的IT公司,他们很快能够判断出漏洞的危险程度,很快给出我们这样的应急响应。
安全工程。2000年的时候,PC处于和互联网连接时代,有两个著名的病毒,一个是爱虫病毒(音),一个是Blus(音)病毒,影响了全球几千万微软的PC机和服务器,在次年一个会议上,比尔盖茨提出微软要做可信任计算的理念。
于是就有了SDL这样的流程出来,给到了安全软件开发团队用。现在也是汽车在这样一个交叉路口的时代,所以汽车的互联越来越多,汽车是否有这样一套安全工程能够给我们来用呢?
我个人认为汽车软件开发上很大程度上我们可以借鉴之前互联网的成果,比如SDL、CMM等这样的标准。SAE(美国汽车安全协会)也已经推出了汽车信息安全指南,这是一个框架性的协议,也能够帮助大家完善自己的信息安全。
安全保护。流程也好,人也好,最后还是要落实到安全的产品和汽车结构的改变,比如越来越多的车厂会把我们的CAN做一个广域的隔离,这个信息只能在这个域里进行传送,但不能通过我的网端传到比较高等级的CAN当中。也有很多车厂引入一些系统保护这部分CAN资源,即使控制外面娱乐平台,也很难打通到里面汽车核心动力组件,这又是一些想法。
安全策略。我们要有很快速的响应,很快速的修复给到用户,基于这一切都是要建立在我们有比较强大的安全团队和安全的知识积累。
汽车安全4C:沟通、跨界、合作、融合。大家互相看一下对方的行业在做一些什么事情,对方的痛点在哪里,我们一起携手合作。我们不想让信息安全成为未来网联汽车和智能汽车的绊脚石。谢谢大家!