☰
汽车网络安全风险评估实战:从TARA到安全需求落地
2026/10/14 21:47:06 网站建设 项目流程

1. 先搞清楚一件事:汽车网络安全风险评估到底在评估什么

前阵子接了一个新车型项目,刚开始接触电子电气架构的时候,最头疼的不是某个ECU怎么选型,也不是总线带宽够不够,而是客户那边甩过来一句话:帮我们对这个架构做一轮网络安全风险评估。说实话,在真正完整跑过一轮之前,我一直以为风险评估就是把设备接上扫描器,看看车机系统有哪些漏洞、哪些端口被暴露。实际上那个想法错得很远。

汽车网络安全风险评估,本质上是在回答三个问题:车上什么东西值得被保护、坏人用什么方式可能破坏它、一旦破坏会导致什么后果。它跟传统IT系统的漏洞扫描完全是两码事。车辆面临的安全威胁,影响的不是服务器数据,而是物理世界里的乘车人、路边的行人、甚至交通系统的正常运行。想想看,一个漏洞在服务器上最多是数据被偷,但到了车上可能就是制动失效、转向失控,这已经是生命安全层面的事了。

所以风险评估在汽车行业里,核心逻辑一定是基于资产、基于威胁场景、基于后果严重度来展开。它不追求“把所有漏洞都找出来”,更关键的在于识别出哪些功能、哪些数据、哪些算力资源值得投入安全防护资源。这个思路跟功能安全很像,ISO 26262讲的是“避免因电子系统故障导致的人身伤害”,而ISO/SAE 21434讲的是“保护车辆免受网络攻击导致的异常行为”,两者都是从整车级危害出发,只是前者关心故障,后者关心攻击。

这里我特别想强调一点,汽车业务里做风险评估,评估的对象往往不是一个单点部件,而是一组功能或一条完整通信链路。比如智能钥匙进入系统,它的资产不只是钥匙,还包括车身控制器、门模块、蓝牙天线、UWB测距芯片、甚至车载网络里的网关路由。攻击者可以攻击密钥生成算法的存储位置,也可以干扰测距协议,还可以在车辆移动时重放指令。如果只盯着某一颗芯片去评估,很容易漏掉真正的高危路径。

关于评估的时机,目前行业普遍认可的做法是在概念阶段启动,然后在开发过程中循环迭代。很简单,因为架构变了、通信矩阵变了、新增的外部接口变了,风险面都会跟着变。我见过不少项目,评估报告在立项时写了一次,之后就再也没去看过,等到车辆量产前测试被监管查出问题,再回头补,成本就翻了很多倍。

汽车网络安全风险评估的工作对象可以概括成三类资产维度:功能性资产、数据资产、软硬件资源资产。功能性资产好理解,比如制动辅助、自动泊车、远程控车这些用户可感知的功能;数据资产包括个人信息、车辆标识、日志记录、甚至OTA更新包本身;软硬件资源则是承担计算和通信的ECU、域控制器、传感器、云端Server。一个完整的风险评估,不会放过这三类里的任何一类。

2. 从HEAVENS到TARA:主流的评估方法论到底怎么选

我最早接触汽车网络安全风险评估时,行业里还没有一个统一的标准,各家车厂和安全咨询公司各有各的章法。当时比较常见的有EVITA项目提出的方案、HEAVENS项目提出的威胁分析与风险评估模型,以及后来慢慢形成行业共识的TARA(Threat Analysis and Risk Assessment)。在ISO/SAE 21434正式发布之后,TARA基本成了行业的标准动作,但不同底层方法论的实际效果差别不小,值得在这里拆开说说。

EVITA偏重为车载嵌入式系统做安全架构设计,它给出的评估结果往往是一张安全机制需求列表,比较适合在早期做架构选型时用,但对“概率有多高”这类问题不够细化。HEAVENS则是把威胁分成多个维度,例如攻击者的技术难度、对安全属性的影响、攻击动机等,再通过矩阵算出风险等级。它的优点是非常适合做学术研究和预研项目,但落地到量产项目时,需要的输入信息太多,很多时候你根本拿不到这么细的数据,硬套会变得很别扭。

