车联网移动应用安全攻守道
日期:2024年01月12日 阅:63
一. 引言
车联网实现了车与车、车与人、车与路、车与服务平台之间的网络连接,提升了交通服务的智能化水平,使得汽车不再只是孤立的交通工具。而移动应用(App)作为智能汽车的标配,承载着车与人之间的连接,各品牌汽车手机/车机App不仅可以提供商城、维修、保养等基础服务,还能够实现汽车的远程启动、车门解锁、空调开关以及自动驾驶等功能,为用户提供安全、舒适、智能、高效的驾驶感受与用车体验,显著提高车辆整体的智能驾驶水平。但移动应用在丰富汽车功能,提升用户体验的同时也扩展了网络攻击者的攻击面,由手机/车机App引发的汽车网络安全事件屡见不鲜。
根据Upstream发布的《2023年全球汽车行业网络安全报告》显示[1],过去5年中,全球汽车行业因为网络攻击造成的损失高达5050亿美元,而在所有汽车网络安全事件中,由远程攻击行为引发的安全事件占比超过了70%,其中,与汽车App相关的车联网安全事件排在第六位,汽车网络安全事件攻击面分布如图1所示。
本文从传统移动应用安全出发,站在攻击者视角对手机/车机App展开研究分析,通过剖析攻击手段来向读者阐明车联网移动应用面临的安全威胁和挑战,并且在文章最后,我们将给出相应防护措施。
二. 传统应用 VS 车联网应用
移动互联网的快速发展,为移动应用生态提供了巨大的发展空间,凭借着智能便携、互联互通的特性,各类App数量呈爆发式增长,推动移动端用户数快速增加,在产生巨大经济效益的同时也带来了诸多安全隐患,移动应用安全风险不容忽视,本章将对比介绍传统移动应用安全与车联网移动应用安全。
2.1 传统移动应用安全
移动应用顾名思义是指可以在移动设备上运行的应用程序,这些移动设备通常包括智能手机、平板电脑以及其他便携式设备。根据《全国移动App风险监测评估报告》数据显示[2],在对移动应用大数据平台提供的338万款Android移动App进行监测分析后发现,其中70%以上的App存在高危漏洞,容易遭受反编译、二次打包、恶意代码植入等攻击;34.17%的App嵌入了第三方工具类SDK,而第三方SDK通常是造成用户个人信息在网上“裸奔”的罪魁祸首;若在百度搜索中输入App 破解等关键字,相关检索结果高达50300000条,检索结果如图2所示。由此可见,移动App在为用户带来数字化、智能化体验的同时,亦隐藏着巨大的网络安全风险,这些风险不仅会损害到用户利益,也会对App提供者的数据平台造成安全威胁。
2.2 车联网移动应用安全
在车联网环境下,除传统移动设备(手机)外,应用程序还运行在汽车系统(车机)中,为用户提供位置、导航、媒体、天气、资讯、车辆诊断、车辆控制等个性化服务,以提升汽车的智能化水平。但同手机App一样,车机App也面临着反编译、动态调试、进程注入、密码爆破、ROOT运行环境等一系列安全风险,而且车机App通常会收集车主的隐私信息,包括姓名、联系方式、家庭住址、行车轨迹等,如果这些信息未得到妥善保护,极易导致用户隐私泄露,进而引发盗窃、诈骗等事件。并且相较于常规移动应用程序,汽车App往往具备远程控制车辆的功能,如远程启动、解锁、导航等,一旦攻击者利用App漏洞获得汽车操控权,便会直接对车主人身安全构成威胁。
三. 车联网应用安全威胁
手机/车机App作为用户与汽车交互的主要入口,攻击者可通过逆向分析、动态调试、恶意代理等手段从该攻击面入侵汽车、破解应用、篡改程序、窃取数据,接下来我们将通过三种攻击技术来揭示车联网应用面临的安全威胁。
3.1 应用逆向破解
信息收集往往是攻击者发起攻击的第一步,通过对市面上主流车企的50款移动端App进行分析(App版本更新至2023年8月),我们发现约有三分之一(17款)的App并未采取软件加固措施,攻击者可直接通过各类反编译工具,如Jadx、dex2jar、apktool,将Android应用程序(APK、DEX、AAR)中的Dalvik字节码转换为Java类文件,快速解析Android应用程序源代码进行分析并寻找可利用漏洞。而在其余采取了安全加固措施的汽车App中,有16款App在启动时未执行环境校验,因此可以利用各类FART脱壳机[3]通过Dump内存的方式来获得类列表和DEX文件,再辅之主动调用技术,便可轻松实现指令抽取,完成对应用的脱壳操作,以支持攻击者进一步的逆向分析。车企手机端App加固统计结果如下图所示。
通过收集到的信息不难发现,相当一部分汽车App并未采取混淆或加固措施,我们随机对某车企未加固App进行反编译分析,通过简单的信息检索,就可从中获取大量敏感信息,图4为某车企移动端App泄露的敏感服务信息(MQTT服务),由此可见,移动应用极易成为企业泄露敏感信息的门户。
3.2 函数劫持调用
攻击者在利用逆向手段获得汽车App源代码后,便可完整分析出App的运行逻辑、通信协议、业务接口以及功能实现,此时再结合程序漏洞发起攻击,将会给用户造成极大的安全危害。通常情况下,汽车App大量依赖第三方API(Application Programming Interface)来实现其功能,如位置服务API、支付API等,如果这些API被暴露出来,攻击者便可通过攻击API来获取敏感数据或者利用API漏洞进行其他恶意活动。此外,对手机/车机App使用基于动态二进制插桩技术(DBI)的代码注入工具Frida[4],通过其功能强大的API(JavaScript API、C API、Swift API、Go API),攻击者可以轻松编写脚本来Hook应用程序中的目标函数,并将恶意代码注入其中,对系统或进程中的各消息事件进行拦截篡改,从而执行恶意操作。图5中遭到破解的汽车车机空调App,其功能函数可被攻击者任意劫持调用,由此可见,Android系统开源的特性使其应用极易成为黑客的攻击目标。
3.3 恶意代理环境
移动代理通常是指在通信网络中充当中间人的实体,负责转发用户请求至目标服务器,一般用于网络优化、安全检查、流量管理等目的,可以为用户提供更加便捷、可靠的网络连接。而运行在不安全网络环境中的手机/车机App,所有通信数据都处于“裸奔”状态,攻击者利用恶意代理不仅可以截获窃取用户敏感信息,还能够篡改请求或伪造服务器响应,欺骗用户进行恶意操作,严重扰乱用户与目标服务器间的正常通信流程。我们以Charles工具为例进行演示[5],攻击者利用移动设备系统漏洞,安装证书并设置Charles为汽车的网络访问代理服务器,迫使所有用户网络访问请求都必须通过该代理,进而实现对应用程序与服务器之间通信数据包的监控拦截,对于使用TLS/SSL协议加密后的通信流量,配合Charles证书即可实现对加密数据的解密,其详细工作流程如图6所示。由此可见,安全的网络环境对于加密数据传输至关重要。
四. 车联网应用安全防护
在前一章节中,我们通过脱壳、逆向、劫持、恶意代理等攻击手段展示了车联网移动应用面临的安全威胁与挑战,本章节我们将以车联网应用安全风险管控为核心目标,向大家介绍如何构建具备检测评估、安全加固以及持续监测能力的车联网应用安全防护体系。
4.1 安全检测评估
安全测试和隐私合规评估不仅可以帮助车企更好把控自研App的代码安全,还能加强对第三方供应商提供App的质量监管,通过代码审计、漏洞扫描、渗透测试等一系列技术手段,再辅之以对应的安全意识培训可以在开发阶段有效提升车联网应用的安全性,预防可能存在的安全风险。
4.2安全加固防护
为了解决移动应用普遍面临的破解、篡改、盗版、调试、数据窃取等各类安全风险,对已经设计开发完成的App进行安全加固和重点功能模块保护,使其具备防二次打包、防反编译、防Hook、防Dump、防注入、反调试的安全防护能力,可以有效保护移动应用的代码安全、文件安全、数据安全、通信安全以及业务系统安全,显著提高手机/车机App的抗攻击能力,APK文件的常见安全加固流程如图7所示。
4.3 持续运营检测
对于移动设备中运行的车联网应用来说,持续的安全监控和完善的安全运营机制亦是不可或缺的。通过对用户手机/车机App提供风险行为、攻击行为以及其他异常行为的安全监测和应急响应服务,可以及时发现并消除威胁隐患,切实保障广大用户/车主的合法权益。
五. 小结
在逐渐开放的车联网生态中,暴露的风险面和大量的漏洞往往会给整个车联网服务造成难以估量的安全危害,移动应用在为智能汽车产业发展注入活力的同时,也引入了新的安全挑战。本篇文章立足攻防,以移动应用为切入点,详细介绍了车联网应用面临的安全威胁以及相应防护体系的构建思路。
类似于App加固与脱壳之间的持续博弈,移动应用安全作为一个长期且将持续存在的挑战,车企应该给予足够的重视,不断提升安全技术手段来实现防逆向、防篡改、防调试和防窃取的安全目标,对自身手机/车机App的业务场景及运行环境建立全方位的安全防护。
参考文献
[1] 2023年全球汽车行业网络安全报告,https://www.tripwire.com/state-of-security/global-automotive-cybersecurity-report
[2] 全国移动App风险监测评估报告,https://www.anquanke.com/post/id/248544
[3] https://github.com/hanbinglengyue/FART
[4] https://frida.re/docs/home/
[5] https://www.charlesproxy.com/