登录 | 注册 退出 投稿

车辆网络安全的未来(中):安全编码、安全测试及安全生产

专栏作者 2023-01-12

内容提要:在本文中我们将针对车辆开发中实施安全编码的要点与安全测试及制造阶段的安全措施进行分析。


《车辆网络安全的未来》专题连载共分为“上、中、下”三个部分。此文为该连载系列的“中”部分,在上部分中我们已经了解了车辆开发中的威胁分析、风险评估和安全设计、漏洞分析等具体方法内容。那么,在本文中我们将针对车辆开发中实施安全编码的要点与安全测试及制造阶段的安全措施进行分析。

5、车辆开发中实施安全编码的要点

根据概念阶段的威胁和风险评估、开发阶段的安全设计、漏洞分析和措施实施活动所产生的设计文档,考察软件实施阶段应执行的“安全编码”。

安全编码是指“编写能够抵御网络攻击的强大程序”。在该专题连载的“上部分”的第4章的最后,我们讨论了“设计阶段的漏洞”和“实现阶段的漏洞”,安全编码是一种解决“实现阶段的漏洞”的措施。

这是“产品开发阶段”中“软件级”最具体的活动,“软件级”是该专题“上部分”第1章图表1所示的ISO/SAE 21434的七个要素之一。

安全编码的重要性

安全编码之所以如此重要,是因为即使您对“设计阶段的漏洞”采取了措施,但由于安全编码不完善而导致的“实施阶段的漏洞”可能会导致严重的损害。例如,缓冲区溢出和SQL注入等漏洞可能导致第三方执行非预期的代码,这是“实现过程中出现的漏洞”的典型示例。

此外,作为软件整体的漏洞,与“设计阶段发生的漏洞”相比,“实施阶段发生的漏洞”被报告得更多,从漏洞的“数量”的角度来看也是很重要的。

安全编码的具体任务

图10列出了安全编码的具体工作。在进行编码工作之前,应根据项目的特点(如产品处理的信息和功能的重要性、成本、交货时间等)制定总体规划。

图10.png

图10:安全编码的具体操作

※1同行审查:角色和职业种类相同(或相近)的人,验证成果物以谋求改善的品质保证方法。

※2规定了CERT-C/C++约300项规则。

※3 MISTRA-C/C++:以汽车的功能安全为目的而制作的C/C++语言用的编码指南。

安全编码挑战和解决方案

许多组织使用一些静态分析工具来验证源代码级别的程序稳定性,但一个很大的挑战是“检测到的问题太多,无法应对”和“仅判断工具是否误报就很困难”。

为了解决这个问题,一般的软件开发往往会根据静态分析工具所表现出的重要性(如Critical/High或Moderate/Low)做出相应的反应。例如,在可能的情况下,对Critical/High问题进行修复或风险分析,然后接受风险,而不对Moderate/Low问题进行错误检测。

另一方面,在汽车行业,如果没有修复静态分析工具检测到的问题,即使是静态分析工具将重要度判定为低的问题也可能会发生危及生命的损害,因此很难根据静态分析工具显示的重要度等自动决定应对措施。

那么,在汽车软件开发中,如何解决?

我们给客户的解决方案是“解决工具检测到的所有问题”,因此“考虑应对所有问题的措施”。这里的“应对”是指“判定为误检测”或“修正”。

重点是“尽可能不放原本就脆弱的代码”和“有计划地应对工具检测到的问题”。

为此,具体措施有以下几点:

•实施安全编码教育

•在开发阶段早期运行静态分析工具

•自动执行静态分析工具,包括将静态分析工具纳入CI工具*4

※4 CI(Continuous Integration)工具:为了持续实施源代码的构建(可执行文件和发行程序包的制作处理)和测试的工具。通过将静态分析工具与Jenkins等具有自动构建功能的工具相结合,可以在自动构建时执行静态分析。

6、车辆开发中的安全测试

本章介绍“安全测试”,这是对已实施车辆/车载产品的测试阶段措施。

按目标分类的安全测试