真正让我自己用得比较顺手的是TARA的轻量化变体,不一定逐条复刻标准里的每一步,但整体框架保持得比较完整。它的大致流程是:先确定Item Definition(评估对象的边界和功能清单),再做资产识别,然后建立威胁场景,再评估每个威胁场景的影响分数和攻击可行度,最后算出风险值并决定处置策略。这个框架强在哪里?它不会让评估者一头扎进“这个ECU会不会被漏洞利用”的细节里,而是先引导你去思考“谁会攻击它、为什么攻击它、通过什么路径攻击”,从威胁动机出发而不是从漏洞出发,避免陷入漏洞库依赖症。

这里必须补一句:国内有些项目还在沿用“等保”式的检查清单思路去评估汽车系统,列一个几百项的安全检查表打勾打分。这种做法的确简单,执行成本低,但它无法回答“我的车最该防谁”的问题,也无法处理复杂攻击链路的风险传导。拿它做合规粗筛可以,拿来指导安全设计是不够的。选方法论的核心逻辑永远是贴合产品风险特征、契合团队评估能力、输出能被开发团队直接使用的结论,不是越复杂越高级。

还有一个比较现实的问题,就是主机厂和供应商之间怎么对齐评估结果。很多情况下主机厂依据ISO 21434要求供应商提交TARA报告,但双方对威胁场景的理解口径可能差异很大。我在某个项目里遇到过这样的情况:我们把一个云端手机App远程控车功能列为高风险资产,但供应商认为App本身是主机厂开发的,他们只管车端接口,两边在资产边界上争执了很久。这种事靠方法论解决不了,必须提前把Item Definition细化到双方都认可的颗粒度,最好把具体功能点、连接接口甚至数据流ID都写清楚。

下表可以帮我在选择方法时快速做判断:

评估方法适用阶段核心优势常见局限我的使用建议
EVITA架构预研直接输出安全机制需求概率量化偏弱预研项目可以用
HEAVENS预研/科研威胁评估维度细致、学术性强输入要求高,量产落地吃力适合学术场景
TARA概念到量产全周期与ISO 21434无缝衔接、可操作性高实施培训成本较高量产项目首选
检查清单打分合规粗筛快速、省资源无法深挖攻击路径只做辅助工具

说到方法论落地,我自己的经验是:别把TARA当成一个流程迷信,它更像一个思维框架。你把框架吃透了之后,面对不同的评估对象可以灵活剪裁步骤。比如评估一个新增的蓝牙钥匙功能,资产识别和影响评级可以做粗一点,重点压到攻击路径分析上;但如果是评估OTA升级系统,对后端服务器、签名私钥管理、车辆端安全存储的资产识别就必须做细。

3. 完整跑一轮TARA:威胁建模到风险决策的实操链路

纸上谈兵容易,实际跑一轮TARA才能真正理解里面的坑。我拿一个典型的智能远程控车场景来演示:用户通过手机App实现车辆解锁、启动空调、远程查看车辆状态。这个功能牵扯手机端App、云端服务、车载T-Box、网关、车身控制器和后端账号体系,非常适合做示例。

3.1 第一步:划清Item Definition边界,别让评估对象变成一团浆糊

做任何风险评估,第一步都是定义清楚评估对象。很多评估一开始就乱,就是因为边界没划清。我习惯把Item Definition做成一张表格,包含功能清单、关联ECU、通信路径、外部接口、数据流。再画一张简化的架构图,把主要节点和接口标出来,避免评估过程中东一锤子西一棒子。

以远程控车功能为例,边界大致是:

  • 功能:远程解锁/闭锁、远程启动空调、远程车辆状态查询
  • 关键组件:手机App、TSP云平台、T-Box、网关、BCM/车身域控制器
  • 通信链路:App→云平台(HTTPS/TLS)、云平台→T-Box(车联网通信,通常走专用APN)、T-Box→车内总线
  • 数据资产:用户令牌、车架号、密钥材料、车辆状态数据、历史操作指令

边界定义这一步我会拉上系统架构师、功能负责人一起过一轮,一个人的视角一定会有盲区。实际项目里常出现的问题是:把T-Box和云端算进去了,却漏了App端的日志上报功能,结果出现了一条通往云端的本地日志投递链路,成了脱缰野马。前期花半天把这张表梳理干净,后面所有评估工作都会顺畅很多。

