摘要
为了保护现代车辆免受安全攻击,新标准(例如ISO/SAE 21434)和法规(例如UN R155)要求在开发流程中进行安全测试活动。为此,通常使用渗透测试,这是一种手动执行的、基于经验的探索性测试方法。由于现代车辆的高度复杂性,手动渗透测试方法已达到极限。因此,潜在的漏洞可能会被忽视,从而留在车辆中。如果发生安全攻击,这可能会危及乘客和道路交通参与者。到目前为止,渗透测试被认为难以自动化,因为它是一种基于经验的方法。本文提出了一种基于模型的方法,旨在弥补这一差距。我们的方法利用对车辆现有安全攻击的知识来自动化安全测试流程。我们将攻击数据库(361次攻击,包含621个攻击步骤)应用于形式化安全模型,以自动得出测试的攻击路径。我们还提出了一个建议,说明如何将这种方法用来基于渗透测试人员的知识和经验得出攻击路径。
1.简介
近年来,车辆的复杂性不断增加,汽车安全攻击数量不断增加,导致汽车安全成为工业和研究领域的重中之重。由于这一趋势,ISO/SAE 21434和UN R155相继发布。这两份文件都要求汽车制造商在车辆的开发和生命周期内遵守特定的安全流程。除了执行威胁分析和风险评估(TARA)以及推导安全需求和措施外,还重点关注安全性的验证和确认。后者通常在安全测试流程中进行。为此,ISO/SAE 21434特别建议执行渗透测试。
问题:渗透测试是一种基于经验的探索性方法,在开发后期进行。因此,车辆及其部件在那时已经开发完毕。因此,只能在后期识别潜在的漏洞。这种类型的测试通常由第三方以手动黑盒或灰盒测试的形式进行。现代车辆是高度复杂的系统,通常只有有限的时间可用于测试。因此,手动渗透测试在全面测试方面存在达到极限的风险。这意味着漏洞可能会被忽略或未被测试捕获,从而留在车辆中。
解决方案:为了应对这些挑战,我们提出了一种基于模型的方法,利用过去安全攻击和车辆渗透测试的知识和经验,自动生成攻击路径并用于安全测试。这允许在车辆开发中尽早执行测试活动。我们的方法可用于渗透测试的背景下,通过提供基于成功的真实攻击的攻击路径来系统地支持测试人员。这使得通过使用攻击和渗透测试的知识和经验能部分自动化安全测试流程。我们的方法可以进一步用于估计测试活动的工作量。
贡献:在本文中,我们提出了一种基于模型的安全测试方法。为此,我们基于过去的工作创建了车辆E/E架构的安全模型。通过应用我们的汽车攻击数据库,可以根据现实世界的攻击检查我们的模型是否存在可能的攻击路径,该数据库目前包含361种攻击(包含621个攻击步骤)。此外,这种方法使我们能够通过对数据库中现有的攻击步骤进行排列来找到新的攻击路径。我们还提出了一个建议,说明如何使用这种方法来捕获和重用渗透测试人员的经验,以实现安全测试流程的部分自动化。
本文的结构如下:在第2节中,我们描述了安全测试和基于模型的安全测试的基础知识。在第3节中,介绍了这项工作的方法和安全模型的创建。第4节展示了如何使用我们的攻击数据库自动从安全模型中得出攻击路径。第5节提出了一个建议,说明如何捕获和重用渗透测试人员的经验来自动生成攻击路径。第6节讨论了这种方法的可行性和挑战。在第7节中,我们得出结论并对未来工作进行展望。
2.背景和相关工作
在本节中,我们简要概述了安全测试和基于模型的安全测试及其在汽车环境中的应用。
A.安全测试
安全测试检查系统是否存在安全漏洞。这通常以两种方式完成。第一种方式涉及功能性或积极安全测试。这通常涉及测试功能性安全机制(例如,消息的加密和身份验证)以确保功能正确。这可以作为基于安全机制需求的传统测试流程的一部分来完成。第二种方式涉及非功能性和消极安全测试。这种类型的测试也称为安全漏洞测试,通常通过渗透测试执行。测试人员扮演攻击者的角色,并试图通过执行安全攻击来查找系统中的漏洞。渗透测试是一种基于经验的探索性测试方法。测试通常以黑盒(没有系统知识)或灰盒(部分系统知识)测试的形式执行。存在几种渗透测试标准以结构化的方式支持测试人员。例如渗透测试执行标准(PTES)和开放Web应用程序安全项目(OWASP)测试指南。对于汽车行业,可以应用汽车安全测试方法(ASTM)。
B.汽车领域的安全测试
2021年,ISO/SAE 21434和UN R155针对汽车行业发布。这些文件要求在车辆的整个开发和生命周期中都应解决网络安全问题。关于安全测试,ISO/SAE 21434特别提出了执行功能测试、漏洞扫描、模糊测试和渗透测试。这些测试技术在汽车系统中的应用已成为最近几篇出版物的主题。有研究人员分析了上述测试方法,并展示了基于特定汽车技术(例如控制器局域网(CAN))或协议(例如统一诊断服务(UDS))的潜在用例。Smith提供了有关车辆渗透测试的完整指南。其中详细解释了针对总线和诊断协议、无线通信系统、电子控制单元(ECU)等的各种攻击技术。进一步的标准和出版物建议考虑对渗透测试进行威胁建模。
C.汽车领域基于模型的安全测试
基于模型的测试可以实现测试流程的早期测试和自动化。为此,定义了一个被测系统(SUT),它通常表示为形式化模型(例如,状态机)。通过应用测试选择标准(例如覆盖率标准),可以派生测试用例并在系统上执行。使用适当的工具,可以自动化此流程的许多部分。基于模型的安全测试将此流程与传统安全测试相结合。SUT的模型通过安全特定方面进行扩展,例如安全属性、风险值、漏洞或安全机制。生成的模型用于派生安全测试用例或攻击路径。
所提出的相关工作侧重于查找揭示系统漏洞的攻击或测试用例。这是以探索性的方式完成的,但也以系统、引导和基于模型的方式完成。作者使用有关系统及其功能的信息,并分析如何攻击/测试这些系统。相比之下,我们的方法基于形式化的车辆网络模型,该模型以通用方式指定。这允许应用各种不同的攻击。为此,我们将收集到的攻击者或安全测试人员的知识结合到一个包含成功的真实攻击的数据库中。这些是安全测试流程中分析和生成攻击路径的基础。
3.方法和建模流程
渗透测试是一种基于经验的测试方法,它利用攻击者的视角来破坏和测试系统。因此,有关安全攻击及其执行方式的知识是测试人员的重要信息来源。在本节中,我们将介绍一种基于模型的方法,利用攻击者和渗透测试人员的知识和经验自动生成安全测试的攻击路径。我们的方法及其总体流程如图1所示。首先,基于电气/电子(E/E)架构生成安全模型。由于我们的方法涵盖了安全测试,因此我们需要考虑E/E架构中所有对车辆网络安全有影响的实体。这尤其涉及ECU、传感器、执行器、软件应用程序、通信系统和接口。这些元素及其交互通过安全特定方面得到增强,以创建安全模型。通过应用我们的攻击数据库,可以根据成功的现实世界攻击分析模型以获得可能的攻击路径。此外,可以得出攻击路径并使其适应被测车辆。在以下章节中,我们将解释该流程,并进一步介绍如何根据渗透测试人员的经验实施此方法的细节。在第一步中,我们构建一个模型,该模型既代表车辆的网络架构,也代表特定于安全的属性。因此,我们以之前的工作为基础,其中我们引入了攻击者特权的概念。这些特权代表攻击者通过利用漏洞在系统中可以实现的抽象状态。因此,我们能够在模型中引入攻击路径。
我们区分了五种权限,如图2所示。读/写权限描述了攻击者在通信信道上读取和写入数据或消息的能力。通过获取执行权限,攻击者能够触发组件上实现的功能(例如,通过诊断功能控制执行器)。读取权限使攻击者能够从组件中提取数据或信息(例如,提取密钥)。写入权限描述了在组件上写入或更改数据的能力(例如,删除错误日志)。通过获取完全控制权限,攻击者可以完全控制组件(例如,通过使用恶意软件更新ECU)。如图2所示,所有五种权限都可以分配给车辆网络的元素。读/写权限只能分配给通信系统(例如,CAN或蓝牙)。其他四个权限分配给组件(例如,ECU或传感器)。如果攻击者获得了读/写权限(PL1,图2左),则如果利用了相应的漏洞,则可以从那里获取组件上的任何其他权限(PL2 - PL5)。在组件上,攻击者在利用漏洞时能够在权限PL2 - PL5之间切换。我们还假设攻击者一旦达到PL4或PL5就可以访问组件的通信接口。这将允许访问进一步连接的通信系统(PL1,图2右)。因此,将攻击者权限应用于车辆的整个E/E架构可以组成攻击者可以达到的权限链。由于成功利用漏洞是获得权限的必要条件,因此可以对车辆网络内的攻击路径进行建模。我们使用这种方法创建了一个基于车辆网络的形式化转换系统。该模型用于通过在威胁建模的背景下应用模型检查技术来自动生成攻击树。生成的攻击树包含一个关键的真实安全气囊漏洞。因此,我们可以证明我们的攻击者权限能够代表车辆网络中的关键攻击路径。在本文中,我们将这种方法应用于基于模型的安全测试方法中。为此,我们假设一个简单的E/E架构示例。
在此示例中,车载诊断(OBD)接口通过CAN总线(CAN 1)连接到中央网关(CGW)。CGW还连接到另一条CAN总线(CAN 2)。将攻击者特权应用于该网络将产生如图3所示的安全模型。图示的安全模型对应于我们用于形式化的扩展有限状态机(EFSM)的图形表示。对于两个CAN总线和OBD接口,为每个总线定义了一个状态,该状态分配读/写特权。对于CGW,定义了四个状态,它们对应于其余四个特权。为简单起见,这里不考虑安全机制。为了创建转换,假设攻击者或测试人员可以访问OBD接口并希望通过CGW访问内部车辆网络。为了对状态之间的转换进行建模,我们应用如图2所示的特权模型。这分别导致从状态1到状态2以及从状态2到状态3 -状态6的转换。它可以使用相应的转换在CGW的状态之间任意切换。这里唯一的例外是状态6,因为我们假设完全控制权限包括其他三个权限。最后,转换从状态5和状态6通向状态7,如图2所示。这里不再讨论图3中所示的EFSM的形式化描述。下一节将仅重新讨论转换的语法和语义,以解释我们基于攻击者行为和渗透测试人员经验生成攻击路径的概念。
图3.基于由OBD接口、中央网关(CGW)和两个CAN总线组成的E/E架构的安全模型
4.使用攻击数据库生成攻击路径
在本节中,我们将解释如何利用基于攻击数据库的攻击者行为从第3节中介绍的安全模型中得出攻击路径。首先,我们解释模型中的转换。一般来说,EFSM中的转换具有以下结构:
转换允许从源状态到目标状态的转换。当发生事件(例如,接收消息或输入)时,转换会被触发。此外,必须满足Guard条件(例如,消息具有匹配的标识符)才能发生状态更改。如果发生事件并且满足Guard条件,则状态将更改并触发输出操作(例如,发送确认)。我们使用这些语义来模拟安全模型中攻击(漏洞利用)的发生。这导致以下结构作为图3中转换t2的示例应用:
要从状态2(具有读/写权限的CAN 1)进入状态3(具有执行权限的CGW),攻击者必须使用基于导致此状态的漏洞的漏洞利用。现在的问题是,可以使用哪些漏洞利用和哪些漏洞以及如何描述它们。这就是我们的攻击数据库的应用,该数据库(截至2022年6月)包含361种已知的针对车辆的安全攻击。总体而言,这些攻击包含621个单独的攻击步骤。为了对这些攻击和步骤提供统一的描述,我们发布了攻击分类法并对我们的数据库进行了相应的分类。该分类法有不同的类别来描述攻击步骤,例如使用的工具、接口、攻击的简要描述、要求和限制等。对于本文中提出的安全模型的转换,图4中显示的分类法类别特别相关。对于每个数据库攻击步骤,都有一个组件和接口类别,用于指定受影响的组件(例如ECU、传感器或执行器)或接口(例如OBD或CAN接口)。此外,还给出了每个步骤所违反的安全属性和获得的攻击者特权。为了描述漏洞,我们使用了MITRE公司提供的通用弱点枚举(CWE)。CWE是一个系统的、分层分类的软件和硬件弱点列表,例如,国家漏洞数据库(NVD)也使用它。为了描述过渡漏洞,我们使用STRIDE分类。STRIDE将攻击分为欺骗、篡改、否认、信息泄露、拒绝服务和特权提升类别。
此外,我们使用通用攻击模式枚举和分类(CAPEC),它与CWE一样由MITRE提供。CAPEC为攻击模式(攻击技术/方法)提供了分层描述方案。这些与CWE元素有直接联系,可被相应的攻击模式利用。CAPEC的应用多种多样。目前,CAPEC提出了26种不同的用例。其中之一是使用攻击模式作为符合标准的指标。因此,CAPEC可用于遵守UN R155的汽车威胁。转换的所有元素都可以通过我们的攻击数据库的数据来描述。这允许将所有数据库攻击步骤应用于安全模型。因此,可以分析模型是否存在真实世界的攻击路径。原则上,这可以通过两种方式完成。一方面,可以检查是否找到了与数据库中描述完全相同的攻击路径。例如,如果一次攻击由四个攻击步骤组成,则可以分析这四个显式步骤及其顺序是否可以映射到模型中。另一方面,也可以在模型中搜索由几种不同攻击的攻击步骤组成的攻击路径。这使得我们能够根据现有攻击步骤的排列在我们的模型中找到新的攻击路径。
由于我们的安全模型基于形式化的EFSM,因此从模型创建到攻击路径的分析和生成的整个过程可以通过软件工具完全自动化。为此,必须提供车辆的E/E架构、实施的安全机制和攻击者特权。我们计划在未来的工作中创建这样的工具。这将允许以自动化的方式在模型级别进行攻击或漏洞分析(例如,通过采用搜索算法)。此外,可以得出被测车辆的具体攻击路径,可用于安全或渗透测试。
5.基于渗透测试人员经验的攻击路径生成
在上一节中,我们演示了如何使用来自攻击数据库的现有攻击来分析现有攻击路径的安全模型。在本节中,我们提出了一个建议,说明如何使用该流程根据渗透测试人员的经验得出攻击路径。由于渗透测试是基于经验和探索性的,因此很难实现自动化。主要问题是如何处理和获取测试人员的经验。测试人员通常通过在不同系统上执行几次渗透测试来获得经验。这可以积累有关哪些系统更有可能存在漏洞或哪些攻击技术更有可能成功的知识。例如,特定供应商的ECU可能更容易受到缓冲区溢出攻击。因此,在这种情况下,测试人员将首先尝试在对其他车辆的进一步测试中对该供应商的其他ECU执行缓冲区溢出攻击。这些积累的知识将在后续测试中再次使用,即测试人员首先根据他的经验尝试查找系统中的已知漏洞。为了获取这种经验,应首先再次检查上一节中的攻击数据库。该数据库收集了对车辆的成功安全攻击。这些攻击几乎完全是从攻击者的角度进行的,对车辆系统知之甚少,即使在由安全研究人员进行攻击的情况下也是如此。因此,攻击数据库可以看作是攻击者经验、行为和知识的集合。如果有一个包含成功渗透测试的数据库来代替或补充攻击数据库,则可以以相同的方式捕获渗透测试人员的经验和知识。例如,渗透测试供应商内的测试人员可以维护这样的数据库,以便以与攻击数据库相同的方式使用它(参见第4节)。可以通过多次渗透测试迭代创建该数据库。我们的想法受到研究人员描述的图形用户界面(GUI)应用程序测试中的捕获重放原理的启发。在这里,用户在GUI应用程序中手动输入的内容被记录并传输到测试脚本中。然后,这些可以重新用于新的自动化测试执行。图5针对我们的汽车用例说明了此流程。被测车辆的安全模型(参见第4节)可以在软件工具中提供给渗透测试人员。测试人员利用其经验,通过适当的测试、攻击等探索性地查找SUT中的漏洞。
然后,测试人员在模型中记录成功的攻击步骤,即在模型中选择利用的路径,并为每个攻击步骤指定相应的信息(例如,使用的特定攻击技术和利用的漏洞)。然后将成功的攻击路径传输到数据库。如果此流程在多个测试或不同的测试人员身上进行,则可以创建基于经验的渗透测试知识数据库。这可以在基于模型的测试方法(如上一节所述)和相关工具中使用,也可以在专家系统中使用,以支持渗透测试人员进行未来的测试。我们还看到这种方法对刚刚进入安全测试领域的新手有好处,因为他们可以从经验丰富的测试人员积累的知识中受益。
6.讨论
本节将讨论所提出的方法,以解决用例、当前挑战和局限性。为了从安全模型中得出攻击路径,只需要车辆的E/E架构和攻击/测试者数据库。因此,我们的方法可以在开发流程的早期阶段使用。这使得应用程序甚至可以在渗透测试之前使用,例如在集成和系统测试阶段。这样,可以在早期发现并消除潜在的漏洞。还可以将该流程链接到TARA,TARA是作为车辆开发的一部分进行的。原则上,TARA与此处显示的方法具有高度相似性,因为这两个流程都旨在识别威胁/漏洞和攻击路径。图2中解释的攻击者特权模型在TARA背景下的适用性已得到展示。但是,我们基于模型的安全测试方法针对的是测试流程。我们考虑了安全机制等方面,以及潜在漏洞的具体利用和车辆系统的详细技术特征。在执行TARA时,通常尚不可用这些详细信息。我们的方法面临的一个挑战是将存储在我们数据库中的攻击转移到新的车辆系统或网络架构。特别是,如果被测车辆的网络与已经受到攻击的车辆的网络有很大不同,则存在攻击路径不可转移的风险。可以通过组合/排列来自不同数据库攻击的攻击步骤来规避此问题。然而,最终的攻击路径是否真正揭示了车辆中的漏洞只能由测试人员确定。此外,我们想强调的是,进行进一步的测试活动是有意义的。一般来说,我们的方法可以看作是一种黑盒测试方法。即使我们拥有有关车辆E/E架构元素的详细信息,我们的安全模型也不会涵盖所有方面,例如软件代码。如果从我们的模型生成的攻击路径揭示了漏洞,我们只知道存在漏洞。这并不意味着已经知道了该漏洞的根本原因。因此,在这种情况下应该应用额外的灰盒或白盒测试方法来找到根本原因。最后,我们讨论如何评估我们的方法。我们已经能够证明通过将攻击者特权模型应用于车辆架构可以找到关键攻击路径。此外,我们在初步调查中能够确定,基于我们数据库中受攻击车辆的E/E架构的安全模型,包含新的攻击路径,这些攻击路径在现实中也被利用。在未来的工作中,这些调查应该扩展到详细的案例研究。
7.结论
本文展示了一种实现安全测试流程自动化的方法。特别是,我们提出了一个形式化的安全模型,可以根据来自我们攻击数据库的现有攻击分析可能的攻击路径。我们进一步展示了如何得出安全测试路径。此外,还提出了一项关于如何捕获和重用渗透测试人员的知识和经验来得出测试路径的建议。该方法旨在通过自动化安全测试流程的子流程(特别是测试规划和测试用例生成(攻击路径))来应对现代车辆日益复杂的问题。这使得早期系统分析(例如,作为模型在环测试)和早期测试成为可能。此外,可以对安全测试工作进行估计。为了实际实施所提出的方法,未来的工作是开发一个软件工具。这使得能够创建安全模型、分析该模型并得出安全测试路径。该工具还可用于支持渗透测试人员,因为它以全面的方式提供有关攻击或测试人员的知识。此外,我们的方法应该在案例研究的背景下进行评估。初步调查显示,我们数据库中现有的攻击路径也可以在其他E/E架构中找到。因此,应该进行更大规模的案例研究来详细研究这一点。