安全测试主要包括漏洞诊断和渗透测试两个概念。

漏洞诊断

如上一章所述,安全工作按概念阶段,开发阶段和实施阶段进行,每个阶段都执行威胁分析,并基于这些分析结果进行安全设计和安全编码。通过这种方式,漏洞诊断就是一种测试,它可以确定上游过程中的潜在威胁措施是否按预期正确执行。由于这些特性,漏洞诊断可以创建一个检查表等,因为它预先明确了假定的威胁及其措施,并提供了对其全面性的某些解释。

渗透试验

渗透测试是确定攻击实现的目标,并为实现目标而进行攻击(评估)的测试。

渗透测试并不要求全面性,它的目的是查明是否可以实现“在特定ECU(电子控制单元)上执行任意代码”等目的,如果不能,它将达到什么程度的目标,以及不能实现目标的原因是什么。由于渗透测试是在不考虑上游过程中的各种努力的情况下进行的,因此可以有效地揭示上游过程中没有想到的威胁,即上游过程中的遗漏。换句话说,在渗透测试中执行的每个测试项目也可能是漏洞诊断中的一个项目。

这就像全球攻击者为了实现目标而采取一切措施,而不考虑制造企业的安全措施一样,意味着从攻击者的角度进行评估。

如图11所示,漏洞诊断和渗透测试的思想是不同的,不是一个包含另一个。对所有产品进行全部安全测试在成本上是不现实的,因此选择要执行的项目是非常重要的。根据产品型号、与相似型号的功能差异等。

图11.png

图11:漏洞诊断和渗透测试概述

每个测试对象的安全测试观点

漏洞诊断和渗透测试都包括硬件测试和软件测试。

硬件安全测试

对硬件的测试有几个级别,一个是对产品提供的标准外部接口的测试。例如,以太网端口(LAN端口),网络接口(如Wi-Fi和蓝牙),外部设备接口(如USB端口),媒体输入(如CD/DVD),以及机箱上的按钮。这些界面是用户可以使用的标准界面,也是最容易测试的界面,因为它们在手册等中有说明,但如果不知道内部规范,则可能会进行无意义的测试,因此是一个很难有效测试的区域。

下一个可能的项目是拆卸外壳,并对内部印刷电路板进行研究和分析。例如,使用的各种芯片的类型和用途,是否有丝印和内容,是否有调试端口,以及检查和分析出厂前使用针脚的痕迹等。

这样的调查和分析对于进行产品规格的推定是有益的,另外,如果能够发现和确定调试端口等,其本身这是一个很大的风险,而且可以为开发人员获取内部信息,这将有助于进行后续测试。此外,如果这些分析确定了存储具有通信功能的芯片,则可以测试是否可以从这些芯片中提取固件,以及是否可以对提取的固件进行分析。

软件安全测试

对软件的测试与对硬件的测试有几个级别。最基本的测试包括使用提供给用户的用户界面(UI),以确保绕过安全功能或执行有安全风险的操作。此外,如果提供了连接到网络的接口,则可以检查不需要的服务是否启动,运行的软件是否存在已知的漏洞,如果存在,则可以进行实际攻击,并确认是否可以进行攻击。

如果在不了解这些测试的内部规格的情况下进行外部测试,则可能会导致盲目测试,从而增加有效测试的难度。因此,您可能需要分析在硬件测试过程中提取的固件,以确定内部规格,然后测试软件。图12提供了硬件和软件测试的示例。

图12.png

图12:硬件和软件测试示例

安全测试在整个安全开发生命周期中的地位

这些测试是作为漏洞诊断还是渗透测试进行的,取决于在上游过程中涉及的威胁的程度,假设的威胁的程度,以及采取的措施的程度和方式。换句话说,为了确认针对上游工程中设想的威胁的对策的充足状况执行的是漏洞诊断,而执行的是渗透测试,以确认最初设想的充分性和有效性。

因此,安全测试不应仅在测试阶段就实施政策和内容进行审查,而应根据整个开发过程的努力来制定。

7、制造阶段的安全措施