3.2 第二步:资产识别与关键资产的网络安全属性赋值

边界明确了,接下来识别资产并给每类资产标注安全属性。汽车行业安全属性基本是行业共识里的“三性加两性”:机密性、完整性、可用性,以及真实性、非否认性。不同资产对这些属性的敏感度差异很大,例如用户账号令牌对机密性最敏感,远程解锁指令对完整性和真实性最敏感,T-Box的通信链路对可用性极敏感。

我实际评估时会给每个资产打一个属性敏感表,类似这样:

  • 用户令牌:机密性高、完整性中、可用性中
  • 解锁指令:完整性高、真实性高、可用性高、机密性中
  • 车辆位置数据:机密性高
  • OTA升级包:完整性极高、真实性极高

这个步骤不要贪多,把核心资产列到10到15项足够,再细就会变成流水账。重要的是让团队形成统一认知:哪些属性破坏后会直接威胁人身安全,哪些只是造成经济损失或隐私泄露。这个“属性赋值”的结论直接影响后面影响评级打分,所以千万别走过场。

资产识别还有一个容易漏掉的地方——软硬件调试接口以及开发期后门通道。有次评估一台预研样车,我们只关注了量产后的通信链路,结果供应商工程师提醒我们,样车还留着调试用的以太网接口和未登录保护的诊断服务。这类“开发态”资产如果不纳入评估,攻击者完全可能通过物理介入访问内部网络。所以资产识别时一定要问清楚:整车出厂后,还有哪些口子是实打实能被接上的。不要相信宣传PPT上写的“无调试接口”,要去现场对着样车摸一遍。

3.3 第三步:威胁场景构建,用STRIDE做系统化头脑风暴

资产清单出来后,下一步需要为每一个资产假设威胁场景。我最常用的是STRIDE方法,这也是微软提出的威胁建模工具,在汽车行业里应用很顺畅。

  • Spoofing(假冒):伪装成合法用户下发解锁指令,伪装成App欺骗云端
  • Tampering(篡改):篡改车辆状态上报数据,篡改升级包内容
  • Repudiation(抵赖):用户否认曾下发某项控车指令,用于事故回溯时抵赖
  • Information Disclosure(信息泄露):车辆定位数据被窃取、个人身份信息泄露
  • Denial of Service(拒绝服务):向T-Box发起大量无效请求导致合法用户无法控车
  • Elevation of Privilege(权限提升):从普通用户权限提升到管理员权限,操作他人车辆

拿远程控车这个Demo功能举例,威胁场景可以列出至少10条,例如:攻击者截获手机与云平台之间的认证令牌并重放;攻击者通过伪造T-Box身份连接云端,伪装成车辆;攻击者在车内总线上发送伪造的闭锁指令;攻击者通过云端接口的越权漏洞,查看他人车辆状态。每一条威胁场景都要写清楚“谁通过什么方式做什么事”,而不是笼统的一句话。

一次完整的TARA下来,少则几十条威胁场景,多则上百条。这时不要慌,后面会影响评级和攻击可行度会帮我们筛掉一部分低优先级的,最终留下来重点管控的可能就是10到20条左右。头脑风暴阶段宁可多列,也不要为了省事刻意砍,后面的概率评级自然会帮你排序。

3.4 第四步:影响评级不能只看“财产损失”,要落到四个维度

威胁场景出来之后,标准做法是对每个场景评定影响。在ISO/SAE 21434的框架里,影响通常由四个维度构成:S(Safety,安全)、F(Financial,财务)、P(Privacy,隐私)、O(Operational,运营)。更重要的是,这些维度的严重程度要优先考虑是否有人员受伤的可能性,这也是它与功能安全关联最深的点。

每个维度我习惯用1到4分来打:

  • S=1:无安全影响或轻微不适
  • S=2:轻微受伤可能性,可恢复
  • S=3:严重受伤可能,需急救
  • S=4:致命或不可逆伤害可能
  • F=1:损失可忽略
  • F=2:个人或小范围财务损失
  • F=3:较大范围运营损失或高额索赔
  • F=4:重大财务影响,例如大规模召回
  • P、O分别类似,只是关注的对象不同

