ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

ISO/SAE 21434:汽车网络安全全生命周期风险管理与落地

ISO/SAE 21434:汽车网络安全全生命周期风险管理与落地

从智能网联汽车真正跑起来的那一天起,车载网络安全就不再是“可选项”了。过去我们维护一台车,最怕的是发动机故障灯亮、线束磨损、电池亏电;现在一台车上有上百个ECU、几千万行代码、车联网通信、OTA升级、蓝牙钥匙、远程控车,攻击者不需要拆你的车门,只需要找一个网络入口就能做文章。而ISO/SAE 21434这个标准,就是专门针对“汽车全生命周期的网络安全工程”给出的一套流程框架和风险方法论。它解决的核心问题是:怎么在车辆从概念设计到报废退役的每个阶段,都系统性地识别网络安全风险,并把风险控制在可接受范围内。

这篇文章写给三类人:一类是刚接手汽车网络安全工作的工程师,需要快速搞懂21434到底在要求什么;一类是OEM和Tier 1的研发管理者,需要在项目里落地这套流程;还有一类是安全测试、渗透测试的从业者,想把自己的技术能力和合规体系建设对接起来。我不会对着标准条文一条条翻译,而是按我自己的理解,把21434的底层逻辑、核心框架和落地时最容易踩的坑讲清楚。

1. 为什么会有ISO/SAE 21434:一场由攻击面扩张引发的流程革命

1.1 汽车不再是封闭的铁盒子

先说一个最直观的背景。传统汽车在没有网联化之前,是一个物理隔离系统。你要入侵一辆车,必须物理接触它,拆开内饰、找到OBD接口、用诊断仪往里灌数据。这种攻击门槛极高,普通黑客根本玩不起。但今天的情况完全不同,一辆乘用车至少有3~5个远程通信入口,4G/5G T-Box、Wi-Fi热点、蓝牙钥匙、NFC卡片、甚至车载导航的GPS信号都能成为攻击入口。

我在2020年参与过一个整车渗透测试项目,测试团队没有动任何螺丝刀,只用一台笔记本电脑和一个软件无线电设备,就通过蓝牙协议重放攻击打开了车门锁。后来OEM紧急下线了那批试装车。这个例子说明一个残酷的事实:现代汽车的攻击面已经从物理层扩展到了无线通信层、云端服务层、应用生态层,而且攻击路径往往不是一个单点漏洞,而是多个脆弱点组合起来形成的链路。

攻击面扩张不只是增加了几个入口,更关键的是改变了汽车产品的事故模型。ISO 26262功能安全处理的是随机硬件失效和系统性失效,比如传感器失灵、内存翻转,这是“无意的故障”;而网络安全面对的是“有意的破坏”,攻击者会根据你的防护策略动态调整攻击手法。你焊死了OBD接口的调试端口,他就去攻T-Box的蜂窝通信;你加密了CAN总线,他就去攻云端OTA服务器。这种对抗性决定了你不能仅仅依赖某几个安全技术点来解决问题,必须有一套能够覆盖全产品生命周期的流程体系来持续应对。

1.2 法规倒逼标准化:UN R155和21434的绑定关系

很多工程师不理解为什么非要搞21434,觉得“我们做好渗透测试、做好加密不就行了吗”。答案在于法规。2021年生效的联合国欧洲经济委员会UN R155法规,是全球第一部强制性的汽车网络安全法规,它对车辆制造商提出了明确的网络安全管理体系(CSMS)要求,以及整车批量认证中的网络类型审批要求。

UN R155规定:如果你的产品要进入欧盟、日韩等签约国市场,OEM必须持有有效的CSMS认证证书,而且在售车型必须通过网络安全型式认证。但UN R155只是一部法规,它规定的是“你要达到什么目标”,没有告诉你“具体怎么做到”。ISO/SAE 21434作为一项国际标准,恰恰提供了实现UN R155要求的一套具体工程方法。

