FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。
FreeBuf+小程序把安全装进口袋
今年,腾讯安全科恩实验室带来的议题将会深入介绍2017年彩蛋视频背后涉及到的技术细节。除了介绍特斯拉基于云端的空中升级(OTA)机制,并展示一些攻击链中开发的新技术外,该议题还将着重介绍测试过程中发现的多个严重的安全漏洞。
刘令,腾讯科恩实验室研究员,专注于逆向工程、漏洞挖掘、漏洞研究等技术,多次参与特斯拉等汽车的安全研究。曾在QEMU和XEN中发现多个虚拟化漏洞,同时也是一名CTF爱好者。
在去年,我们利用了两个Webkit中存在的漏洞,实现了浏览器中的任意代码执行。今年的情况和去年类似,整个攻击过程依然是从一个Webkit漏洞开始的。
攻击过程中涉及到的部分硬件单元和连接方式如下图所示:
该版本的Webkit内核中,存在一个UAF漏洞,下图即是该漏洞的PoC代码:
该元素内部存在多个SVGTransform实例,这些实例的SVGMatrix结构会存储在一个Vector里。当SVGTransformList的Initialize或clear方法被调用后,Vecotr被释放,但访问Vector中Matrix的指针仍然存留。利用该UAF漏洞,经过精心的内存布局之后,即可借助ArrayStorage、Uint32Array等结构的特性实现对内存的任意读和任意写,并从而实现了浏览器中的代码执行。
获取了浏览器的权限之后,下一步操作就是突破内核和其他安全防护措施对浏览器的限制,从而得到rootshell。
2016年,我们是通过利用Linux内核中的一个漏洞实现了该目的。但在2017年,由于特斯拉修复了相当多的内核漏洞,我们不得不寻找新的漏洞。
得到rootshell后证明CID已被完全攻破,下一个目标则是网关。
但在对新软件进行安全审计的过程中,我们发现升级过程中存在行为不一致的问题。如下图所示,尽管网关的文件传输协议限制了直接传输升级软件的操作,名为“boot.img”的升级软件无法直接传输到网关上,但文件系统的重命名行为和文件传输协议的重命名行为不一致。文件系统会忽略目标文件名首部的空格,导致目标文件名“\x20boot.img”会被文件系统理解为“boot.img”,从而绕过了升级软件对文件名的检查。
用这种方法刷入我们修改后的升级软件后重启网关使其执行升级软件,即可在网关上执行我们修改后的升级代码植入后门,或绕过原有升级软件对固件签名的检查。此外,我们还对整个OTA升级过程进行了研究。特斯拉的OTA升级过程大致可由下图所示的几个关键步骤描述。
此外,cid-updater还会负责根据固件包中的目录信息与车辆配置做比照,据此产生release.tgz文件,并和上文提到过的升级软件boot.img一同提供给网关。然后网关执行上述升级软件,更新在网关上连接的二十余个ECU。
为了展示我们对车电系统整体的理解,我们对特斯拉在2016年年末推出的彩蛋功能进行了自定义修改和展示。
下图是彩蛋过程中几个重点参与活动的ECU:
因此为了实现自定义彩蛋功能,我们在CID中动态修改了多个检查点,并对ECU固件中的动作表进行了修改,将修改后的固件刷入了ECU中。
该程序提供了两个业务端口:
25974端口提供了一个交互式shell和多种命令,可供CID进行控制;
28496端口可通过一个HTTP服务器提供其他组件需要的文件。
在某个特定版本的特斯拉APE固件中,我们发现了名为m3-factory-deploy的命令,该命令可覆盖handshake返回的JSON,从而让攻击者提供的JSON被解析。
利用JSON中存在的self_serve键值,可以要求APE将/var/etc/saccess/tesla1这一文件暴露在HTTP服务器下,从而可得到其内容。
利用其为凭据,可通过25974端口得到ape-updater中自带的命令执行权限,可以重新开启SSH,并以root权限在APE上执行任意程序。
在上述所有漏洞报告给特斯拉后,特斯拉迅速做出了反应,措施包括:
修复Webkit漏洞;
与英伟达共同修复NVMap中的内核漏洞;
修复Gateway中的漏洞。
团队还注意到特斯拉在其系统安全性上不断地进行改善与提高,比如:
更严格的iptables限制;
对OTA框架中的几个关键程序进行进一步加固;
降低saccess文件夹中token的权限;
禁止系统降级;
……
这一过程中,特斯拉专业的安全响应团队和他们的OTA机制起到了关键的作用,防止了车主受到进一步的威胁。
*本文作者:腾讯安全科恩实验室,转载请注明来自FreeBuf.COM