例如“攻击者在车辆行驶过程中伪造制动指令”这类威胁场景,S维度直接打4分,因为涉及制动系统异常介入和驾乘人员人身安全。而“攻击者窃取车辆常驻位置历史数据”在S上可能只有1分,但在P维度可能到3到4分,因为涉及用户位置隐私批量泄露。每个威胁场景取四个维度的最高分作为影响值,这是比较稳妥的保守做法,也符合行业风险偏好。

实际评估中最大的坑就是评估专家对S维度打分标准不一致。比如一条威胁场景可能导致车辆低速碰撞,有人觉得是S=2,有人觉得是S=3。我在组织评估会时,会引入功能安全工程团队的已有危害分析结论(Safety Goal)作为参考锚点,把与功能安全危害事件对应的场景统一对齐到相同严重度,避免团队内吵成一团。

下表是简化示例:

威胁场景对资产属性的破坏SFPO影响值
重放解锁指令,在物理范围内打开车门完整性/真实性破坏31123
越权调用云端API,查看他人车辆状态机密性破坏11313
伪造OBD诊断指令,关闭车辆行驶稳定性系统完整性破坏42134
发起拒绝服务轰炸T-Box通信链路可用性破坏12133

3.5 第五步:攻击路径可行度评估,Attack Feasibility真正决定风险优先级

影响评级再高,如果攻击几乎不可行,仍然不应该是第一优先级去处理的对象。攻击可行度评估是整个TARA流程里最需要经验积累的部分。在ISO/SAE 21434里,它给出的维度包括:攻击时间、攻击者专业水平、对目标的知识掌握、攻击窗口、所需设备、攻击的样本。这些维度的组合可以让我们给每个威胁场景打出一个可行的评价。

我采用一种简化但不失严谨的做法,把所有维度折成三条判断主线:

  • 接触途径:是否需要物理接触车辆?还是可以远程完成?远程攻击通常意味着攻击者可批量实施、成本更可控,风险更大。
  • 技术门槛:需要特殊硬件设备吗?需要逆向固件吗?需要私有协议知识吗?已知漏洞利用和零日漏洞的风险完全不同。
  • 条件限制:攻击必须发生在什么上下文?需要车机处于某一特定模式吗?是否需要操作者登录合法账号为前置条件?

拿前面“重放解锁指令”来说:虽然可以通过无线方式获取到通信数据并重放,但如果链路本身做了时间戳和随机数挑战应答,攻击者需要破解会话密钥才能构造合法报文。这时候攻击可行度就比单纯“抓包重放”高很多。再比如“越权调用云端API”,只要测试者会用Burp Suite抓包改报文,就有机会测出是否存在越权,门槛相当低,可行度等级自然就上去了。

这个维度打分需要评审团队的共识。我每次评估都坚持至少让一名了解攻击渗透测试的工程师参加,他对“攻击成本”的判断比纯做开发的人准确得多。开发人员往往高估攻击的难度,安全工程师往往低估攻击的便利性,两边吵出来的平均值反而更接近真实风险水平。

3.6 第六步:风险处置决策,从Risk Value到四类处理策略

算清楚影响值和攻击可行度后,把两者组合成风险值。我的组合规则是先把可行度从1到4打分,再把影响值从1到4打分,两者相乘得到一个1到16的风险分数。再按分数区间划分等级:1到3为低风险,4到7为中风险,8到12为高风险,13到16为极高风险。

对低风险场景,接受是合理的处置策略,不必额外上机制,写清楚理由归档即可。对中风险场景,优先采取“风险降低”措施,比如加强鉴权、增加访问频率限制、加密敏感字段。对高和极高风险场景,除了降低风险的控制措施,还必须考虑与功能安全设计联动。如果一条攻击路径无论如何都降不到可接受的范围,就要考虑“风险规避”,例如直接去掉某个外部接口,或限制某个功能的远程启用条件。

处置决策出来后,我还习惯做一张流向表,把每条威胁场景与对应的处置措施、责任部门、完成节点绑定起来。比如“远程控车指令缺少防重放机制”这个场景,处置措施写“在云端和车端增加递增计数器和时间戳双向校验”,责任部门写“云端开发组+T-Box开发组”,完成节点是“2024年Q2代码冻结前”。这张表就是后续安全开发和验证的输入,如果不把它做出来,TARA就只是一份给审核员看的精美文档。