它和ISO 26262的关系也值得说清楚。ISO 26262管的是功能安全,强调“避免因系统故障导致人身伤害”;ISO/SAE 21434管的是网络安全,强调“防止因外部攻击导致人身伤害、财产损失和隐私泄露”。两者在概念阶段、系统开发、硬件软件验证、生产发布等环节有大量交集,在工程实践里不能割裂去做。小到一条CAN信号的完整性设计,大到自动驾驶域控制器的算力冗余,安全需求和网络安全需求经常是同时提出的。

1.3 标准的核心定位:它是一本流程手册,不是安全技术指南

我刚接触21434的时候犯过一个理解偏差,潜意识里把它当作了一本“安全配置手册”,以为读完就能知道用AES-256还是RSA-2048、用HSM还是软件白盒。读完全文之后我意识到,21434本质上是一本“工程管理手册”,它大量篇幅讨论的是:风险管理怎么组织、网络安全活动怎么规划、供应商如何管理、漏洞如何处理、安全证据链怎么留档。标准本身刻意没有限定具体技术方案,因为技术会快速演进,而风险管理框架可以长期稳定存在。

这个定位决定了你的落地策略:如果你的团队还没有规范的安全开发生命周期,21434可以给你一套搭建体系的骨架;如果你已经有了比较成熟的安全测试流程,21434能帮你把这些零散的活动串成一条完整的证据链。标准里有大量“应(shall)”和“宜(should)”的措辞,应字是强制要求,宜字是推荐做法,在做差距分析的时候,一定要先把这两种要求分开列出来。

2. 标准的核心骨架:风险驱动、全生命周期覆盖

2.1 全生命周期覆盖到底意味着什么

ISO/SAE 21434把汽车网络安全活动横切成了几个阶段:概念阶段、产品开发阶段、生产阶段、运维和监控阶段、退役阶段。每个阶段都有对应的网络安全活动和交付物。

概念阶段要做的事情是威胁分析与风险评估(TARA)、网络安全概念(Cybersecurity Concept)设计;开发阶段要做安全需求分解、安全架构设计、安全实现和验证;生产阶段要确保产品按安全配置制造,防止生产环境本身引入恶意固件或泄漏敏感数据;运维阶段要做网络安全监控、漏洞管理、OTA安全更新、事件响应;退役阶段要处理数据擦除和残余风险。

这套“全生命周期”的理念,说起来容易做起来难。难在什么地方?难在它要求你有一种长期主义的成本意识。很多企业做安全,只盯着交付节点前的那一轮渗透测试,测试通过了就觉得万事大吉。但实际上车辆的网络安全风险会随着时间推移不断变化,三年前设计的车联网网关,在面对今天的攻击手法时可能已经千疮百孔。所以21434特别强调持续监控和漏洞管理,它不是让你交付一台“永远安全”的车——没有这种车,它是让你建立一套持续发现、评估、响应、处置安全问题的机制。

2.2 TARA:整本标准中最核心的方法论

TARA(Threat Analysis and Risk Assessment,威胁分析与风险评估)是21434中出镜率最高的概念,也几乎是所有汽车安全工程师在实际工作中最先接触的工具。很多面试人员都会聊TARA,但我发现不少人对TARA的理解停留在“走个过场、填个表格”的层面。真正要做合格的TARA,需要走完以下闭环。

第一步是资产识别。别急着找威胁,先把系统里值得保护的东西列出来。在整车网络安全语境下,资产不只是一个ECU硬件,还包括数据资产(车辆VIN、定位信息、用户隐私、加密密钥)、功能资产(刹车控制、转向控制、远程控车、OTA刷写)、甚至品牌信誉。做资产识别的时候要有一种“坏人视角”,问自己一个问题:攻击者拿到这个东西,能干什么坏事?如果答不上来,说明资产定义还不够具体。