我们的重点是设计,实施,测试和产品开发中的安全活动。本章不讨论产品本身的安全性,而是讨论完成产品所必需的生产阶段所需的安全性活动。

制造阶段安全活动的必要性

到目前为止,尽管制造工厂使用自己的网络和控制系统设施,但恶意软件和其他安全损害仍然存在。此外,近年来,类似智能工厂的物联网化发展,各种设备连接到制造工厂的网络中。此外,系统本身越来越多地使用通用操作系统和应用程序。这些环境的变化导致了更大的安全风险,例如成为恶意软件的目标。

此外,随着车辆连接到网络,加密技术的应用得到了扩展,如通信加密和消息认证。受此影响,越来越多的电子控制单元(ECU)必须将在加密技术中扮演重要角色的加密密钥存储在内部。制造工厂必须严格控制这一加密密钥,并始终保证不会泄露或篡改。

此外,它与ISO/SAE 21434这一国际标准同样重要,并有望在今后成为法律“Draft Recommendation on Cyber Security of the Task Force on Cyber Security and Over-the-air issues of UNECE WP.29 GRVA”在开发的整个生命周期(包括制造阶段)中都要求实施CSMS*1,因此,今后根据法律和国际标准,在制造工厂开展安全活动是必须的。

因此,由于工厂物联网化,车辆功能的发展,法律和国际标准等各个方面,在制造阶段开展安全活动的必要性日益增加。

※1 CSMS(Cyber Security Management System):以工业用自动化及控制系统为对象的安全管理体系。

制造工厂的每个设施都需要哪些安全措施

到目前为止,工厂的生产设施很少与外部网络相连,这可能导致一些安全措施执行不到位。如果将这些设备直接连接到外部网络,则安全强度较低的生产设备将成为攻击目标。由于整个网络都面临安全隐患,因此每个生产设施和网络都需要采取安全措施。

但是,如果将所有设备都安全地放在同一级别,工作量和成本将会很大。因此,通过隔离网络,使用防火墙等控制网络之间的连接,并对每个设施实施必要的安全措施,实现有效的安全管理(见图13)。

图13.png

图13:关键系统访问控制示例

加密密钥管理系统需要更严格的措施

被称为加密密钥的数据用于通信加密,消息认证等(见图14)。该加密密钥一旦被攻击者非法获取,将导致破解加密通信和冒充车辆,因此必须在生产设备和车辆内进行安全保管等严格管理。

由于假设每种车型或每辆车辆使用不同的密码密钥,此时需要一个管理系统来绑定和管理密码密钥与车辆或设备,并将密码密钥写入设备中。如前所述,加密密钥一旦泄漏,将对车辆造成严重影响,因此处理加密密钥的系统必须确保比普通生产设备更高的安全强度。

密钥管理系统的安全措施示例

•物理安全增强功能,包括服务器机房管理

•使用多因素认证等增强系统访问控制

•HSM*2加密密钥管理

•增强的系统日志监控功能与密钥管理相关

因此,密钥管理系统需要更强大的安全保护措施。在同一网络上混合存在现有系统和密钥管理系统的环境中,如果不将它们全部设置为相同的安全级别,则会对安全级别最低的系统进行攻击,从而危及同一网络上的密钥管理系统。因此,必须执行上述网络隔离和访问控制,以确保每个系统都具有足够的安全配置。

※2 HSM(Hardware Security Module):用于在数据中心等处保管加密密钥等重要数据的安全硬件。

图14.png

图表14:加密过程概述

更多内容,请关注“车辆网络安全的未来(下):发货后的安全措施与安全保护要求”,关注牛喀网,学习更多汽车科技。有兴趣的朋友,可以添加牛小喀微信:NewCarRen,加入专家社群参与讨论。



作者:牛喀网专栏作者
牛喀网文章,未经授权不得转载!


下一篇: 车辆网络安全的未来(下):出厂后的安全措施与防护要求
上一篇: 车辆网络安全的未来(上):车辆开发中的威胁分析、风险评估和安全设计、漏洞分析
相关文章
返回顶部小火箭