4. 从风险报告到工程落地:TARA结果怎么转换成安全需求

不少团队做完TARA之后,报告放上台架吃灰,开发人员根本不知道下一步该干什么。这个问题相当普遍。我始终认为,评估的真正价值不在那个风险数值本身,而在于它能不能转化为可执行的安全需求和验证活动。

TARA每个威胁场景背后都对应一条或几条攻击路径,每条攻击路径都对应若干安全控制点。开发团队需要的,恰恰是这些控制点被转换为具体的功能需求。举个例子,威胁场景“攻击者通过伪造T-Box身份连接云端”,对应的安全需求就可以拆成两条:一是云端必须校验T-Box证书的有效性,二是T-Box的私钥必须存储在安全硬件中。这两条需求一条是给云端的,一条是给嵌入式的。

再比如“攻击者窃取App与云端之间的用户令牌”,对应的安全需求可能是:App侧令牌存储必须使用系统安全区域,云端侧令牌有效期不得超过15分钟,刷新令牌必须绑定设备指纹。这些需求写得越具体,开发团队就越容易实现和验证。

我在项目里通常会组织一次专门的需求拆解会,参加者包括安全工程师、系统架构师、云端开发、嵌入式开发。会上把TARA报告里排名靠前的威胁场景逐条过一遍,当场敲定每个场景的安全需求措辞、优先级、验证方式,然后进入需求管理工具跟踪。这一步如果做扎实了,后面渗透测试、安全验证就有了明确的靶子。

关于验证方式,我认为可以在需求旁边直接标注验证方法,例如:

威胁场景安全需求验证方式
解锁指令被重放车端与云端采用时间戳+随机数防重放渗透测试验证重放报文是否被拒绝
用户令牌被窃取后可用App令牌存储于安全区域,服务端绑定设备指纹静态代码审计+自动化接口测试
OTA升级包被篡改升级包使用代码签名,车辆校验证书链模拟篡改升级包验证校验失败

验证方式能提前写清楚,开发人员就知道自己交付到什么程度才算合格,而不是把安全需求写得“云里雾里”最后变成验收死角。

还有一个容易被忽略的点是,TARA结果应该作为安全开发流程的动态输入持续更新。源代码在变更、通信协议在调整、外部供应商在替换,原来的风险假设可能很快就失效了。项目越往开发后期走,TARA更新的频率越要高,否则最后渗透测试暴露的问题往往能追溯到某个早期版本里已经被识别但没被跟踪的风险场景。

5. 实战中的教训:几类高频踩坑场景和应对经验

做汽车网络安全风险评估这些年,踩过的坑和见过别人踩的坑都不少。下面挑几类高频问题,结合我自己的处理经验,给同行提个醒。

5.1 资产清单只覆盖了车端节点,把云端和应用层架空了

太多团队做资产识别时把注意力全放在ECU、传感器、网关、T-Box这些车端硬件上,云端平台、手机App、App后台管理系统全都一笔带过。但现实里,云端往往是攻击成本最低的入口,一个未授权访问的API接口可比逆向汽车固件容易利用多了。应对方式是资产识别阶段强制要求云平台团队和应用开发团队深度参与,并且明确要求把云上每个服务组件都拉进资产清单,即使它不在车端。

在组织评估时,我经常把云服务拆分成接入层、业务层、数据层、运维层四类再分别做威胁识别。接入层的重点是网关鉴权、限流;业务层的重点是越权和逻辑绕过;数据层重点是脱敏和存储安全;运维层重点是后台账号和堡垒机管控。这样一层一层过,基本不会漏掉主要攻击面。

5.2 影响评级全员打高分,最后所有风险都是Critical

这是评审会上最棘手的情况。一旦所有威胁场景的影响值都打成最高分,整个排序就失效了,开发团队不知道先处理什么,安全团队也丧失了话语权。这个现象的根源在于,很多人习惯把“可能影响安全”等同于“一定会影响安全”,在评级时把极端场景当平均场景。