第二步是威胁场景分析。威胁场景描述的是攻击者可能怎么做、会产生什么后果。比如“攻击者通过远程漏洞获取T-Box root权限,进而控制车身舒适域CAN网络”。这一步通常借助伤害场景来倒推,先定义损害场景(导致乘员受伤、车辆失控、数据泄露、财产损失),再反向推导能够触发这些损害场景的威胁场景。标准本身没有规定必须用什么方法学来生成威胁场景,STRIDE模型在汽车领域用得比较普遍,但不强制。

第三步是影响评级和攻击可行性分析。影响评级(Impact)要分别评估四个维度:安全(S)、财务(F)、运营(O)、隐私(P),每个维度1~4分。安全维度权重最高,因为车坏了可以再买,人没了什么都完了。攻击可行性(Attack Feasibility)通常从攻击所需时间、专业技能、知识技术、攻击窗口、设备条件五个维度打分。标准提供了两种评估路径:基于攻击向量的方法和基于CVSS的方法,后者在IT系统中很常见,但用在汽车上需要注意调整,因为车载攻击路径和IT系统差异很大。

第四步是风险值计算。风险值通常是影响评级和攻击可行性评级的组合。风险矩阵会用不同颜色区分等级:绿色可接受、黄色需要评审、橙色需要减轻、红色不可接受。对不可接受的风险,需要制定网络安全需求,引入缓解措施,然后重新评估残余风险。这样一轮走完,才算完成了一个真正有意义的TARA。

2.3 网络安全案例:每一步都要留证据

21434引入了“网络安全案例”(Cybersecurity Case)的概念,做安全工作的工程师如果没接触过航空航天或功能安全,对这个词可能比较陌生。通俗地说,网络安全案例就是把所有的网络安全活动记录、决策依据、测试报告、评审结论串起来,形成一套完整的、可审计的证据集合。

为什么要搞这个?因为监管机构和审核方不可能把你每一个开发决策再重新推演一遍,他们需要通过审查证据链来判断你的开发过程是否可信。你说你做了安全测试,那测试计划呢、测试用例呢、缺陷跟踪记录呢、回归验证报告呢?你说你做了供应链安全审查,那供应商的安全评估问卷呢、改进计划呢?这些文档不是用来给审核员看的摆设,而是你证明“产品网络安全风险已被合理管理”的唯一抓手。

我参与过一个真实的认证项目,OEM的工程师技术上非常强,但他们的流程文档严重缺失,很多安全设计决策都只存在负责人的脑子里。审核顾问提出想看看某个安全需求的追溯关系,结果翻遍文件系统只找到一份半年前的会议纪要。最后团队花了两个月补材料,工期损失惨重。这件事给我的教训是:安全工作做得再漂亮,如果没有形成记录,在合规视角下就等于没做。

3. 落地实操:从0到1搭建符合21434的网络安全开发流程

3.1 第一步:差距分析,先知道自己缺什么

落地21434的第一步不是招人,也不是买工具,而是做一轮完整的差距分析(Gap Analysis)。这一步的目标是拿标准里的每一条要求,对照你现在的流程、文档、团队能力,逐一检查“有还是没有”“做得好还是做得差”“证据是否留存”。输出是一份差距清单,每条差距后面要标注对应标准条款、当前状态、缺失内容、责任人和必须完成的截止时间。

我在实际操作中会先把21434的章节结构制成一张检查表,按四大块展开:组织级网络安全管理(包括网络安全治理、工具能力、信息共享、供应商管理)、项目级网络安全活动(包括TARA、安全概念、安全开发、安全验证、生产安全)、分布式开发(供应链安全相关)、持续维护与事件响应(包括漏洞管理、监控、响应、退役)。这张表不需要一开始特别精细,但必须保证没有遗漏大项。

差距分析还要注意尺度的把握。完全套标准逐条对照,一个中型OEM会有上百条差距,这会让管理层直接失去信心。比较好的做法是把差距分成三个优先级:第一优先级是跟法规证书强相关的硬性要求,比如CSMS体系建设、TARA能力、漏洞管理机制;第二优先级是影响产品安全质量的核心活动,比如安全需求追溯、安全测试覆盖率、渗透测试;第三优先级是锦上添花的优化项,比如安全自动化工具有效性、内部红队建设。先集中资源啃掉第一优先级,再逐步推进。

