2023年10月23日,看雪第七届安全开发者峰会SDC于上海顺利举办,我们实验室小伙伴也积极参会。峰会以“安全开发·数智未来”为主题,涉及到了DNS安全、大模型安全、虚拟机安全、移动安全、工控安全、芯片安全、USB设备安全、车联网安全等多个话题。现场气氛火热,干货满满!
其中,车联网安全专题是大会的一大亮点,包含了三个演讲和一个沙龙。下面来看看参会白泽er带来的车联网专题回顾总结吧!
📢新鲜出炉,绝对不容错过哦!
在该专题中,演讲者给出了一个基于MQTT协议的远程控车案例。MQTT协议是一种轻量级的发布/订阅通讯协议,用户可以通过MQTT协议发布控车指令。然而,在MQTT协议中,用户的控车指令并不是直接发送到车辆,而是先发送至云服务器,再由云服务器代为转发。然而,不同的车厂可能使用同一供应商的MQTT云服务,如果攻击者能够控制车厂B的车辆,就有机会打入车厂A的车辆与MQTT云服务的通信中。进入MQTT服务中后,攻击者可以订阅正常的用户的控车指令;如果获取了用户token,还能发布控车指令。
基于MQTT的控车攻击流程
打入A车的MQTT服务的前提是能够获取B车的TLS公私钥。演讲者展示的案例中,尽管使用了TEE(可信计算环境),仍然能够泄露B车Tbox的公私钥,攻击者可以通过动态调试的方法从内存中获取密钥。因此,演讲者指出,单纯的将TEE作为密钥存储的工具是不可靠的。
获取B车TLS密钥的前提是有Tbox的root权限。演讲者分享了一个T-box中的提权漏洞,用户可以触发一个system函数带来的任意指令执行。除此以外,实行Tbox提权攻击的前提是和其处于同一个局域网中。演讲者提到,有多种攻击面可以帮助攻击者进入局域网,例如车载WIFI和车辆的工程模式。
Tbox提权漏洞
无论对于企业、高校还是个人,车联网安全研究的高昂成本都是一大阻力,基础的攻击验证需要至少一辆实车,攻击的泛用性验证更是需要不同品牌、不同型号的车辆进行试验。因此,如果能开发车联网部件的虚拟化方案,使用软件降低测试成本,那么车联网安全研究的门槛将显著降低。然而,如何在虚拟机上运行车联网设备固件,以及如何虚拟化设备间的网络通讯,是两个主要的问题。来自绿盟科技的团队尝试解决这两个问题,并带来了他们在探索车联网设备虚拟化上的经验。
搭建虚拟化的第一步是确定网络拓扑。演讲者提到,一辆车中的设备数量庞大,高端车型包含接近一百个设备,因此,它们构成的网络也较为庞大。然而,作者认为该网络结构是可以精简的,换句话说,要验证车联网虚拟化的可行性,只需要保留3-5个设备即可。
精简后的网络拓扑
搭建虚拟化的第二步是实现设备间的CAN通讯。运行在客户机中的固件(以下简称虚拟固件)需要具备收发CAN报文的能力,这一点是通过Hypervisor为虚拟固件配置can设备达成的。然而,Hypervisor为客户机配置can的设备实际上是宿主机上的can设备,即图中的宿主CAN虚拟网卡(can0, can1, can2)。这些CAN虚拟网卡是基于以太网隧道创建的,即所有通过它们发送的CAN报文的传输信道实际上是以太网(对于使用这些CAN虚拟网卡的应用来说,这个过程是透明的,和物理CAN设备没有区别)。使用CAN虚拟网卡后,虚拟固件间的CAN通讯实际上是宿主机中CAN网卡间的通讯(即图中can0/can1/can2间的通讯)。而只要正确地设置网络路由,就可以使得宿主机CAN虚拟网卡间能够通信。
设置CAN虚拟网卡的路由
除此以外,演讲者展示了一个移植真实环境控车案例到虚拟环境的例子。该控车案例中,攻击者和车内设备(例如安卓车机)处于同一个局域网中,因此可以通过ip扫描发现设备开启的服务,并且使用爆破口令等方式获取设备的控制权。上图展示了该例子中虚拟环境的网络结构。同时,演讲者展示了在虚拟环境中进行端口扫描、adb连接、telnet口令爆破并最终控制空调温度的过程。
随着车联网的发展,车辆功能愈发丰富,车载软件系统的架构也愈发复杂。然而,越复杂的软件架构,带来越多的安全风险。演讲者通过列举攻击案例的方式,揭示了新型软件架构引入的攻击面。
缺乏权限校验机制会引入恶意控车风险。当某个车辆模块收到指令时,很可能不会进行权限校验,因此无法过滤恶意指令。演讲者展示了多个权限校验缺失导致的安全问题。如下图所示,系统服务中的数据获取API没有进行任何的权限检查,任意方都可以直接进行CAN信号的发送。只要攻击者逆向得到了车辆指令的格式,就能轻松通过恶意应用发布控车指令。
系统服务API缺乏权限校验
缺乏网络隔离会引入恶意控车风险。如下图,在IVI上,系统服务可以通过TCP/IP访问ICU。然而,由于IVI和ICU处于同一个局域网,恶意应用可以绕过系统服务,直接向ICU发起网络连接。演讲者还展示了ICU中的一个内存破坏漏洞,恶意应用可以构造特殊的TCP报文来触发漏洞,达到攻击目的。
恶意应用绕过系统服务连接ICU
供应链漏洞会导致本地提权。车辆固件通常使用了大量上游软件包(开源软件、产商BSP)。演讲者介绍了一个车辆模块使用的上游BSP中的提权漏洞,该上游BSP接收网络报文中指定的指令,并直接使用system函数执行,攻击者可以设置任意指令以达成攻击目的;并且,由于该模块具有root权限,攻击者能达成的攻击目的非常广泛。图30是该漏洞的PoC,攻击者将system函数执行的指令设置为在/data/local/tmp目录下创建一个文件,在执行攻击之后,可以看到文件被成功创建。
1. https://www.gandalf.site/2019/01/iot.html
2. https://baike.baidu.com/item/编程器/7781927
3. https://github.com/mguentner/cannelloni
4. https://wiki.qemu.org/Documentation/Networking
5. http://news.eeworld.com.cn/qrs/ic629603.html
👏欢迎评论区互动交流!
– The End –
供稿:!my
润色、排版:gbf
审核:张琬琪、洪赓
原文始发于微信公众号(复旦白泽战队):活动回顾|2023看雪安全开发者峰会·车联网专题