<div class="iteye-blog-content-contain" style="font-size: 14px"><p class="blog-summary" style="background: #f9f9f9; margin: 30px 0px 10px; padding: 16px 30px; color: #333333; text-transform: none; line-height: 32px; text-indent: 0px; letter-spacing: normal; overflow: hidden; font-family: PingFangSC, 'helvetica neue', 'hiragino sans gb', arial, 'microsoft yahei ui', 'microsoft yahei', simsun, sans-serif; font-size: 16px; font-style: normal; font-weight: normal; word-spacing: 0px; white-space: normal; table-layout: fixed; word-break: break-all; box-sizing: border-box; orphans: 2; widows: 2; font-variant-ligatures: normal; font-variant-caps: normal; -webkit-text-stroke-width: 0px;"><em style="font-style: normal; font-weight: bold; box-sizing: border-box;">摘要:</em><span class="Apple-converted-space"> </span>特斯拉汽车一直受到黑客的关注,很多安全研究人员都尝试过挖掘特斯拉汽车的漏洞,主要原因是特斯拉是纯电动汽车并且有网络连接,可以通过网络对汽车进行控制,而且特斯拉本身也非常依赖电子控制系统。本文就来分析特斯拉已经出现过的问题。</p>
<div class="content-detail" style="margin: 0px; padding: 40px 0px; color: #333333; text-transform: none; line-height: 32px; text-indent: 0px; letter-spacing: normal; overflow: hidden; font-family: PingFangSC, 'helvetica neue', 'hiragino sans gb', arial, 'microsoft yahei ui', 'microsoft yahei', simsun, sans-serif; font-size: 16px; font-style: normal; font-weight: normal; word-spacing: 0px; white-space: normal; position: relative; word-wrap: break-word; box-sizing: border-box; orphans: 2; widows: 2; background-color: #ffffff; font-variant-ligatures: normal; font-variant-caps: normal; -webkit-text-stroke-width: 0px;">
<blockquote style="margin: 0px 0px 20px; padding: 10px 20px; font-size: 16px; border-left-color: #eeeeee; border-left-width: 5px; border-left-style: solid; box-sizing: border-box;">
<p style="margin: 0px; padding: 0px; box-sizing: border-box;">特斯拉汽车一直受到黑客的关注,很多安全研究人员都尝试过挖掘特斯拉汽车的漏洞,主要原因是特斯拉是纯电动汽车并且有网络连接,可以通过网络对汽车进行控制,而且特斯拉本身也非常依赖电子控制系统。本文就来分析特斯拉已经出现过的问题。此漏洞已经修复,本文只是为了让读者了解漏洞原理以便应用到工作中,使汽车变得更安全。</p>
</blockquote>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">一直以来特斯拉被认为比其他具有网络连接功能的汽车更安全,可以作为联网汽车的楷模,尽管特斯拉时不时被爆出一些小BUG。例如,2015年8月的黑客大会DEFCON上,安全研究人员Marc Rogers和Kevin Mahaffey分享了他们对特斯拉Model S的研究成果,他们在研究过程中找到了6个问题,通过这些小BUG可以以物理入侵(不是远程入侵)的方式控制汽车。接下来,我们就介绍他们这项研究的过程。</p>
<h2 id="1" style="margin: 20px 0px 10px; padding: 0px; color: inherit; line-height: 1.1; font-family: inherit; font-size: 30px; font-weight: 500; box-sizing: border-box;">1 系统架构</h2>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">图1所示为特斯拉Model S的信息娱乐系统架构。<br style="box-sizing: border-box;" /><a style="color: #00c1de; text-decoration: none; box-sizing: border-box; transition: color 0.2s;" href="/admin/blogs/javascript:;" target="_blank"><img style="border: 0px currentColor; vertical-align: middle; cursor: pointer; max-width: 100%; box-sizing: border-box;" title="" src="http://download.broadview.com.cn/Original/17111978762a599d9753" alt="" /></a><br style="box-sizing: border-box;" />图1 特斯拉Model S信息娱乐系统架构(图片来源lookout.com)</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">Model S的娱乐及信息系统和控制器CAN网络是隔离的,娱乐信息系统的各个模块之间通过一个局域网进行通信,而汽车的各个控制器(如动力刹车等)通过CAN通信,娱乐系统与CAN之间通过网关连接。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">首先来看看Model S信息娱乐系统的几个模块,分别是仪表板、中央信息显示和网关,其中仪表板和中央信息显示两个模块都运行版本比较老的Ubuntu操作系统,网关运行开源的实时操作系统FreeRTOS。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">(1)仪表系统又叫仪表盘IC(Instrument Cluster),是位于方向盘正前方的一个8英寸的屏幕,运行Ubuntu Linux操作系统,处理器是NVIDIA Tegra3,如图2所示。<br style="box-sizing: border-box;" /><a style="color: #00c1de; text-decoration: none; box-sizing: border-box; transition: color 0.2s;" href="/admin/blogs/javascript:;" target="_blank"><img style="border: 0px currentColor; vertical-align: middle; cursor: pointer; max-width: 100%; box-sizing: border-box;" title="" src="http://download.broadview.com.cn/Original/17115e56c0d7da302bc5" alt="" /></a><br style="box-sizing: border-box;" />图2 被拆下来的仪表</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">(2)中央信息显示模块CID(Central Information Display),就是汽车中央的17英寸大屏,运行Ubuntu Linux操作系统,处理器是NVIDIA Tegra4,如图3和图4所示。<br style="box-sizing: border-box;" /><a style="color: #00c1de; text-decoration: none; box-sizing: border-box; transition: color 0.2s;" href="/admin/blogs/javascript:;" target="_blank"><img style="border: 0px currentColor; vertical-align: middle; cursor: pointer; max-width: 100%; box-sizing: border-box;" title="" src="http://download.broadview.com.cn/Original/17116bb77b772d075c4a" alt="" /></a><br style="box-sizing: border-box;" />图3 CID 内部<br style="box-sizing: border-box;" /><a style="color: #00c1de; text-decoration: none; box-sizing: border-box; transition: color 0.2s;" href="/admin/blogs/javascript:;" target="_blank"><img style="border: 0px currentColor; vertical-align: middle; cursor: pointer; max-width: 100%; box-sizing: border-box;" title="" src="http://download.broadview.com.cn/Original/1711962a97207b9342b8" alt="" /></a><br style="box-sizing: border-box;" />图4 CID背面</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">(3)网关(Gateway):连接信息娱乐系统与控制器网络,与CID集成在一起,运行FreeRTOS操作系统。图5所示为Model S整个网络的架构。<br style="box-sizing: border-box;" /><a style="color: #00c1de; text-decoration: none; box-sizing: border-box; transition: color 0.2s;" href="/admin/blogs/javascript:;" target="_blank"><img style="border: 0px currentColor; vertical-align: middle; cursor: pointer; max-width: 100%; box-sizing: border-box;" title="" src="http://download.broadview.com.cn/Original/1711151a46efb264551a" alt="" /></a><br style="box-sizing: border-box;" />图5 Model S的网络架构</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">这种将汽车的控制器网络与娱乐信息系统进行隔离的网络架构是非常优秀的设计,因为娱乐信息系统有丰富的网络连接,当黑客入侵娱乐系统后还需要通过网关才能控制汽车的关键部件[例如,行驶安全相关的部件(如电动转向、电子刹车等)]。</p>
<h2 id="2" style="margin: 20px 0px 10px; padding: 0px; color: inherit; line-height: 1.1; font-family: inherit; font-size: 30px; font-weight: 500; box-sizing: border-box;">2 信息收集</h2>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">首先对系统进行分析,找出可能的攻击向量,然后再研究特定的攻击向量,首先是物理攻击向量。通过分析找到了如下可能的物理攻击向量。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">(1)CID有两张可插拔的存储卡。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">(2)CID有一个USB接口。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">(3)一个4针的以太网接口。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">(4)各种测试点和调试诊断接口。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">然后对找到的物理攻击向量与其他攻击向量进行测试,测试结果如下。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">浏览器:不仅CID运行的操作系统是老版本的Ubuntu系统,其运行的浏览器也是比较老的版本,浏览器基于WebKit 534.34,这个版本的浏览器引擎有几个比较知名的漏洞。通过这些漏洞可以让浏览器崩溃但是没有实现代码执行。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">蓝牙:没有找到漏洞。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">USB:可以通过CID的USB接口让CID重启进入NVIDA Tegra的Recovery模式,但是bootloader是通过密码保护的,所以没有办法通过这种方式提取固件。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">存储卡:其中一张存储卡上有一个名叫carkeys.tar的文件,其中包含了这辆Model S的OpenVPN认证信息,也就是一个X509标准证书、一个RSA私钥和一个OpenVPN静态密钥,这些相当于车钥匙,所以未来汽车的钥匙可能都是基于密码算法的,如图6所示。<br style="box-sizing: border-box;" /><a style="color: #00c1de; text-decoration: none; box-sizing: border-box; transition: color 0.2s;" href="/admin/blogs/javascript:;" target="_blank"><img style="border: 0px currentColor; vertical-align: middle; cursor: pointer; max-width: 100%; box-sizing: border-box;" title="" src="http://download.broadview.com.cn/Original/17114b925975d19d8786" alt="" /></a><br style="box-sizing: border-box;" />图6 carkeys文件解压结果</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">另外一张卡存储了地图数据和一个以root权限运行的脚本。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">Wi-Fi:将Model S连入Wi-Fi后并没有发现开放的端口,但是当Model S连上Wi-Fi后首先会通过向一些服务器发起http请求确定网络连通性,在确定网络连通性后尝试通过OpenVPN连接特斯拉服务器(地址是vpn.vn.teslamotors.com)。由于OpenVPN配置正确,不能进行中间人攻击。图7所示为特斯拉VPN的配置。<br style="box-sizing: border-box;" /><a style="color: #00c1de; text-decoration: none; box-sizing: border-box; transition: color 0.2s;" href="/admin/blogs/javascript:;" target="_blank"><img style="border: 0px currentColor; vertical-align: middle; cursor: pointer; max-width: 100%; box-sizing: border-box;" title="" src="http://download.broadview.com.cn/Original/1711e71570d5532edaf6" alt="" /></a><br style="box-sizing: border-box;" />图7 特斯拉VPN的配置</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">特斯拉的OpenVPN使用UDP协议,并启用了tls-auth,这就是CarKey.tar中包含的那个静态密钥的用处,即用于对数据包加入HMAC(Keyed-Hashing for Message Authentication)用于消息认证、用于防止DoS攻击、端口扫描、未授权的SSL/TLS握手和初始化等。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">因为特斯拉服务器与汽车的证书链都是由同一个根证书机构签发的,所以如果配置得不好可能出现漏洞,图8所示为特斯拉的证书链。<br style="box-sizing: border-box;" /><a style="color: #00c1de; text-decoration: none; box-sizing: border-box; transition: color 0.2s;" href="/admin/blogs/javascript:;" target="_blank"><img style="border: 0px currentColor; vertical-align: middle; cursor: pointer; max-width: 100%; box-sizing: border-box;" title="" src="http://download.broadview.com.cn/Original/1711c53f7cf51ac12e52" alt="" /></a><br style="box-sizing: border-box;" />图8 特斯拉的证书链</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">特斯拉有一个根证书认证机构(root CA),根证书机构下面链接了一个Policy CA(策略证书认证机构,这个机构自己的证书由root CA签发),然后Policy CA还签发了一个Issuing CA(签发CA),最后这个CA被用于签发服务器的证书和汽车的证书(汽车的证书是用于服务器验证汽车的),由于服务器和客户端都由同一个CA签发,如果对证书的认证只检查证书的签发CA就会出现安全问题。x509v3EKU(Extended Key Usage是个扩展标准,指定了公钥用途)中规定了一个证书中的公钥的用途,也就是说,一个证书只能被用于特定的目的,比如VPN服务器的证书就只能用于服务器认证,而CarKey的证书只能被用于客户端认证。OpenVPN中可以设定是否要对EKU中指定的密钥用途进行验证,所以我们的问题是万一特斯拉汽车配置OpenVPN时没有开启这个对公钥(比如CarKey.tar里包含的和VPN服务器传来的证书里包含的公钥)的用途验证呢?所以如果搞个假的服务器FauxpenVPN(记住我们说过要中间攻击),当这辆车和我们的冒牌FauxpenVPN通信时,它向FauxpenVPN发送hello,这时冒牌服务器就把汽车CarKey.tar里那个证书返回给车,如图9所示。<br style="box-sizing: border-box;" /><a style="color: #00c1de; text-decoration: none; box-sizing: border-box; transition: color 0.2s;" href="/admin/blogs/javascript:;" target="_blank"><img style="border: 0px currentColor; vertical-align: middle; cursor: pointer; max-width: 100%; box-sizing: border-box;" title="" src="http://download.broadview.com.cn/Original/17116cbdb398976721fd" alt="" /></a><br style="box-sizing: border-box;" />图9 假想的利用客户端证书伪造成服务端证书攻击场景</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">CarKey里的证书和真的VPN服务器的证书的认证链相同,如果特斯拉在配置OpenVPN服务时没有检查前面说的EKU证书用途(因为我们发给服务器的是从汽车中名为CarKey.tar的文件中提取出来的证书,而这个证书是用于客户端认证的证书),那么汽车会信任FauxpenVPN,就可以进行中间人攻击了,如图10所示。<br style="box-sizing: border-box;" /><a style="color: #00c1de; text-decoration: none; box-sizing: border-box; transition: color 0.2s;" href="/admin/blogs/javascript:;" target="_blank"><img style="border: 0px currentColor; vertical-align: middle; cursor: pointer; max-width: 100%; box-sizing: border-box;" title="" src="http://download.broadview.com.cn/Original/1711caf5781a378a47dc" alt="" /></a><br style="box-sizing: border-box;" />图10 利用客户端证书伪造服务器示意图</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">由于Model S验证了服务器EKU,所以并不能用CarKey.tar里的证书(用于客户端认证的)来伪造服务器(因为需要用于服务端认证的证书)与汽车交互。如果能找到一个由Issuing CA签发的证书而且这个证书的EKU指定用途为服务端认证,就可以伪造一个VPN服务器进行中间人攻击。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">以太网接口:如图11所示,以太网接口先是由一个特斯拉车主发现并发布在特斯拉车主论坛,在这之前大家都觉得这个接口比较奇怪,因为它和常规的以太网接口不同。<br style="box-sizing: border-box;" /><a style="color: #00c1de; text-decoration: none; box-sizing: border-box; transition: color 0.2s;" href="/admin/blogs/javascript:;" target="_blank"><img style="border: 0px currentColor; vertical-align: middle; cursor: pointer; max-width: 100%; box-sizing: border-box;" title="" src="http://download.broadview.com.cn/Original/1711de4cf92b8e0e780d" alt="" /></a><br style="box-sizing: border-box;" />图11 Model S的以太网接口及导线</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">通过这个接口可以与汽车的娱乐信息系统网络通信,接入信息娱乐系统网络后使用Nmap等工具对内网扫描就可以发现3个设备,一个是CID、一个是IC、另一个是网关。这三个设备发送了大量(约1000个包每秒)的UDP广播包(目的地址192.168.90.255),根据数据类型的不同使用不同的端口,这就与CAN总线的机制非常类似,网络上每个节点将数据广播到网络上,需要数据的节点就接收需要的数据,猜测这里的端口号类似于CAN的消息ID。通过扫描还发现了一些开放的端口及对应的服务,如表1所示。<br style="box-sizing: border-box;" /><a style="color: #00c1de; text-decoration: none; box-sizing: border-box; transition: color 0.2s;" href="/admin/blogs/javascript:;" target="_blank"><img style="border: 0px currentColor; vertical-align: middle; cursor: pointer; max-width: 100%; box-sizing: border-box;" title="" src="http://download.broadview.com.cn/Original/171147b5b74ef5a29c74" alt="" /></a><br style="box-sizing: border-box;" />表1 娱乐信息系统的扫描结果</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">扫描到的服务中有两个是已经被爆出有漏洞的老版本,分别是DNS Proxy: runs dnsmasq 2.58和HTTP Service: mini_httpd 1.19。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">另外,如扫描结果显示的那样,CID和IC都运行了X11服务器,并且没有任何认证,因此可以随意更改显示内容,如图12所示。<br style="box-sizing: border-box;" /><a style="color: #00c1de; text-decoration: none; box-sizing: border-box; transition: color 0.2s;" href="/admin/blogs/javascript:;" target="_blank"><img style="border: 0px currentColor; vertical-align: middle; cursor: pointer; max-width: 100%; box-sizing: border-box;" title="" src="http://download.broadview.com.cn/Original/17114e0b56f5582596bd" alt="" /></a><br style="box-sizing: border-box;" />图12 通过没有认证的X11服务更改仪表板和中控屏的显示(来源lookout.com)</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">最后,他们还找到了分别运行于IC和CID上的两个程序ic-updater和cid-updater,从字面意思理解这两个程序分别为IC和CID的升级程序,功能是获取诊断信息、上传文件或者固件,这两个程序的大部分命令都有认证保护,但是其中也有些没有,例如‘status’,这两个程序在输入‘status’状态命令时会打印出许多信息娱乐系统的关键信息,属于信息泄露漏洞,图13所示为ic-updater status显示出的信息。<br style="box-sizing: border-box;" /><a style="color: #00c1de; text-decoration: none; box-sizing: border-box; transition: color 0.2s;" href="/admin/blogs/javascript:;" target="_blank"><img style="border: 0px currentColor; vertical-align: middle; cursor: pointer; max-width: 100%; box-sizing: border-box;" title="" src="http://download.broadview.com.cn/Original/171140a18becae6b7030" alt="" /></a><br style="box-sizing: border-box;" /><a style="color: #00c1de; text-decoration: none; box-sizing: border-box; transition: color 0.2s;" href="/admin/blogs/javascript:;" target="_blank"><img style="border: 0px currentColor; vertical-align: middle; cursor: pointer; max-width: 100%; box-sizing: border-box;" title="" src="http://download.broadview.com.cn/Original/1711c8aa5d331e97d073" alt="" /></a><br style="box-sizing: border-box;" />图13 仪表板IC升级工具打印出的固件VRL信息</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">事实上,后面整个研究的突破点就是这个漏洞导致的,通过这个漏洞打印出来的信息里给出了下载固件的URL。</p>
<h2 id="3" style="margin: 20px 0px 10px; padding: 0px; color: inherit; line-height: 1.1; font-family: inherit; font-size: 30px; font-weight: 500; box-sizing: border-box;">4 测试中遇到的挫折</h2>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">正当Marc Rogers进行研究时,其他研究人员找到了那个以太网接口,特斯拉通过远程升级将这个端口加入了认证机制,原本接上网线就可以与内网进行通信,现在却不行了,但是由于知道IC和CID都在内网上,所以可以通过直接将网线接到CID或者IC的以太网接口接入内网,如图14所示。<br style="box-sizing: border-box;" /><a style="color: #00c1de; text-decoration: none; box-sizing: border-box; transition: color 0.2s;" href="/admin/blogs/javascript:;" target="_blank"><img style="border: 0px currentColor; vertical-align: middle; cursor: pointer; max-width: 100%; box-sizing: border-box;" title="" src="http://download.broadview.com.cn/Original/1711b203a75a1528c92c" alt="" /></a><br style="box-sizing: border-box;" />图14 直接将网线接入CID</p>
<h2 id="4" style="margin: 20px 0px 10px; padding: 0px; color: inherit; line-height: 1.1; font-family: inherit; font-size: 30px; font-weight: 500; box-sizing: border-box;">5 测试中的突破</h2>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">通过cid-updater服务的status状态命令打印出来的信息里包含了一个比较特别的URL:firmware_download_url=hxxp://firmware-bundles.vn.teslamotors.com:4567/…,其字面意思是下载固件的URL。由于之前尝试对OpenVPN进行中间人攻击时已经弄清楚了特斯拉的OpenVPN配置,并且已经从存储卡里的CarKeys.tar文件中找到了特斯拉客户端的证书及密钥,所以可以与特斯拉的服务建立VPN连接来下载固件。下载下来的固件约600多兆,是一个SquashFS文件系统,解压后尝试寻找私钥和Shadow文件(Linux系统里存储用户名和密码哈希等相关信息的文件),结果找到了IC的Shadow文件。下一步就是尝试破解这个Shadow文件获得密码(如彩虹表、字典、暴力破解等方法),特斯拉设置的这个密码是弱密码,很容易就被破解。实际上,通过Shadow文件破解出来的好几个账号都是弱密码。有了秘密码和账号后就可以通过SSH接入IC,而且被破密码的账号是sudoer的(虽然不是root,但是可以通过sudo以root权限执行命令),就这样取得了IC的root权限,如图15所示。<br style="box-sizing: border-box;" /><a style="color: #00c1de; text-decoration: none; box-sizing: border-box; transition: color 0.2s;" href="/admin/blogs/javascript:;" target="_blank"><img style="border: 0px currentColor; vertical-align: middle; cursor: pointer; max-width: 100%; box-sizing: border-box;" title="" src="http://download.broadview.com.cn/Original/171191625bb17fdf4690" alt="" /></a><br style="box-sizing: border-box;" />图15 root权限接入IC</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">IC的root权限已经搞定了,下一步要搞定CID的root权限,由于没有CID的shadow文件,所以只有继续分析固件,通过分析固件发现CID每隔24小时就会从一个名为mothership的服务器获取一个安全令牌(Security Token),然后将一个名为tesla1的账号的密码设为这个安全令牌。CID还会将安全令牌发给IC,IC则将安全令牌明文存储。通过在IC的文件系统中找到这个安全令牌可以登录CID上的tesla1账号,而且这个tesla1账号也是一个sudoer,就这样,IC和CID的root权限都被搞定了。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">另外,前面提到的以太网结果被加入认证机制后其实认证也用到了这个token,网关(这里是指以太网接口与信息娱乐网络之间负责认证的“网关”)每隔30秒会对通过这个以太网接口对接入信息娱乐网络的设备进行认证,认证方式是由需要接入网络的设备根据token、VIN,以及一个salt计算一个哈希值以广播的方式发送出去,图16所示为自动认证代码。<br style="box-sizing: border-box;" /><a style="color: #00c1de; text-decoration: none; box-sizing: border-box; transition: color 0.2s;" href="/admin/blogs/javascript:;" target="_blank"><img style="border: 0px currentColor; vertical-align: middle; cursor: pointer; max-width: 100%; box-sizing: border-box;" title="" src="http://download.broadview.com.cn/Original/171108a7a426ae3759fb" alt="" /></a><br style="box-sizing: border-box;" />图16 以太网接口自动认证代码</p>
<h2 id="5" style="margin: 20px 0px 10px; padding: 0px; color: inherit; line-height: 1.1; font-family: inherit; font-size: 30px; font-weight: 500; box-sizing: border-box;">6 控制汽车</h2>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">获得了IC和CID的root权限后,下一步再来看看如何控制汽车,Model S的内网数据传输率较高,每秒约500~1000个UDP报文包,搞清楚哪些数据包包含的是控制数据比较困难,所以通过分析程序判断哪些数据是通过手机应用或者CID上面的按钮进行操作才出现的数据可以快速弄清楚哪些数据控制哪些功能。在弄清楚控制某些功能的数据后还要弄清楚是哪个服务发送了这些数据,由于是通过CID的触摸屏来控制的,所以在CID上使用strace系统调用监控命令来分析是哪个服务发送了这些数据,结果发现是一个名为QtCarVehicle的服务发送了那些控制数据包。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">QtCarVehicle包含一个叫Gateway Message Sender的类,用于通过网关发送消息的类,然后就是执行这个类的各种功能的方法。到这一步就可以通过调用这个服务来执行预设功能了。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">值得注意的是,经过逆向分析还发现Model S并不会直接通过信息娱乐系统发送CAN原始数据包控制汽车,而是采用了API调用的方式,即CID通过功能调用接口请求网关执行某个功能的操作,这些功能操作都是预先定义好的允许执行的操作。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">娱乐系统通过功能接口请求网关执行特定操作的设计非常重要(这里指CID通过API请求网关),这种设计可以保障在信息娱乐系统被黑客攻陷后,不能直接往CAN总线发送原始CAN数据,只能执行预先设置好的“允许”的功能。当然,这是在网关没有被攻破(例如,Jeep案例中,攻击者将被修改后的固件刷入V850后)的前提下。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">经过测试发现了一系列的预设功能调用,其中影响最大的可能就是关闭汽车(VAPIPoweroff)这个功能,当汽车以低于5迈的速度行驶时,调用这个功能会使汽车突然刹车并停下来,而在高于5迈时调用这个功能则会使汽车不能加速,但是刹车和转向都受驾驶员正常控制。其他可以通过CID的触摸屏控制的功能也都可以被控制。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">为了实现远程控制,在CID与一个控制服务器之间建立一个SSH隧道连接,然后就可以利用之前找到的token通过SSH接入CID,如图17所示。<br style="box-sizing: border-box;" /><a style="color: #00c1de; text-decoration: none; box-sizing: border-box; transition: color 0.2s;" href="/admin/blogs/javascript:;" target="_blank"><img style="border: 0px currentColor; vertical-align: middle; cursor: pointer; max-width: 100%; box-sizing: border-box;" title="" src="http://download.broadview.com.cn/Original/1711fbcdda9f50425c9c" alt="" /></a><br style="box-sizing: border-box;" />图17 接入CID</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">接入CID后调用QtCarVehicle服务提供的功能可以控制汽车的一些功能,例如关闭电源,如图18所示。<br style="box-sizing: border-box;" /><a style="color: #00c1de; text-decoration: none; box-sizing: border-box; transition: color 0.2s;" href="/admin/blogs/javascript:;" target="_blank"><img style="border: 0px currentColor; vertical-align: middle; cursor: pointer; max-width: 100%; box-sizing: border-box;" title="" src="http://download.broadview.com.cn/Original/1711847eb46d2d824db6" alt="" /></a><br style="box-sizing: border-box;" />图18 执行关闭电源脚本</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">还可以控制如下功能。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">(1)关闭汽车。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">(2)启动汽车。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">(3)开关门。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">(4)开关天窗。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">(5)开关前后行李箱。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">(6)控制大灯。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">(7)控制减震器。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">(8)控制空调。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">(9)鸣笛。</p>
<h2 id="6" style="margin: 20px 0px 10px; padding: 0px; color: inherit; line-height: 1.1; font-family: inherit; font-size: 30px; font-weight: 500; box-sizing: border-box;">7 本文小结</h2>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">图19所示为整个研究过程的总结图。<br style="box-sizing: border-box;" /><a style="color: #00c1de; text-decoration: none; box-sizing: border-box; transition: color 0.2s;" href="/admin/blogs/javascript:;" target="_blank"><img style="border: 0px currentColor; vertical-align: middle; cursor: pointer; max-width: 100%; box-sizing: border-box;" title="" src="http://download.broadview.com.cn/Original/171161ece026eca8a7c7" alt="" /></a><br style="box-sizing: border-box;" />图19 整个研究过程的流程图</p>
<h3 id="7" style="margin: 20px 0px 10px; padding: 0px; color: inherit; line-height: 1.1; font-family: inherit; font-size: 24px; font-weight: 500; box-sizing: border-box;">7.1 特斯拉做得比较好的地方</h3>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">(1)远程升级:当出现安全漏洞时,特斯拉只需要远程推送补丁即可,不需要召回或者向Jeep Uconnect漏洞那样需要寄送U盘。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">(2)VPN配置正确:特斯拉使用的VPN配置正确,不会有常见的(如中间人攻击等因为配置缺陷而造成的)漏洞。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">(3)账号密钥更新及时:特斯拉的密钥每隔24小时就更新一次。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">(4)控制器网络与信息娱乐系统的隔离:Model S在汽车的控制器网络(CAN)与信息娱乐系统之间采用网关进行隔离,并且网关只允许预设的功能调用。</p>
<h3 id="8" style="margin: 20px 0px 10px; padding: 0px; color: inherit; line-height: 1.1; font-family: inherit; font-size: 24px; font-weight: 500; box-sizing: border-box;">7.2 需要改进的地方</h3>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">(1)Wi-Fi静态密码:特斯拉服务中心名为Tesla Service的Wi-Fi(特斯拉会自动连接Wi-Fi)采用了汽车之间共享的静态密码,最好能改为WPA企业认证,这样就不用在汽车之间采用相同的静态密钥。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">(2)边界安全模型:Model S具有非常强的边界安全,但是内网的安全性不高,设计者应该假设攻击者可以获得信息娱乐系统网络,虽然进入网络并不能造成太大影响。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">(3)明文存储认证信息:VPN密钥和安全令牌都以明文的方式存储在文件系统中,如果将这些关键信息存储在硬件安全模块(如TPM,Trusted Platform Module)中会更安全。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">(4)信息娱乐系统网络上的节点间通信没有加密,并且有些还没有认证:网络上的节点间通信没有加密,所以攻击者可以分析网络上的所有流量。另外,只有少部分服务采用了认证机制。如果要实现节点级别的安全,那么网络上所有的节点绝对不能对网络有任何信任,任何节点间的通信都应该经过加密和认证。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">以上内容节选自<a style="color: #00c1de; text-decoration: none; box-sizing: border-box; transition: color 0.2s;" href="http://www.broadview.com.cn/book/2594">《智能汽车安全攻防大揭秘》</a>,点此链接可在博文视点官网查看此书。<br style="box-sizing: border-box;" /> <a style="color: #00c1de; text-decoration: none; box-sizing: border-box; transition: color 0.2s;" href="/admin/blogs/javascript:;" target="_blank"><img style="border: 0px currentColor; vertical-align: middle; cursor: pointer; max-width: 100%; box-sizing: border-box;" title="图片描述" src="http://img.blog.csdn.net/20171113142919321?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYnJvYWR2aWV3MjAwNg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="图片描述" /></a></p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;"> 想及时获得更多精彩文章,可在微信中搜索“博文视点”或者扫描下方二维码并关注。<br style="box-sizing: border-box;" /> <a style="color: #00c1de; text-decoration: none; box-sizing: border-box; transition: color 0.2s;" href="/admin/blogs/javascript:;" target="_blank"><img style="border: 0px currentColor; vertical-align: middle; cursor: pointer; max-width: 100%; box-sizing: border-box;" title="图片描述" src="http://img.blog.csdn.net/20161128135240324" alt="图片描述" /></a></p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;"> </p>
</div></div>
原文链接
相关推荐
尼古拉特斯拉——最杰出的科学家(他为何被人们遗忘).doc
累积电动汽车的成功之道——美国特斯拉汽车公司案例研究 电动汽车是当前汽车工业的热点话题之一,随着全球能源的日益枯竭,各国汽车行业都把目标聚焦到了新能源汽车方面。新能源汽车虽然概念很好,但由于技术和市场...
在当前的数字化时代,智能电动车已经成为了汽车行业的重要发展趋势,特斯拉作为这一领域的领军企业,其安全性备受关注。"特斯拉安全研究.rar"这个压缩包文件显然聚焦于特斯拉电动汽车的安全问题,特别是针对2016年和...
新媒体背景下新能源汽车传播策略研究——以特斯拉新媒体传播为例 本研究的主要目的是探讨新媒体背景下新能源汽车传播策略,特别是以特斯拉为例。研究发现,特斯拉的新媒体传播策略主要体现在以下几个方面: 首先,...
特斯拉Model Y的发布和其在中国市场的定价策略,标志着智能汽车产业的一次重大变革。这款车型的国产化不仅降低了价格,提升了经济性和实用性,而且预示着汽车行业的商业模式正在从传统的销售利润转向后端的软件和...
电动汽车创新引领者——特斯拉 在全球新一轮电动汽车技术革命中,美国特斯拉公司脱颖而出。作为一家没有任何汽车工业背景的高科技公司,仅仅使用10年时间便跻身世界十大创新公司的整车制造商行列。以下是特斯拉公司...
特斯拉的成功可以从多个维度来分析,包括其研发设计、生产制造、产品矩阵和品牌营销等核心竞争力。 首先,在研发设计方面,特斯拉对研发的投入远超传统车企,历年研发强度超过10%。在三电技术(电池、电机、电控)...
这是因为车载AI芯片需要具备极高的可靠性和安全性,在极端的温度和振动条件下都能稳定工作。它们涉及到复杂的系统集成,需要满足汽车行业的严格标准和认证过程,这需要芯片厂商和汽车制造商之间进行深入合作和迭代。...
### 特斯拉Model Y智能汽车产业分析 #### 一、特斯拉Model Y国产化的市场影响与商业模式变革 **1.1 国产Model Y定价策略及其市场反响** 2021年1月1日,特斯拉正式发售了国产版Model Y中型SUV。其中,长续航版...
"特斯拉Model 3域控制器拆解分析" ...10. 特斯拉Model 3域控制器质量控制和可靠性分析:通过对域控制器的质量控制和可靠性分析,可以了解自动驾驶系统的质量控制和可靠性策略,了解自动驾驶系统的质量和可靠性标准。
特斯拉开发智能汽车 电动汽车模式.pdf
总结而言,报告通过对特斯拉的分析,揭示了智能汽车革命的趋势,预测了智能汽车技术的进步将对电子行业产生积极影响,并且给出了相关的投资建议。同时,报告也指出了潜在的风险,并强调了免责声明。对于投资者而言,...
10. 特斯拉的全球影响:特斯拉在电动汽车行业的领导地位及其对全球电动化和智能化趋势的影响,以及这些趋势对特斯拉估值体系的提升,都是投资者在评估特斯拉时需要考虑的重要因素。 从文件信息中可以看出,特斯拉...
在现代汽车行业中,尤其是特斯拉这样的智能电动汽车制造商,车辆的安全性不仅限于物理层面,还包括了网络安全。这篇文档“特斯拉安全漏洞的发现过程”揭示了科恩安全实验室如何深入探究特斯拉汽车的电子系统,揭示出...
无人驾驶和智能汽车技术的发展,将使新能源汽车成为大数据和智能化的重要载体,提高交通运行效率,助力智能城市的构建。在氢能源领域,我国将优化燃料电池供应链管理,推动清洁能源的多元化发展。 总之,我国新能源...
这份深度报告详细分析了特斯拉在中国市场的国产化进程以及其平价策略如何助力其在竞争激烈的汽车市场中占据一席之地。 一、特斯拉国产化战略 1. 降低成本:特斯拉在上海建立超级工厂,实现了Model 3和Model Y的...
浅析新能源汽车供应链管理——以特斯拉电动车为例.pdf
报告列举了多个与智能网联汽车安全相关的事件,包括特斯拉PKES系统中存在的中继攻击威胁、特斯拉MODELS/Wi-Fi协议存在的缓存区溢出漏洞、共享汽车APP的安全漏洞、激光雷达自动驾驶系统的安全性问题、UBER的账号劫持...