3.2 第二步:搭组织,明确角色和职责

21434对组织层面的要求往往被低估,很多人以为“选几个工程师去学习一下标准就行”。实际落地时,组织架构是最难推动的环节,因为安全职责一旦分摊到每个研发人员身上,就会变成“人人有责但人人不管”。我的经验是,最小可行团队至少要包含以下角色:

  • 网络安全经理:负责整个组织的网络安全管理体系运转、对接外部审核和监管机构、协调跨部门资源;
  • 网络安全架构师:负责产品网络安全架构设计、安全需求评审、TARA结果审核、技术决策;
  • TARA工程师:负责具体项目的威胁分析与风险评估,输出风险分析报告;
  • 安全验证与测试工程师:负责安全验证策略、渗透测试、模糊测试、安全代码审计;
  • 漏洞管理专员:负责漏洞接收、评估、处置、发布安全公告、跟踪补丁闭环。

对于中小团队,一个工程师可以同时兼任两个角色,但有一点必须避免:同一个人既执行某个安全活动又审核这个活动。独立性原则是审核信任的基础,你自己测出来的结果自己签字认可,这在认证审核中属于重大不符合项。

3.3 第三步:TARA在真实项目中的执行细节

以我参与过的一个智能座舱域控制器项目为例。项目背景是一款面向海外的SUV,搭载高通SA8155P芯片,系统为Android Automotive,功能包括车载娱乐、导航、语音助手、蓝牙手机互联和OTA升级。

资产识别这一步,我们列出来的典型资产包括:用户账户凭证、蓝牙配对密钥、Wi-Fi配置数据、车辆网络接口(以太网/CAN)、OTA升级包、调试接口(ADB、串口)、语音助手数据(可能涉及隐私)、第三方APP生态。这个清单看起来简单,但每一条后面都跟着一长串数据流分析。

威胁场景我们用了STRIDE辅助生成,同时结合行业公开的汽车安全事件库。举一个典型的分析结果:威胁场景“攻击者通过恶意APP申请过多权限,读取车主的通讯录和位置信息,并悄悄上传到远程服务器”。影响评级上,隐私维度是4分(涉及个人敏感信息批量泄露),安全维度1分(不直接影响驾控),财务维度2分,运营维度1分。攻击可行性方面,考虑到Android平台的沙箱机制和权限管理门槛,攻击者需要先成功诱导用户安装恶意APP并授权,综合可行度评级给到2分。最后风险值落在中等偏高区间,处置决策是:在车载APP侧增加权限收敛策略、对高敏感权限申请强制二次确认、对上传数据流做合规审查和加密传输。

这个例子想说明的是:TARA不是纯粹的技术研究,而是结合产品特点、用户使用场景、已知威胁情报做的一套多维度决策分析。做好一次TARA的关键在于对系统的理解深度,而不在于表格模板有多花哨。如果工程师连系统里跑哪些数据、走哪条链路、存在谁的存储空间都没搞清楚,TARA必然流于形式。

3.4 第四步:把安全活动嵌入现有开发流程

新建一套“安全流程”很容易做成两张皮,研发团队照样按自己的节奏开发,安全文档只是后补交付。要避免这个问题,必须把安全活动嵌入现有开发流程的每一个门节点。

我的做法是把安全活动绑进三个固定检查点:概念冻结前必须完成初始TARA和安全概念草案;设计冻结前必须完成详细TARA和安全需求冻结;量产签发前必须完成安全验证测试和残余风险评估。每一个检查点设置“门槛条件(Exit Criteria)”,没有满足门槛条件的项目不允许进入下一阶段。

举个例子,量产签发检查点我们要求必须提交以下文档包:最终TARA报告、安全需求追溯矩阵(从威胁场景到安全需求到测试用例)、渗透测试报告(包含漏洞清单和修复验证记录)、生产安全配置审查记录、供应链网络安全评估报告。如果任何一个文档缺失或内容不达标,质量评审会直接红灯。先说断后不乱,这个机制比事后问责高效得多。

