随着越来越多的黑客开始针对汽车行业展开攻击,全球对汽车安全越来越重视。著名的Pwn2Own黑客大赛也计划于2024年在东京举办汽车专场比赛。以往只有特斯拉参加此类比赛,但今后将有越来越多的车企参与其中。在这种情况下,任何一家车企都无法独善其身。
作为一名有多年漏洞安全研究经验的人,笔者站在OEM的角度逐渐感受到,仅依靠挖掘漏洞和修补漏洞很难全面保障安全。这是因为软件不断迭代更新,漏洞不断出现,例如在A车型上发现的漏洞可能在B车型上再次出现。此外,供应链也可能引入漏洞,而这些漏洞可能来不及修补。
如何改变这种现状,以及如何从技术层面保障汽车安全?本节将以保障汽车安全为主题,从OEM的角度探讨汽车攻防之道。在这一过程中,笔者研究了世界顶尖科技公司的安全实践。
1.世界顶尖科技公司的安全实践
(1)微软
微软可以说是从“蛮荒时代”过来的。大家都还记得Windows XP时期电脑病毒满天飞、各种木马病毒防不胜防的场景吗?360公司就是在那时崛起的。到如今的Windows 11,微软的安全保障工作已经有了质的变化,用户连杀毒软件都不需要安装了。那么,微软是如何达到现在的水平的呢?
微软提出了Zero Trust(零信任)的概念,其中包括如下3项主要内容。
❑明确验证:对所有的数据点进行身份校验和授权。
❑采用最低权限访问机制:基于风险和数据保护,限制用户访问权限。
❑假设突破:假设攻击者可以获取某一权限,则需要阻止攻击者获取更大的访问权限。
基于以上的Zero Trust概念,微软从硬件层、系统层、应用层、隐私保护、云端、合规这几个方面制定了一系列的安全防护措施。想要了解更多内容,请访问https://learn.microsoft.com/en-us/windows/security/。
(2)谷歌
谷歌的典型产品包括Android系统和Chrome浏览器。在早期,尽管相较于Windows系统,其安全性更强,但也暴露了很多问题。然而经过十几年的发展,如今的Android系统和Chrome浏览器可被称为“铜墙铁壁”。
谷歌定义了Android系统的三大安全宗旨。
❑平台开放性:作为开放平台,Android系统为上层应用程序提供了可靠的环境,保护用户、数据、应用程序、设备和网络的机密性、完整性、可用性。
❑开发者友好:Android系统通过一系列安全控制减轻了安全专家和开发人员的负担。安全专家可以灵活运用安全控制,而不太熟悉安全知识的开发人员也可以受到安全默认值的保护。
❑用户可控:用户可以查看每个应用程序请求的权限,并控制这些权限。
谷歌从平台的角度对Android系统的安全做了很多的技术改进。Android系统虽然基于Linux系统,但对传统Linux的安全特性进行了大量的改进,以满足移动平台的需求。这方面的具体内容包括系统/内核安全、应用程序安全和安全实践建议。想要了解更多信息,请参阅https://source.android.com/docs/security/overview。
(3)特斯拉
对于特斯拉,我们虽然没有公开的资料,但是可以通过Pwn2Own大赛的规则以及安全研究员公开的资料来了解其安全思路。特斯拉主要关注以下漏洞类别,这表明特斯拉在这些安全方面做了大量的工作。
❑通过收音机、Wi-Fi、蓝牙、Modem的无线通道来攻击车辆。
❑通过车机应用来获取车机权限。
❑在获取车机应用权限后,提权到root。
❑利用车机权限获取自动驾驶、网关等权限。
❑通过USB获取车机权限。
❑通过OBD获取车机权限。
❑车机的虚拟机逃逸。
更多资料可以查看https://www.zerodayinitiative.com/blog/2023/1/11/announcing-pwn2own-vancouver-for-2023。
2.初创OEM
像微软、谷歌这样的公司和车厂还是有区别的。现在汽车软件逐步走向了手机化的方向,它的各个威胁场景和手机的很相似,同时它又比手机更复杂,涉及多个系统的交互。因此,如何保障汽车软件的安全是一个综合性的问题。
一个产品的安全成熟度与其资源投入成正比。很显然,在初创阶段,安全并不是OEM重点投入的方向。因此,如何把有限的资源用在“刀刃”上以解决最迫在眉睫的问题,是一个需要思考的问题。
为了解决这一问题,首先要弄清楚什么是“刀刃”,即最重要的任务是什么?对于汽车安全来说,目前推动其发展的动力主要有两个:一个是法规,另一个是安全事件。而法规颁布的初衷就是避免安全事件,因此以应对各种安全事件为出发点来解决上述问题,可以说是双赢之举。
明确了方向,那我们继续深入探讨。安全事件必然有对应的时间、地点、人物、作案方法、工具等,我们统称为攻击场景。接下来,笔者会从攻击场景出发,剖析整个汽车安全体系所面临的问题,并提出相应的改进思路。对于汽车来说,攻击场景可以大体分为从车外入侵(打开车门、获取各种模块权限)和从车内入侵(启动车辆、获取各种模块权限)两种类型。
(1)从车外入侵
在不考虑云端被攻破的情况下,汽车的车外入侵点包括蓝牙钥匙、车机蓝牙、UWB、NFC、Wi-Fi、4G、收音机,其中在车辆关闭的情况下只有蓝牙钥匙、UWB、4G、NFC是可以使用的。
这几个攻击入口对应的ECU如下。
❑Wi-Fi、4G:车载网络通信模块。
❑蓝牙钥匙、NFC、UWB:车载数字钥匙模块。
❑车机蓝牙、收音机:娱乐模块。
(2)从车内入侵
车内入侵可分为暴露接口入侵和物理接口入侵。具体来说,暴露接口入侵指通过USB、OBD等接口发送指令攻击车辆,物理接口入侵则是指通过破线等手段直接攻击车辆CAN总线。
这些入侵手段对应的ECU如下。
❑USB:娱乐模块。
❑OBD:网关模块。
❑破线:所有ECU。
通过对攻击场景的分析,我们可以将这些攻击场景与R155及ISO 21434的信息安全要求进行对比。作为OEM的安全工程师,我们不但需要考虑如何抵御上述攻击场景的发生,而且要满足法规的要求。
3.进攻性研究
安全的本质是攻防对抗,如果想要做好防御,就必须了解攻击方式。在进攻性研究领域,通常分为法规测试和PWN攻击。
(1)法规测试
法规测试主要是针对基线的测试,可以按照成熟测试用例完成。这类测试可以保障车辆没有明显的漏洞,并且无须进行深入的代码分析,主要使用各类工具完成扫描式的测试。
(2)PWN攻击
PWN攻击是从黑客的角度进行真正的攻击,包括攻击面分析、漏洞挖掘、漏洞利用等一系列动作。采用这种方式需要较高的研究成本,目的是发现产品的严重漏洞。每年一届的Pwn2Own赛事就是这种攻击方式的成果展示。
对于OEM来说,法规测试是必备的,是强制性要求。而PWN攻击需要投入大量资源,因此OEM在初创阶段不宜将所有资源都用于此,而应采用精兵战略,让少量高手专攻特定的几个方向,给予他们耐心和时间,最终必将取得成果。
以下是一些适合采用PWN攻击方式的方向。
❑不容易进行防御的攻击面,主要与RTOS、协议栈相关,例如蓝牙基带、Wi-Fi基带等。对于这些攻击面,我们无法进行有效保护,只能尽量避免漏洞的出现。
❑危害性最高的攻击面,例如蓝牙钥匙、NFC等。在没有云端保护的情况下,这些攻击面会导致中程控制攻击,因此需要重点研究。
❑针对防盗机制的攻击,例如在没有车钥匙的情况下无法开走车。如果能够攻破这个方向,则该攻击将具有很大的杀伤力。
4.反进攻研究
上面讲了进攻性研究的主要方向,但对于初创的OEM来说,更好的做法是进行反进攻研究,因为依赖PWN攻击的方式是无法消灭所有漏洞的。与传统的防火墙不同,反进攻的主要作用是针对性地阻断漏洞攻击,这样即使存在漏洞,攻击者也难以成功利用。
此外,反进攻研究还可以完全覆盖法规测试中的常见攻击方式,从而提高法规测试的通过率,降低为通过法规测试而修复、整改的成本。
在反进攻研究中,主要的攻击目标是智能座舱模块和智能网联模块,这两个模块覆盖了进攻性研究以外的大多数攻击场景。
首先,笔者认为该项研究的宗旨是独立自主研发,不依赖ECU供应商,以避免合作上的困难。
然后,以下是笔者的做法。
1)攻击面减少:通过安装在ECU上的扫描程序,识别车内存在的攻击风险点,并形成报告。该操作可用于业务整改,包括解决车机应用、服务的权限问题,以及车内横向渗透的问题。
2)系统加固:主要针对车机进行保护。通过在IVI上安装加固程序,处理应用权限、服务权限、网络权限控制不严的问题,以增强车机应用、USB、车机蓝牙、多媒体解析等模块的防御能力。因此攻击者即使攻破这些模块,也难以进一步获取系统权限。该过程涉及系统层面的加固,不可避免地需要对系统代码进行修改,包括应用沙箱加强、进程间通信权限加强、文件权限加强、进程隔离加强、SELinux加强等。
3)网络防护:主要是在T-BOX上安装防火墙,以对Wi-Fi攻击进行阻拦,从而尽可能地降低Wi-Fi成为攻击入口的风险。
4)内存漏洞利用缓解措施:该做法主要用于浏览器、内核、协议栈、多媒体库等大模块的保护。因为这些模块的漏洞很难修复,所以我们采取漏洞利用缓解措施,以提高攻击者利用这些漏洞的难度。
5)其他:解决其他影响合规的问题。
下面从黑客攻击的视角进行介绍。