尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

车联网安全实战:攻击面分析与纵深防御体系落地

车联网安全实战:攻击面分析与纵深防御体系落地 这期继续聊车联网安全。上一期我们把车联网安全的合规框架和基本概念过了一遍这次换个视角直接从项目实操的角度切入。2026年上半年我密集参与了几款量产车型的安全方案设计、渗透测试和问题整改从T-Box到中央网关从云端API到手机App整体走了一遍之后有个很深的感受车联网安全真正难的不是某一个技术点而是怎么把安全这两个字从PPT上的理念落成每一行配置、每一条规则、每一次应急响应。这期就把这段时间攒下来的干货整理出来重点是攻击面分析、纵深防御搭建、关键参数选择以及我们在项目里踩过的坑。无论你是车联网安全工程师、整车厂的电子电气架构师还是准备入行做车端安全的开发者这期内容应该都能帮你少走不少弯路。1. 车联网安全到底在防什么1.1 整车架构演进把安全战场搬到了哪里现在量产车的电子电气架构已经和五年前完全不是一回事了。早年一辆车几十个ECU各自为政CAN总线广播一下信号安全边界基本在同物理隔离的车内网络。现在主流车型都是域集中架构智能座舱域、智驾域、车身域、动力域通过车载以太网连成一个内部高速网络再通过T-Box、网关往外接云端和手机App。更激进的车型已经开始往中央计算加区域控制的架构走一颗SoC跑着座舱加智驾几个区域控制器负责IO和配电。这种架构的好处是算力集中了、线束减少了、OTA升级方便了但代价是攻击面急剧扩大。一辆车的软件代码量从几千万行涨到上亿行大量第三方SDK、开源组件被塞进来每一个组件都可能成为攻击链上的一环。所以我一直跟团队强调一句话安全不是跟着功能走的是跟着数据流走的。只要有一条数据通路从外部世界进到车内网络它就必须被当成潜在的攻击路径来对待。过去大家习惯盯着CAN总线看觉得那是老生常谈但真正的薄弱环节往往在你看不见的地方。1.2 四大攻击路径别只盯着CAN总线从我接触过的实际渗透测试项目和公开的安全事件来看车联网的攻击路径可以大致归成四条线。第一条是车端入口。包括OBD诊断口、蓝牙、WiFi、NFC数字钥匙、USB口、手机App与车机的通信链路。OBD口是最经典的一条路物理接触就能接入CAN网络很多老车型的网关对OBD口完全没有设防。蓝牙和WiFi通常是攻击者优先尝试的软柿子因为很多车机的蓝牙配对逻辑、WiFi热点认证做得比较粗糙。数字钥匙技术这两年越来越普及UWB相对难搞但BLE中继攻击仍然是现实威胁。第二条是管端链路。车和云端之间的通信、V2X侧链路、蜂窝网络接入。这条路的攻击方式比较传统就是中间人、重放、协议解析、伪造服务器。难点不在加密本身而在密钥管理如果私钥不是放在安全硬件里而是写在文件系统里TLS建得再漂亮也形同虚设。第三条是云端平台。车联网云端的API网关、用户账号体系、车辆管理后台、大数据平台全是攻击者喜欢的猎物。我做过很多车联网项目的云端安全评估说实话很多车企自研的云端平台安全水位远低于互联网公司。鉴权缺失、越权访问、参数校验不严、敏感信息明文存储这些问题在车企云端真的是屡见不鲜。第四条是供应链这个最容易被低估。车载信息娱乐系统里集成了大量第三方公司提供的导航、语音助手、音乐、应用商店SDK每一层都可能被投毒或预留后门。还有OTA升级包如果签名机制不完善伪造升级包直接往车上灌后果不堪设想。攻击面典型入口高危后果车端OBD、蓝牙、WiFi、数字钥匙、USB控制车窗门锁、篡改仪表显示管端车云通信、V2X、蜂窝网络指令劫持、数据篡改、中间人云端API、用户系统、运维后台批量控制车辆、用户数据泄露供应链第三方SDK、OTA升级包后门植入、系统被全盘控制1.3 一次远程攻击推演看懂完整危害链光列攻击面太抽象我拿一个做场景推演时经常用的例子来拆解。假设攻击者先在某款第三方车控App的开发者工具包里植入了恶意代码这个工具包是很多后装市场App公用的SDK下载量不小。攻击者通过这个SDK拿到了一批用户的手机端控车凭证接着用这些凭证去调车联网云端的远程控制接口。因为云端API网关的鉴权逻辑只校验了token有效性没有做设备指纹绑定和异常行为风控攻击者成功把一批车辆的车门解锁指令下发下去了。这条链路上每一环都踩中了一个典型漏洞供应链投毒、云端鉴权薄弱、车端指令校验缺失。如果我们在云端做了设备指纹绑定和异地登录检测在车端做了指令来源校验和防重放保护攻击链在第一环或者第二环就能断掉。所以我常说车联网安全的本质不是防某一种攻击而是对整条数据通路做分层设防让攻击者即使突破一道防线也走不到最后一步。2. 纵深防御体系怎么搭才不会变成纸面安全2.1 设计思路从单点防护到全链路可信做车联网安全方案最忌讳的就是单点思维。比如买了HSM安全芯片就觉得万事大吉上了TLS就觉得通信安全了。真实的情况是任何单点防护都可能被绕过安全必须是一套体系。我比较推崇的思路可以概括成三个可信身份可信、数据可信、行为可信。身份可信是车、云、App、用户四者之间要有可靠的认证关系。车要验证云端是真的云端App要验证用户是真的车主云端要验证这辆车确实属于这个用户。这个靠证书体系、绑定关系、设备指纹共同完成。数据可信是数据在传输和存储过程中不被篡改、不被重放。车云通信要靠加密通道加消息级签名车内CAN报文要防止伪造和重放云端数据库里的用户数据要加密存储。行为可信是即使上述防线都被绕过系统还能通过行为特征发现异常。正常车主不会在凌晨三点连续调用一百次远程解锁接口正常车辆不会同时在北京和上海通过两个IP地址登录。行为层面的异常检测是纵深防御的兜底网。这三层思路说穿了并不复杂真正难的是每一层怎么落地。2.2 车端防护的四个必须项启动、硬件、权限、日志车端安全是整条防护链的地基。我们做量产项目时车端部分至少会覆盖四个模块。第一个是安全启动。上电后ROM代码先验证Bootloader签名Bootloader再验证内核和系统镜像的签名每一级验签通过才继续执行失败就停止启动或进入恢复模式。签名算法一般用ECC P-256或RSA-2048量产用的签名私钥必须封存在HSM里。另外一定要做A/B分区双系统备份否则OTA升级过程中断电变砖用户会发疯的。第二个是硬件安全模块也就是HSM。密钥全生命周期在HSM内部生成、存储、使用永不以明文形式出现在Flash或内存里。HSM还提供硬件真随机数发生器、对称和非对称加解密加速。选型时看准车规等级、支持的算法、是否支持国密加速别只看算力。第三个是系统权限收敛。车机系统里该去掉的服务一律去掉ADB调试口量产必须关闭OTA升级、诊断服务必须做鉴权。UDS诊断这一块很多人只在应用层做了个解锁口令就以为安全了这是远远不够的。诊断会话控制要结合安全访问等级、白名单、速率限制一起用。第四个是安全日志。车端日志要实现防篡改、防删除关键事件必须留痕。出事之后没有日志安全团队就只能干瞪眼。2.3 车云通信信道光有TLS还不够车云通信这一环节很多人一听就是上TLS但实际做下来坑非常多。首先TLS协议版本要锁定在1.31.2的旧版本尽可能别用。其次必须是双向认证云端要验证车的身份车也要验证云端的身份只做单向认证等于把车的信任边界完全交给CA体系现实里CA被攻击、证书被滥用的案例并不少。第三车的私钥要存放在HSM里TLS握手中的签名操作要调HSM完成不能把私钥读到普通内存里算。在国内做量产项目还要考虑国密算法的支持。SM2用于非对称加密和签名SM3用于哈希SM4用于对称加密。很多T-Box的安全芯片本身支持国密硬件加速配置好就没问题。就算TLS做好了也只是保证了传输链路的安全API接口层的安全同样不能忽略。车联网云端API经常出现的问题是越权比如车主A通过篡改车辆ID就能控制车主B的车。所以云端每个接口都必须做细粒度的授权校验而不仅仅是认证通过就放行。配合限流、参数校验、网关层面的风控策略才能在链路加密之上再加一层应用安全。2.4 云端和车端要联动安全运营不是买工具纵深防御还有一个很容易被忽略的部分安全运营。很多车企搞了一堆安全产品SIEM、SOC平台、EDR、流量审计买的时候雄心勃勃用起来全是告警没人看。安全能力的最后一公里是人流程不是纯工具。我们的做法是先在车端做好日志采集和上抛定义好哪些事件必须上报比如安全启动失败、证书校验异常、诊断请求异常频率、恶意流量特征这几类事件是安全运营中心的输入。云端安全运营平台做关联分析和告警汇总成可操作的任务分配给值班工程师。告警闭环至少要有三步确认事件是否真实评估影响范围采取处置动作。处置动作可以是远程吊销证书、冻结账号、云端下发指令阻断某项服务甚至通过OTA紧急更新安全策略。我在一个项目里处理过一辆车被误报的告警原因是某条规则的白名单没配好值班团队根据误报做了半天研判。所以安全运营中心建起来之后第一件事不是测攻击而是先调规则降噪把误报率压下来再谈检测能力。3. 关键能力落地的实操细节与参数选择3.1 安全芯片选型与T-Box集成要点T-Box是车联网通信的核心节点也是云端和车内网络的边界网关安全芯片选型直接决定整车的安全底座。选型时我们主要看四个维度。第一是车规等级AEC-Q100 Grade 2起步要求高的用Grade 1甚至Grade 0这关系到芯片在极端工作温度下的可靠性。第二是算法支持常见的安全芯片支持ECC、RSA、AES额外需要确认是否支持国密SM2/SM3/SM4的硬件加速。第三是安全存储容量要能装下证书、根密钥、设备密钥容量太小会导致证书轮换困难。第四是量产供货能力这个最容易被忽略方案再好产能跟不上也是白搭。集成流程上生产阶段的密钥灌装是重灾区。我曾经见过一个项目为了赶生产进度把量产私钥预置在测试工装里测试工装本身没有加密保护。正确的做法是密钥在HSM内生成私钥不出HSM公钥证书通过安全的生产管理系统灌入设备且整个灌装过程要有审计记录。HSM必须支持远程配置管理以便后续进行密钥轮换和证书更新。T-Box集成时还要注意与网关、座舱域的信任关系确保各域之间的通信是有鉴权的而不是T-Box做了安全其他域裸奔。3.2 车端证书的吊销离线状态下的难点与对策车端证书管理是整个车联网安全体系里最容易做砸的部分。很多人把PKI方案写在设计文档里很完善等到量产实际运行时才发现车机离线了证书过期了升级也升不了只能返厂刷写。证书层级一般建议根CA加一个中间签发CA车辆设备证书由签发CA签发。根证书有效期可以做十年签发CA五到八年设备证书则建议一年一换甚至半年短期证书能有效限制攻击者窃取后的利用窗口。下发流程是车上HSM生成密钥对CSR请求发给签发服务CA验签后签发设备证书通过OTA或者工厂产线写入。关键点是证书绑定车辆唯一标识和硬件指纹防止一台车的证书被拷到另一台车上用。吊销是一个大难题。传统互联网的OCSP/CRL模式依赖在线状态车内网络经常离线不可能每次都在线查证书状态。我的建议是车端维护一个离线吊销列表白名单定时增量同步同时把设备证书有效期缩短被盗证书的自然过期时间尽量控制在半年内。如果出现严重安全事件云端主动下发吊销指令车端验证指令签名后执行本地证书删除和密钥废弃。这条指令通道本身就是敏感通道必须做额外的消息签名保护和防重放。3.3 通信加密与CAN报文防伪的实现车云通信加密我直接给一份可以参考的配置。使用TLS 1.3密钥交换使用ECDHE签名算法用ECDSA P-256如果要求国密则全链路用SM2/SM3/SM4套件。T-Box端的私钥来自HSMTLS握手中的签名操作必须调HSM的PKCS接口完成。下面的伪代码展示了TLS握手完成后数据报文的签名与验签流程# 车端发送签名数据报文简化伪代码 message build_control_message(actiondoor_unlock, vehicle_idVIN123, timestampts, noncerandom_bytes(16)) signature hsm_sign(private_key_id0x01, algorithmSM2/SHA256, datamessage) packet message signature send_to_cloud(packet) # 云端验签 packet receive_from_vehicle() message, signature split(packet) ok verify_signature(public_certvehicle_cert, signaturesignature, datamessage, algorithmSM2/SHA256) if ok and check_replay_window(message.nonce): execute_command(message.action)车内CAN报文防伪目前业界标准方案是SecOCAUTOSAR制定的安全车载通信规范。原理不难理解发送方对PDU做认证码计算通常使用AES-128-CMAC取前4到8字节作为MAC附加在报文里接收方收到后重新计算MAC做比对不一致就丢弃同时带新鲜度值Freshness Value来抗重放。参数上我们量产项目通常用AES-128-CMACMAC截取8字节新鲜度值采用计数器加时间戳组合的方式计数器每个报文递增周期同步问题用DSRC或者带时间同步的以太网解决。开启SecOC后CAN总线会有额外开销通常要控制在负载率80%以内所以不是所有报文都需要加安全机制。高安全等级的控制类报文比如制动、转向、车速相关信号必须覆盖。娱乐系统的信号负载实在高了可以适当放宽安全与工程要做平衡。3.4 车端入侵检测的规则编写与调优车端入侵检测就是把NIDS/NIPS的思路搬到车里。部署位置一般选中央网关和域控制器监听CAN和车载以太网流量。我写下几条实际项目中会用到的规则来举例子。第一条是周期报文丢失检测ABS、EPS等安全关键信号的周期报文有固定发送间隔如果连续三次没收到立刻告警并切换降级策略。第二条是未知CAN ID检测CAN ID白名单之外的任何报文都能说明有不该出现在总线上的东西在发消息这是最基础的异常信号。第三条是诊断请求异常频率检测比如短时间收到超过20次扫描类型诊断请求大概率是有人在进行批量探测。第四条是UDS安全访问连续失败检测三次以上连续失败尝试就应该触发防御机制。调优方面我给所有人的建议都是先做影子模式让IDS只记录告警不上报跑一到两个星期积累基线数据。然后再根据真实告警量调整阈值把误报率降下来。常见误报原因无非这几类下线检测和产线设备的合法请求、维护模式的诊断工具、跨域通信中新增了合法信号但白名单没同步更新。等到告警稳定了再逐步切到主动阻断模式。4. 项目落地中的坑与排查实录4.1 高频问题速查表这些是车联网安全项目中反复出现的问题整理成速查表方便参考。现象可能原因处理方案OTA升级后T-Box掉线证书轮换后新旧证书未平滑过渡预埋双证书CAS切换窗口安全启动偶尔失败验签超时或公钥配置错误检查信任锚增加签名验签超时重试CAN报文被大量丢弃SecOC新鲜度窗口配置过小扩大新鲜度值同步窗口微调MAC长度云端告警刷屏IDS规则误报影子模式收集基线白名单化合法流量车辆被盗刷远程控制App侧凭证泄露或云端越权设备指纹绑定、异常登录风控、指令二次验证诊断工具无法连车机安全访问等级过高导致误锁区分产线模式和用户模式产线使用独立证书认证4.2 两个典型案例的完整排查过程第一个案例是OTA升级后T-Box频繁掉线。初步检查网络没问题云端能看到车辆登录日志但经常握手成功以后马上断开。抓包之后发现TLS握手阶段客户端发来的证书已经过期了而云端配的CRL在线检查又因为车载网络偶尔中断导致超时。根因是证书轮换策略没做平滑过渡新证书下发之前旧证书就已经过期了。解决方法是三管齐下。第一云端证书签发前强制校验车辆上报的当前有效证书保证新证书签发窗口内旧证书仍有效。第二车端预埋一张备用证书自动检测证书即将过期的时候提前发起签发请求。第三云端CRL检查改成异步缓存模式离线时使用最近一次同步的缓存结果不因CRL不可用而拒绝服务。改完以后这个问题的复发率基本降到零。第二个案例是开启SecOC之后CAN总线负载率飙升。上线测试时发现总线负载率从正常的不到50%直接飙到近90%压得动力域报文延迟到了不可接受的程度。排查下来发现我们给车身控制域的每个周期性报文都加了8字节MAC再加8字节新鲜度值对于几百个周期报文来说每轮都加16字节开销负载率直接就炸了。调整方案是对报文做安全等级分类刹车、油门、转向等安全关键信号保持8字节MAC加32位递增新鲜度值。车窗、车灯、空调这类舒适性信号降为4字节MAC加简单时间戳频率低的报警类信号甚至直接不做SecOC。经过这一轮调整负载率降到了70%左右安全关键信号的保护一步没退。4.3 验证防护体系有没有效从测试到复盘方案做完了怎么证明它有用我的经验是测试不要只做一次形式主义的渗透测试就完事。至少要有三条路径并行推进。第一条是自动化合规扫描和源码审计把已知漏洞库、开源组件漏洞扫描工具接进CI/CD流水线每次代码变更都自动跑一遍。第二条是渗透测试和Fuzz测试渗透测试要针对车端、云端、App三条线分别做Fuzz的重点放在CAN协议栈、车载以太网应用层和T-Box的远程通信接口上。Fuzz测试跑挂过不少系统但每次都能带出一批真实问题。第三条是对照ISO/SAE 21434做流程合规性验证具体来说就是看威胁分析与风险评估文档是否和实际架构一致安全需求有没有真正落到设计里测试报告和整改记录是否闭环。每次安全事件处理完之后团队内部要做一次复盘把攻击路径、防御缺口、响应时效、协同问题全部讲清楚落到整改项。车联网安全的本质从来不是追求绝对免疫而是保证在被攻击的时候能发现、能阻断、能恢复。加了这么多防护措施最终目标也还是让攻击成本大于攻击收益。有一个细节我特别想提醒大家验证阶段一定要在实车上跑不要只在台架或者仿真环境里测。仿真环境里很多时间敏感型攻击的效果显现不出来比如CAN总线压力测试、紧急场景下的响应延迟只有实际跑起来才知道边界在哪里。5. 最后聊聊我的个人体会车联网安全干久了我越来越觉得安全观这三个字比任何技术细节都重要。很多人一上来就问用哪个方案买哪家的盒子其实方案只是工具箱更重要的是想清楚你的车、你的云端、你的供应链各自最怕什么。安全的本质是风险管理不是消灭所有漏洞这根本做不到而是要让每一个漏洞都有人负责、有响应流程、有修复时限。最后分享一个我们在团队里坚持了很久的小技巧每次应急响应结束后不管大小都要求写一段如果下周再发生一次的复盘。这个复盘不是总结过去而是推演下一次攻击者会用不同的方式打进来然后针对这个假设去加固。车联网攻击者也在迭代防守的人只能跑得更快一点。这套方法论听起来朴素但确实带着我们躲过了好几次被动的局面。
返回列表