3.5 供应链安全:整条链都必须合规

21434对供应链管理有专门章节,这是很多OEM容易忽视的重灾区。一辆车里有几百个零部件,每个零部件供应商都可能引入网络安全风险。如果你是OEM,不能只要求Tier 1符合21434,还要要求Tier 1对Tier 2、Tier 3提出同样的要求,层层传导。

实操中我会在供应商合同中以附件形式明确网络安全要求,包含但不限于:供应商需要建立符合21434的网络安全开发流程、按约定的TARA方法提供风险评估报告、上报已知漏洞和事件、配合整车网络安全测试、提供软件物料清单和漏洞修复承诺。同时要对供应商做分级管理:对涉及远程通信、网关、制动、转向、动力域的高风险供应商,每年至少做一次现场或远程安全能力审核;对低风险供应商可以做问卷加文档抽审。

供应链管理最容易出现的问题就是信息不对称。供应商说自己的产品“安全”,但又不肯透露具体的安全设计方案和漏洞历史;OEM想验证但又缺乏有效的技术手段。所以一定要在项目早期就把网络安全要求写进技术协议,而不是后期发现问题再补条款,那时候你的议价能力已经不在了。

4. 标准落地过程中踩过的坑与常见问题记录

4.1 把21434当成“渗透测试标准”去执行

这是我在很多企业里见过的最普遍的理解偏差。有人觉得我做几轮渗透测试,把漏洞修完,就等于符合21434了。事实远非如此,渗透测试只是验证阶段的一个环节,它的价值是发现你安全策略中的具体缺口,但根本不能替代系统性的风险分析、需求定义和架构设计。

如果整个项目只做了渗透测试而没有做TARA、没有定义安全需求、没有安全架构评审、没有供应链审查,那么渗透测试报告上的“通过”就缺乏根基。评审专家大概率会问一个让你无法回答的问题:你是依据什么标准判断这些漏洞是一定需要修复的?没有风险分析作为依据,漏洞优先级判断就变成了拍脑袋。

4.2 TARA被做成“项目初期的形式任务”

TARA最忌讳做成一次性活动。我在多个项目中看到一种现象:概念阶段大家坐在一起开两周的TARA工作坊,产出几份漂亮的报告,然后所有人就把报告存在共享盘里再也没打开过,后续开发完全按原有逻辑推进。

后来在项目复盘里,我们找到的问题很典型:TARA做早了,那时候的架构方案还是一张纸,资产清单和数据流描述得模模糊糊,做出来的威胁场景根本没法指导后续设计;等到系统真正定型后,又没有人回头更新TARA,结果就是文档归文档、代码归代码。

正确做法是把TARA当成一个动态文档,至少要在概念阶段、详细设计阶段、集成测试阶段各刷新一轮。每一轮刷新不一定要全部重做,只对架构变化、新增功能、漏洞情报中受影响的部分做增量更新。失败模式不是“更新太多次”,而是“一次都不更新”。

4.3 工具选型的迷思:Excel到底行不行

经常有人问我做TARA需不需要买商业工具,我的回答是:先看你团队规模和项目复杂度。如果你的团队只有3~5个人、一年做2~3个项目、资产清单不复杂,那Excel加一个内部模板完全够用,关键是模版里定义的字段要齐全。标准中建议的风险值计算可以手动编写公式实现。别一上来就上重型平台,把大量时间花在录入数据上,反而冲淡了分析价值。

如果团队超过15个人、项目数量多、需要跨部门协同审核、需要跟供应商共享数据,那确实应该考虑专业工具。现在市场上常见的汽车网络安全平台通常覆盖了TARA管理、安全需求管理、漏洞管理、案例证据管理等功能,能把全生命周期的数据链条串起来,减少很多重复劳动。选型时重点关注易用性和数据导入导出是否方便,再好看的驾驶舱报表也比不上能不能方便导出评审材料这个基础能力。