我的应对方法是给每个威胁场景定义“前置触发条件”。只有当攻击者的操作确实能越过前置条件并成功实施时,才按对应严重度评级。例如“自动驾驶模式下恶意控制转向”的场景,如果转向控制需要同时绕过网关路由表限制和至少两个ECU的签名校验,那么影响评级就不能直接套“完全失控”的最高等级,而要结合攻击链实际能达到的危害面来评估。这个约束条件写在评估记录里,后续别人复查也能有据可依。

5.3 攻击路径分析变成“攻击难度分析”,用“很难做到”掩盖风险

有些评审专家天然倾向于低估攻击者的能力,凡是需要专用设备、需要拆解车辆、需要知道内部协议的,都会被标成“几乎不可行”。这种思路的危险在于,低估攻击能力往往导致高风险的威胁场景被压成中低风险,最后没人治理。真实世界里,攻击者从不遵守开发者的假设,他们会收购二手设备、会研究拆解贴、会在暗网买数据,攻击资源远大于一个普通开发者的认知。

所以在可行度评估时,我会设定一个基准:只要攻击在理论上可达,且攻击链路涉及远程入口,就不能仅凭“难度大”判定为不可行。在攻击可行度评审表里加一行“是否需要物理接触远程入口?”,如果答案是远程可达,可行度至少需要提升一档。这条经验救过我好几次,有个项目就是靠这条硬规则保住了对国家级攻击者利用远程诊断接口长驱直入场景的关注,后来渗透测试确实发现接口存在弱认证问题。

5.4 TARA报告写完就没下文,安全需求无人跟踪

这个问题比其他任何技术问题都致命。评估报告如果只停留在纸面,就算条条都写得很专业,也很难真正提升产品安全水平。我通常要求每个高和极高级别风险场景必须关联到对应的安全需求,并且需求状态进入项目管理系统跟踪。每周项目例会过一遍风险剩余情况。

有些时候开发团队会以“工时排不上”为由拖延安全需求。此时最好和最有效的推动方式就是把安全缺陷跟量产节点的红线标准绑定。功能安全上有SIL、ASIL等级要求,网络安全也应当预先定义风险接受准则:高风险场景必须在哪个里程碑前清零,不允许带着高风险进入量产冻结。如果评估体系无法倒逼开发进度,评估团队很快就会被视为“写文档的”,丧失实际影响力。

5.5 忽略供应链风险评估,自研部分安全但供应商组件全线裸奔

汽车行业的特点是供应链长且复杂,一辆车的软件组件可能来自几十家供应商。此前我在某个项目排查时发现,车机中一个供应商提供的蓝牙协议栈固件存在位于常用端口上的调试服务,而这部分组件自始至终没被纳入TARA的资产范围。如果只评估自研ECU和云端服务,整车的网络安全边界就是千疮百孔。

应对方法是把供应商组件清单拉出来,让其提供资产清单和已完成的TARA结果;如果供应商能力不足,必须在合同中约定对其负责组件进行QNX级别或AUTOSAR级别的安全评估,主机厂保留对结果进行抽审的权利。别图省事把这一块完全信任给采购,网络安全这种事,最后法务和安全责任是在主机厂这边的。

最后的几点心得

关于汽车网络安全风险评估,我自己最深的体会是:它的价值不在流程本身,而在让团队系统性思考攻击面,思考攻击者凭什么攻击自己开发的东西,以及如何把这种底层威胁意识转化成工程决策。评估过程有时候很枯燥,一场评估会开下来满脑子都是威胁场景,但一旦某条攻击路径在真实渗透测试中被验证,你会觉得前期所有投入都值得。

如果要做跨团队推广,建议从一个小而典型的功能开始做一轮示例评估,把它做成团队内部的学习案例。这个案例会让其他工程师真正理解TARA的含义,知道输出去向何方,知道评估结果如何影响自己的开发工作。相比拿一堆方法论模板去强行灌输,一个鲜活的案例的传播效率和执行效果高很多倍。

最后想建议的是,别等到架构冻结或者量产前夕才启动风险评估。越早做,架构调整成本越低,安全设计也能越平滑地嵌进去。哪怕团队现在连一个完整的安全组织都没有,先把Item Definition和资产列表搭起来,就已经是很大的一步了。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询