一、事件概述
2022年,斯柯达和大众汽车被曝出存在一系列安全漏洞,这一事件引起了广泛关注。据估算,这些漏洞可能涉及超过 140 万辆汽车,涵盖斯柯达速派 III(Skoda Superb III)、斯柯达柯珞克(Skoda Karoq)、斯柯达柯迪亚克(Skoda Kodiaq)、大众 Arteon、大众途观(VW Tiguan)、大众帕萨特(VW Passat)、大众 T - Roc、大众 T - Cross、大众 Polo、大众高尔夫(VW Golf)等众多车型。
二、漏洞详情与技术分析
(一)信息娱乐单元漏洞
- SWD调试接口问题
- 在信息娱乐单元的 IVI PCB 上的电源控制器芯片(PWC)中存在 SWD 调试接口。该接口虽有写保护措施,但攻击者可通过擦除内存内容后重新编程的方式突破限制,获取调试权限。例如,若写保护是基于简单的软件加密算法,攻击者可能通过逆向工程分析出算法漏洞,发送特定指令擦除存储写保护密钥的内存区域,进而重新编写该区域内容,使写保护失效。此漏洞最早在 2022 年生产的斯柯达速派 III(3V3) - 2.0 TDI 车型检测中被发现端倪。
- 硬编码密码漏洞
- PWC 芯片的 UART 接口存在硬编码密码,这使得攻击者能够解锁调试控制台,从而访问 PWC 固件更新功能,可随意读取和修改内存内容。这就如同为攻击者提供了一把“万能钥匙”,使其能够深入系统核心区域,可能获取车辆的各种配置参数、用户隐私数据等敏感信息,如修改车辆速度限制参数或窃取车主的联系人信息、导航记录等。在后续深入研究中,逐步明确了该硬编码密码漏洞的存在及潜在危害范围。
- UDS服务密码问题
- UDS 认证环节存在弱编码密码和硬编码密码问题。攻击者可通过 OBD 端口获取密码,成功通过认证后就能发送诊断命令。这意味着攻击者可以对车辆的一些关键系统进行操控,严重威胁车辆的安全与正常运行。相关研究在发现 SWD 调试接口问题后,进一步挖掘出了 UDS 服务密码方面的隐患,时间大约在 2022 年下半年到 2023 年初。
- 拒绝服务漏洞
- 苹果 CarPlay 服务和 ECU 重置服务存在漏洞,可被利用导致信息娱乐单元拒绝服务。攻击者可通过向 CarPlay 连接时发送特定请求,或者向 OBD 端口发送广播 UDS 消息使车辆组件重置,甚至导致发动机熄火,系统离线。这不仅影响用户的正常使用,还可能在车辆行驶过程中引发危险状况。在 2023 年对车辆整体漏洞梳理过程中,该拒绝服务漏洞被详细分析和记录。
(二)后端漏洞
- 云后端存在两个安全问题,攻击者可凭借车辆 VIN 号获取用户昵称(CVE - 2023 - 28900)和行程数据(CVE - 2023 - 28901),包括里程、行程时长、平均和最大速度等信息。这对用户隐私构成了严重侵犯,也可能被不法分子用于其他恶意目的,如精准的车辆盗窃或诈骗活动。此漏洞在 2022 年开始被关注,到 2023 年确定了具体的 CVE 编号并被广泛知晓。
三、大众和斯柯达的反应
大众集团在 2023 年通过网络安全披露计划得知漏洞后,积极采取措施修补了相关漏洞。斯柯达发言人 Tom Drechsler 表示,公司在 2022 年漏洞被报告后,便开始通过“持续改进管理”解决这些问题,并强调任何时候都不会对客户安全或车辆构成危险。斯柯达称信息娱乐系统中报告的漏洞已经并正在通过对产品生命周期的持续改进管理加以解决和消除,同时坚称客户或车辆的安全从未受到任何威胁。尽管两家公司都有应对举措,但此次事件仍暴露出在汽车软件安全防护方面的不足。
四、软件系统设计应注意的问题及启示
(一)调试接口安全
- 访问控制严格化
- 在软件系统设计初期,对于 SWD 调试接口等内部接口,应构建多层次的访问控制体系。不能仅仅依赖单一的写保护手段,而应结合身份验证、授权和加密访问通道等多种方式。例如,采用生物识别技术与密码认证相结合的身份验证方式,只有经过授权且通过双重认证的人员或设备才能访问调试接口,并且在访问过程中,数据传输应通过加密通道,防止信息被窃取或篡改。
- 接口隐藏与防护
- 尽可能将调试接口隐藏在不易被发现的位置或环境中。若在开发和维护过程中必须使用调试接口,可设置专门的安全模式,如在特定的硬件连接或软件指令序列下才能开启调试接口,且使用完毕后立即自动关闭,减少被攻击的风险窗口。
(二)密码管理
- 避免硬编码密码
- 软件系统设计时,严禁使用硬编码密码。无论是在芯片的 UART 接口还是 UDS 认证环节,密码应采用安全的存储方式,如利用硬件安全模块(HSM)进行加密存储,并在运行时通过安全的密钥管理系统进行解密和验证。同时,定期更新密码策略,采用复杂的密码生成算法,增加密码的强度和破解难度。
- 密码强度提升
- 对于认证密码,应遵循严格的强度标准。采用多因素认证方式,如结合密码、指纹、动态验证码等,降低因单一密码泄露导致的安全风险。并且,定期对密码进行评估和更新,及时发现和修复可能存在的弱密码问题。
(三)服务安全设计
- UDS服务安全增强
- 在设计 UDS 服务时,应采用强大的认证机制。摒弃简单易破的认证方式,采用基于公钥基础设施(PKI)的认证体系,为每个设备和用户颁发数字证书,通过证书验证来确保只有授权的设备和用户能够访问和发送诊断命令。同时,对 UDS 服务的输入数据进行严格的格式、范围和合法性验证,防止恶意构造的输入导致系统异常或安全漏洞。
- 服务输入验证
- 对于所有接受外部输入的服务接口,尤其是通过 OBD 端口接收命令的服务,必须进行全面的输入验证。建立完善的输入过滤机制,对输入数据进行深度检测,包括数据的类型、长度、取值范围等,确保输入数据符合预期的规范。例如,对于车速相关的指令输入,应限制在车辆设计的合理速度范围内,防止攻击者通过输入异常数据操控车辆。
(四)网络服务安全
- Wi - Fi服务安全加固
- 针对车载 Wi - Fi 网络,应采用高强度的加密标准,如 WPA3 或更高级别的加密协议,防止外部攻击者通过网络连接获取系统访问权限。同时,部署入侵检测系统(IDS)和入侵防范系统(IPS),对网络流量进行实时监测和过滤,及时发现和阻止恶意攻击流量,如防止 DDoS 攻击导致车载网络瘫痪。
- 入侵检测系统应具备深度包检测功能,能够对网络数据包的头部、内容等进行详细分析,识别出异常的数据包特征,例如畸形的数据包结构、异常的协议使用等。同时,要能够检测到常见的攻击模式,如端口扫描、恶意脚本注入等,并及时发出警报。
- 入侵防范系统要能够根据入侵检测系统的警报,自动采取阻断措施,如切断可疑的网络连接、阻止特定 IP 地址的访问等,并且能够与车辆的其他安全系统协同工作,例如在检测到网络攻击时,通知车辆控制系统进入安全模式,限制一些非关键功能的使用,以保障车辆的基本行驶安全。
- 后端服务安全
- 在设计与车辆连接的云后端服务时,应着重保障用户数据的安全。采用严格的用户认证和授权机制,如多因素身份验证、基于角色的访问控制(RBAC)等,确保只有合法用户能够访问特定的数据。对用户数据进行加密存储和传输,采用先进的加密算法,如 AES - 256 等,防止数据在存储和传输过程中被窃取或篡改。并且,定期进行安全审计,及时发现和修复可能存在的安全漏洞,保障用户数据的完整性和保密性。
(五)系统健壮性设计
- 防止拒绝服务攻击
- 在软件系统设计过程中,应充分考虑系统的健壮性,特别是针对可能的拒绝服务攻击。对于像 CarPlay 服务和 ECU 重置服务等功能,应设置输入流量限制,如限制单位时间内的连接请求数量;进行异常请求检测,通过机器学习算法或规则库识别异常的请求模式;并建立服务熔断机制,当检测到异常攻击时,自动切断相关服务,防止恶意请求导致系统瘫痪,同时保障系统其他关键功能的正常运行。
- 组件通信安全
- 车辆内部各个组件之间的通信应采用安全的通信协议,如基于 SSL/TLS 的通信协议,对通信数据进行加密和完整性验证,防止中间人攻击或恶意篡改。建立通信监控机制,实时监测组件之间的通信状态,及时发现和处理通信故障或安全事件,确保系统的稳定运行。
此次斯柯达和大众汽车的安全漏洞事件为整个汽车行业敲响了警钟。在汽车软件系统日益复杂和智能化的今天,软件系统设计的安全性至关重要。汽车制造商和相关软件开发者必须从各个环节入手,加强安全防护措施,确保车辆软件系统的安全稳定运行,保护用户的生命财产安全和隐私权益。