4.4 敏捷开发模式下如何执行21434

传统车规开发遵循V模型,每个阶段有清晰的交付物,TARA这类安全活动有天然的嵌入位置。但现在很多新势力车企和软件团队走的是敏捷迭代路线,两周一个Sprint,需求频繁变化,功能每季度上线,你再要求“设计冻结前必须完成TARA”就不现实了。

我们的实践是采用“轻量级增量TARA”模式。第一次迭代先做一次基于核心架构的高层TARA,识别出高风险领域和关键安全需求;后续每个迭代只对增量功能做小范围威胁分析,输入是本次迭代的用户故事和架构变更点,输出是一页纸的风险评审记录。同时预留一个“安全缓冲迭代”,每3~4个版本迭代结束时投入一个Sprint对累积变更做整合性TARA刷新。这套模式运行下来,安全活动的成本被摊薄到每次迭代里,团队接受度也高出很多。

4.5 文档体系搭建的几个实用技巧

做21434落地,文档体系是个绕不开的大工程。我踩过的坑里,最严重的一个是:团队成员产出文档之后,没有统一的命名规范和存储结构,导致审核时找一份报告要翻三个网盘。后来我强制统一了一套命名规则:文档类型_项目代号_版本号_日期,比如“TARA_ModelX_V1.3_20250120”。存储库按标准章节结构分层,引用关系全部用追溯矩阵维护,这样才能支撑审计追踪。

另一个实用技巧是“文档即代码”思维。安全需求和测试用例不要只用Word维护,尽量放在需求管理工具或项目管理工具中,跟开发需求放同一个系统里,保持关联关系。这样需求变更时,安全需求受影响的情况能够被自动追踪到,而不是在评审会上靠人眼核对。

5. 一些高频疑问速查和实操提醒

问:TARA风险等级分成几档比较合适?

答:我建议最少三档、最多五档。三档就是“可接受、需评审、不可接受”,五档可以细化成“可接受、低、中、高、不可接受”。档位太多会导致评审资源被大量琐碎风险占据,档位太少又拉不开差距,不利于排优先级。

问:21434和GDPR数据隐私要求是什么关系?

答:有交集但不完全重叠。GDPR从隐私法规角度保护个人数据,21434从网络安全角度保护系统和数据安全。车内的用户生物数据、位置数据、通讯录都属于两个法规的共同关注区域。实操上,TARA的隐私维度评级要参考GDPR对敏感数据的分类,数据泄露事件的响应流程也要和GDPR的通知要求对齐。

问:第三方组件漏洞怎么管理?

答:至少两件事必须做。第一,建立软件物料清单,对所有开源组件和第三方商业库建档,记录版本和已知漏洞;第二,订阅漏洞情报源,对高危漏洞建立72小时内部评估机制,判断是否影响整车安全,并决定是否需要OTA修复或召回。不要觉得自己用的是封闭系统就不会被供应链漏洞波及,这几年全球范围因供应链组件漏洞导致汽车被远程攻击的案例已经不少了。

问:没有海外出口计划,还需要做21434吗?

答:即使当前只做国内市场,我也建议你按21434的思路搭建流程。一方面国内汽车网络安全相关标准在向国际标准对齐,趋势已经非常明确;另一方面,21434提供的风险管理方法本身就比“出事再补救”的模式高效得多,站在工程质量管理角度也值得采用。

最后再分享一个我反复提到但总是被忽略的观点:21434里提到的很多安全活动,比如威胁建模、渗透测试、漏洞管理,其实团队里多多少少都有人在做了。你缺的不是“做事”,而是“建立闭环”——把零散的安全活动串成一条有输入、有输出、有反馈、有决策记录的完整链条。把闭环建起来之后,你会发现做安全不再是一堆薛定谔的任务,而是每个项目都能回答清楚的几个问题:我们保护什么、面临什么威胁、风险有多高、做了什么决策、效果如何验证。这个思维方式的转变,比读多少遍标准条文都重要。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进