徽州骆驼 · 1 天前

AP AUTOSAR 硬核技术(10):IDSM 入侵检测系统详解

image.png

01.入侵检测系统管理器(IDSM)

1.1 什么是入侵检测系统管理器

入侵检测系统Intrusion Detection System(IDS)是一种用于检测和处理安全事件的安全控制措施。

入侵检测系统管理器Intrusion Detection System Manager(IdsM)是自适应平台架构中的一个关键功能集群,专门用于处理由安全传感器报告的安全事件(SEv)。它提供了生成、报告和处理安全事件的功能。

  • IdsM 包含一个库:向应用程序提供标准化的 C++ API,用于报告安全事件。让应用程序能够一致地生成和报告安全事件。
  • IdsM 还包括一个运行时进程守护程序(idsm_daemon):支持接收、存储、过滤和传输安全事件。这个守护程序确保安全事件能够被有效地管理和处理。

Image

图 1 安全事件的检测与响应

1.2 入侵检测系统概述  

IdsM 是入侵检测系统 (IDS) 的一部分,它负责接收、过滤、聚合、限制和传播来自各种传感器的安全事件。IdsM 还提供了一些 API 和服务接口,用于与其他功能集群和诊断服务进行交互。

1.2.1 术语简介  

image.png

术语表包括仅与入侵检测系统管理器相关的缩略语和缩写。

1.2.2 安全传感器(Security Sensor)  

安全传感器(Security Sensor)在入侵检测系统中扮演着至关重要的角色,主要负责以下几个方面:

  • 监控系统活动:安全传感器负责持续监控车载系统中的各种活动和数据流。它们可以检测到潜在的安全威胁或异常行为,例如未授权的访问、数据篡改或异常通信模式。
  • 检测安全事件:当安全传感器检测到潜在的安全威胁或异常行为时,它会生成一个安全事件(SEv)。这些事件可以包括各种类型的安全问题,例如入侵尝试、恶意软件活动或系统故障。
  • 报告安全事件:一旦生成安全事件,安全传感器会将这些事件报告给入侵检测系统管理器 (IdsM)。报告的内容通常包括事件的详细信息,例如事件类型、发生时间、影响范围等。
  • 多样化的传感器类型:安全传感器可以是多种类型的组件,包括 AUTOSAR BSW 模块、CDD(复杂设备驱动程序)和 SWC(软件组件)。这些传感器可以根据不同的需求和应用场景进行配置,以确保全面的安全监控。
  • 实时响应:安全传感器能够实时响应检测到的安全威胁,确保系统能够迅速采取措施来应对潜在的风险。这有助于提高系统的整体安全性和可靠性。

通过以上功能,安全传感器在入侵检测系统中起到了前线防御的作用,确保系统能够及时检测和响应各种安全威胁。

网络安全传感器是一段能够报告网络安全事件的代码,可能是一个基础的 SWC 软件模块,也可能是一个应用程序。

网络安全事件被汇报给一个新的 AUTOSAR 模块,即入侵检测管理器(IdsM)。IdsM 对网络安全事件进行过滤,抛弃无关的事件。过滤后剩余的事件被称为认证网络安全事件。

1.2.3 安全事件内存 (SEM)

安全事件内存 Security Event Memory(SEM) 在入侵检测系统中起着重要的作用,主要负责以下几个方面:

  • 存储安全事件:SEM 是一个专门用于存储安全事件的内存区域。它独立于主诊断事件内存,确保安全事件能够被单独管理和存储。
  • 管理安全事件:SEM 负责对存储的安全事件进行管理,包括检索、更新和删除等操作。它确保安全事件能够被有效地组织和访问。
  • 事件分类和优先级:SEM 可以根据事件的类型、严重性和优先级对安全事件进行分类和排序。这有助于快速识别和处理最重要的安全威胁。
  • 数据完整性和安全性:SEM 确保存储的安全事件数据的完整性和安全性。它采用各种安全措施来防止数据篡改和未授权访问。
  • 与 IdsM 的交互:SEM 与入侵检测系统管理器 (IdsM) 紧密合作。IdsM 负责将处理后的安全事件存储到 SEM 中,并在需要时从 SEM 中检索事件数据。
  • 支持审计和分析:SEM 提供了一个可靠的数据存储基础,支持后续的审计和分析。安全团队可以使用存储在 SEM 中的数据来进行深入的安全分析和事件追踪。

通过以上功能,安全事件内存 (SEM) 确保了安全事件的有效存储和管理,为入侵检测系统提供了坚实的基础。

1.2.4 入侵检测系统管理器(IdsM)  

入侵检测系统管理器 (IdsM) 在入侵检测系统中扮演着核心角色,主要负责以下几个方面:

  • 接收安全事件:IdsM 从安全传感器接收安全事件(SEv)。这些事件是由系统中的各种安全传感器检测到的潜在威胁或异常行为。
  • 处理安全事件:IdsM 对接收到的安全事件进行处理,包括存储、过滤和分类。它会根据预定义的规则和策略对事件进行评估,以确定其严重性和优先级。
  • 存储安全事件:IdsM 将处理后的安全事件存储在安全事件内存 (SEM) 中。SEM 是一个专门用于存储和管理安全事件的内存区域,独立于主诊断事件内存。
  • 传输安全事件:IdsM 负责将处理后的安全事件传输到入侵检测系统报告员 (IdsR)。IdsR 会从不同 ECU 的 IdsM 实例接收这些事件,并生成综合报告。
  • 提供 API 接口:IdsM FCs 提供一个 C++ API 库,供应用程序使用。这个 API 实现在 AUTOSAR 标准命名空间 ara::idsm 中,使应用程序能够报告安全事件并与 IdsM 进行交互。
  • 运行时进程守护程序:IdsM 包括一个运行时进程守护程序,支持接收、存储、过滤和传输安全事件。这个守护程序确保 IdsM 能够在系统运行时持续监控和处理安全事件。

通过以上功能,入侵检测系统管理器  (IdsM) 在整个入侵检测系统中起到了关键的中枢作用,确保安全事件能够被及时检测、处理和管理,从而提高系统的整体安全性。

1.2.5 Intrusion Detection System Reporter (IdsR)  

入侵检测系统报告员(IdsR) 在入侵检测系统中扮演着关键角色,主要负责以下几个方面:

  • 接收处理过的安全事件:IdsR 从不同的 ECU(电子控制单元)中的 IdsM 实例接收已经处理过的安全事件。这些事件已经经过初步的筛选和分类,包含了重要的安全信息。
  • 汇总安全事件:IdsR 将来自多个 IdsM 实例的安全事件进行汇总和整合。这一步骤有助于形成一个全面的安全事件视图,便于进一步分析和决策。
  • 生成报告:IdsR 根据汇总的安全事件生成综合报告。这些报告可以包含事件的详细信息、发生频率、严重程度等,有助于安全团队了解系统的安全状况。
  • 传输和存储:IdsR 负责将生成的报告传输到指定的存储位置或安全管理系统中,以便后续的审查和分析。
  • 支持决策:通过提供详细的安全事件报告,IdsR 帮助安全团队做出更明智的决策,采取适当的措施来应对潜在的安全威胁。

总的来说,IdsR 在入侵检测系统中起到了桥梁作用,将分散的安全事件信息汇总并转化为有价值的报告,为系统的安全管理提供了重要支持。

1.3 IdsM 架构图

安全事件可以由其他功能集群和自适应应用程序中的安全传感器报告,并且可以附带上下文数据,如事件类型和可疑数据,这些数据对于后端的安全取证非常有用。

IdsM 不仅收集这些事件,还根据可配置的规则对其进行资格认证。它通过过滤和转换,将报告的 SEv 转化为合格的车载安全事件(QSEv)。这些 QSEv 可以被 IdsM 存储或转发。根据整体安全策略,QSEv 可以在 ECU 上本地持久化,或者传输到入侵检测系统报告模块(IdsR),后者可能将 QSEv 数据传递到后端的安全操作中心(SOC)。

IdsM 的架构如图 2 所示:

Image

图 2 IdsM Architecture

AA 进程中的安全传感器检测潜在的安全威胁或异常行为,并将其通过 EventRepoter 接口上报给 IdsM。

IdsM 守护进程在 ECU 中收集、存储和处理安全事件,并将 QSEv 发送到 IdsR。

AA 和 Diag 功能集群 FCs 都可以向 IdsM 报告安全事件。

IdsM 守护进程收集的安全事件可以选择性地存储在 ECU 内的 SEM 中。

车辆中的所有 IdsM 实例使用 IDS 传输协议将安全事件 SEv 报告到单个 IdsR 端点 ECU。

自适应应用程序简称 AA。

1.4 什么是安全事件

安全事件(Security Event,简称 SEv)是指对后续取证分析至关重要的安全相关事件。通过分析来自多辆车辆的安全事件记录,可以有效识别潜在的攻击路径并提升整体网络安全性。每个安全事件都有一个唯一的标识符(ID),用于明确分类和识别不同类型的网络安全事件。网络安全事件的范畴广泛,涉及多个方面,尤其在汽车网络安全状态的分析中具有重要价值。

1.4.1 安全事件的定义  

安全事件的定义包括事件类型、名称、描述等基本要素,同时可以附加上下文数据,以提供事件发生时的额外信息。

Image

图 3 安全事件和被认证(处理过的)安全事件

经过入侵检测系统管理器(IdsM)认证的网络安全事件具有以下特点:

  • Event Type ID:唯一标识事件类型的 ID,用于标识网络安全事件的名称和信息。
  • Description:安全事件的信息。
  • IdsM Instance ID:标明哪个 ECU 汇报了网络安全事件。
  • 认证账号:描述该网络安全事件在被 IdsM 认证之前发生的频次。

此外,每个认证网络安全事件还可以包含以下可选内容:

  • 时间戳:记录事件发生的确切时间,以便追踪和分析事件的时间顺序。
  • 认证时的上下文数据:Context Data 与事件相关的附加信息,例如网络流量数据、用户操作记录等,帮助更全面地理解事件背景。
  • E2E 签名:确保事件数据的完整性和真实性。

这些属性共同构成了一个完整的安全事件记录,为安全分析和响应提供了重要的信息基础。

1.5 IdsM 的工作流程

Image

图 4 IDS Overview

1.5.1 IdsM 的工作流程  

从安全传感器 (Security Sensor) 到入侵检测系统管理器 (IdsM),再到安全事件内存 (SEM),最后到入侵检测系统报告员 (IdsR) 的详细过程:

1.安全传感器 (Security Sensor):

  • 检测安全事件:安全传感器可以是 AUTOSAR BSW 模块、CDD 或 SWC。它们负责监控系统中的各种活动,并检测潜在的安全威胁或异常行为。
  • 报告安全事件:一旦检测到安全事件,安全传感器会生成一个安全事件(SEv)并将其报告给入侵检测系统管理器 (IdsM)。IdsM 本身也可以用作安全事件传感器,报告内部安全事件。

2.入侵检测系统管理器 (IdsM):

  • 接收安全事件:IdsM 接收来自安全传感器的安全事件(SEv)。
  • 处理安全事件:IdsM 对接收到的安全事件进行处理,包括存储、过滤和分类。它还可以根据预定义的规则和策略对事件进行评估,以确定其严重性和优先级。
  • 传输安全事件:处理后的安全事件会被传输到安全事件内存 (SEM) 进行进一步存储和管理。

3.安全事件内存 (SEM):

  • 存储安全事件:SEM 是一个独立于主诊断事件内存的用户定义的诊断事件内存。它专门用于存储和管理安全事件。
  • 管理安全事件:SEM 负责对存储的安全事件进行管理,包括检索、更新和删除等操作。

4.入侵检测系统报告员 (IdsR):

  • 接收处理过的安全事件:IdsR 从不同 ECU 的 IdsM 实例接收处理过的安全事件。
  • 汇总和报告:IdsR 汇总来自多个 IdsM 实例的安全事件,并生成综合报告。这些报告可以用于进一步的分析和决策,以提高系统的安全性。
  • 注:通过以上过程,入侵检测系统能够有效地检测、处理和管理安全事件,从而提高车载系统的整体安全性。

注意:IDSR 和 SOC 并不是 AUTOSAR 标准化工作的一部分。IdsR 的实现是 OEM 基于项目需求特定的,不在 AUTOSAR 的范围内。SEM 将在未来的版本中与经典平台的 IDSM 一起发布。

1.5.2 IDSM 如何处理安全事件? 

IdsM(入侵检测系统管理器)处理安全事件的方式涉及多个步骤,包括事件的接收、缓冲、过滤、合格认定以及传播。

Image

图 5 安全事件的处理流程

从安全传感器捕捉到事件开始,到事件被过滤、存储、报告,整个流程都需要精确无误。以下是优化后的安全事件处理流程描述:

  1. 安全事件捕获:安全传感器(如车辆的软件组件或硬件设备)检测到安全事件(SEv),并将其发送到入侵检测系统管理器(IdsM)。
  2. 事件缓冲:IdsM 接收到事件后,首先将其存储在缓冲区中,以便按照预设的策略进行后续处理。
  3. 事件过滤:IdsM 应用一系列过滤器(如阻止器、采样器、聚合器和速率限制器)对事件进行筛选,确保只有重要且有效的事件被保留下来,即合格的安全事件(QSEv)。
  4. 事件存储:合格的安全事件被传输到安全事件内存(SEM)进行存储,以便后续检索和分析。
  5. 事件报告:IdsR 从 SEM 中检索存储的事件,并生成相应的报告,以供安全团队进行进一步的分析和响应。
  6. 诊断与访问控制:IdsM 提供诊断服务,允许安全团队访问持久化的事件,并可以重新配置报告模式。同时,IdsM 还实施访问控制,确保只有授权的进程可以生成、修改或访问事件数据。

安全传感器检测到事件后,将其发送到 IdsM。IdsM 首先将事件存储在缓冲区中,然后应用过滤器链进行筛选,得到合格的安全事件。这些合格的事件被存储到 SEM 中,并由 IdsR 生成报告。整个流程中,IdsM 还负责提供诊断服务和访问控制功能。

02.IDSM 的配置与集成

2.1 配置安全事件的流程

2.1.1 配置安全提取(SecXT)

什么是安全提取(Security Extract)  

AUTOSAR 定义了一种新的文件格式用于描述 IDS 属性,即 Security Extract(SECXT)它是一个配置文件,用于指定由入侵检测系统管理器(IdsM)实例处理的安全事件(SEv)及其相关配置参数。配置 SecXT 的主要原因如下:

  1. 定义安全事件:SecXT 允许用户定义哪些安全事件需要被监控和处理。这有助于确保系统能够识别和响应特定的安全威胁。
  2. 配置参数:SecXT 包含每个安全事件的详细配置参数,如事件的优先级、处理方式等。这些参数帮助 IdsM 更有效地管理和处理安全事件。
  3. 系统集成:通过配置 SecXT,可以确保安全事件的报告和处理与系统的其他部分(如安全传感器、自适应应用程序等)无缝集成。这有助于提高系统的整体安全性和响应能力。

配置 SecXT 是确保入侵检测系统管理器(IdsM)能够有效监控、报告和处理安全事件的关键步骤。SecXT 负责指定 IdsM 实例需要处理的安全事件(SEv)及其相关配置参数。

此外,IdsM 的正常运行还需要依赖其他配置信息,如组件、端口以及进程或 SEv 的设置。

特别地,负责报告 SecEvent 的应用程序必须是一个具备适当软件组件类型的自适应应用程序,并且需要在 IdsM 守护程序之后启动,以确保信息的准确传递和处理。

2.1.2 配置安全事件的报告模式

IdsM 利用 SecXT 模型的参数 SecurityEventContextProps.defaultReportingMode 来为每一个安全事件(SEv)配置默认的报告方式。这一关键参数定义了系统在接收、处理和报告安全事件时的标准操作流程,旨在确保所有事件都能按照既定的策略得到妥善管理和及时响应。

IdsM 提供了多样化的报告模式选项:

image.png

2.1.3 创建 IdsM Module Instantiation  

在配置 SecXT 之前,首先需要为 IdsM 模块创建一个实例化对象。这个实例化对象将为机器提供 IdsM 所需的配置信息。

配置过程包括设置平台模块以太网端点,并为其配置 IPv4 地址和 TCP 端口。这些设置是 QSev(可能是某种安全事件或数据)发送至 IdsM 模块所必需的。

完成 IdsM 模块实例化后,需要将其添加到软件集群(SoftwareCluster)中。在 ARXML(可能是某种配置文件或数据模型)中,软件集群是一个关键的部署实体。

根据 AUTOSAR 的要求,每个应用程序或功能集群都必须被添加到软件集群中,否则它们将被视为未部署的实体,无法正常工作。

2.1.4 配置安全事件的过滤链  

在创建 IdsM 模块实例化之后,可以进一步配置 IdsM 实例。这一步骤包括设置一个 IdsmProperties 元素,该元素代表了一组 SEv 过滤器。

通过配置工具,可以添加不同类型的过滤器,如速率限制过滤器和流量限制过滤器。这些过滤器的设置将帮助 IdsM 更有效地管理和处理接收到的安全事件,确保系统的安全性和稳定性。

  • Idsm Filter chains:这是一系列过滤器,用于确定哪些安全事件应该被报告和处理。过滤链可以包括状态过滤器、采样过滤器、聚合过滤器和阈值过滤器等,它们共同工作以确保只有符合特定标准的事件才会被传递到 IdsM 实例进行进一步处理。
  • IdsmRateLimitation:这是一个限制机制,用于控制 IdsM 实例报告安全事件的频率。这有助于防止系统过载,并确保 IdsM 能够有效地处理事件。
  • IdsmTrafficLimitation:用于控制通过网络传输的安全事件的数据量。这有助于维护网络性能并防止拥塞。

IdsM 使用过滤链来处理安全事件,AUTOSAR 规范中过滤链包括以下过滤器:

  • 机器状态过滤器:根据机器状态丢弃安全事件。
  • 采样过滤器:每 n 次转发一个安全事件。
  • 聚合过滤器:在配置的时间间隔内聚合安全事件。
  • 阈值过滤器:根据阈值丢弃或转发安全事件。
2.1.5 创建 IdsM Instance  

IdsM Instance,即入侵检测系统管理器(IdsM)的一个实例化对象。它主要负责保存并管理可报告给 ECU(电子控制单元)/机器的安全事件(SEv)过滤器的配置。通过专门的配置工具,用户可以轻松创建 IdsM 实例,并在 IDSM 配置页面中进一步细化设置。

每个 IdsM 实例都具备处理特定安全事件的能力,且可根据实际需求配置为处理来自车辆不同部位的事件。在创建 IdsM 实例后,用户可在 IDSM 配置页面添加新的子元素,如 IdsM 速率限制引用条件和 IdsM 流量限制引用条件,以便更精确地配置 IdsM 过滤器引用。

2.1.6 创建组件与端口以报告安全事件(Component and Port)

为了构建一个自适应应用程序,该应用程序需能够向 IdsM(入侵检测系统管理器)报告安全事件,我们通过 SecurityEventReportInterface 接口来实现这一功能。以下是具体步骤:

1. 创建应用程序软件组件类型:

  • 首先,我们需要创建一个名为 AraIdsMSecEvent_AdaptiveApplicationSwComponentType 的应用程序软件组件类型。

2. 添加 RPort(接收端口):

  • 在此组件类型中,我们需要添加一个 RPort(接收端口),并为其分配 SecurityEventReportInterface 作为所需的接口。这个 RPort 将用于接收和报告安全事件。

3. 分配可执行文件:

  • 使用执行管理编辑器,将软件组件原型分配给对应的可执行文件,确保应用程序能够正确运行。
2.1.7 配置安全事件与映射  

在 IdsM 成功配置后,用户可以定义并管理系统中的安全事件,具体步骤如下:

1. 建立安全事件过滤链:

  • 创建一个安全事件过滤链,该链包括安全事件聚合过滤器(用于汇总多个事件)、每 N 次出现的事件过滤器(控制事件触发的频率)和安全事件阈值过滤器(设置事件触发的条件)。

2. 创建软件组件:

  • 为后续步骤创建必要的软件组件。

3. 指派安全事件到进程:

  • 将定义的安全事件指派到相应的进程中,确保事件的管理与进程相关联。

4. 建立端口映射:

  • 将安全事件映射到报告端口原型,以便在事件发生时进行报告。

5. 设置安全上下文事件映射:

  • 在 xAAP 编辑器中,为基本软件(BSW)模块设置安全上下文事件映射,并创建新的 AR(抽象表示)元素。

6. 配置 IdsM 选项卡:

  • 在 IdsM 配置选项卡中,创建上下文映射,并添加以下条件:
  • 安全事件过滤链引用条件
  • IdsM 实例引用条件
  • 安全事件定义引用条件(作为 SecurityEventContextProps 的一部分)

7. 选择并配置元素:

  • 在配置这些元素时,选择之前生成的相应元素作为安全事件过滤链引用条件、IdsM 实例引用条件和安全事件定义引用条件。同时,根据需要对 SecurityEventContextProps 进行调整。

8. 添加可报告的安全事件:

  • 将可报告的安全事件添加到 IdsM 模块实例中,以便进行有效管理。

9. 设置 RPort In 组合实例引用:

  • 在定义映射中,添加 RPort In 组合实例引用,并使用先前生成的元素设置可配置参数,确保映射的准确性。

10. 分配安全事件到进程:

  • 最后,确保将安全事件准确地分配到定义的进程中,形成从事件定义到事件报告和管理的完整链条。

通过上述步骤,用户可以系统地定义、配置和管理安全事件,确保系统的安全性和稳定性。

2.1.8 IdsM 的内部安全事件报告机制  

IdsM(入侵检测与安全管理模块)内置了一套内部安全事件报告机制。该机制允许集成商在 IdsM 的配置界面中,根据实际需求和安全策略,自定义配置各类安全事件的触发条件和报告方式。

这些内部安全事件严格遵循 AUTOSAR 标准,涵盖了广泛的安全告警和异常检测场景。具体如下:

image.png

2.1.9 注册时间戳回调机制  

在自适应 AUTOSAR 标准中,SEv(安全事件)可以附带时间戳,以精确记录事件发生的时间点。为了获取这些时间戳,IdsM(入侵检测与安全管理模块)提供了一种注册回调的方法,即通过 API RegisterTimestampProvider 来实现。

此 API 应在 IdsM 守护进程(idsm_daemon)初始化完成后,但在向 rb-exmd 报告进程状态为 kRunning 之前调用。值得注意的是,如果用户尝试多次注册回调,系统将仅采用首次注册的回调。

IdsM 能够以多种方式提供时间戳,包括:

  • 通过事件报告接口:直接在报告安全事件时附加时间戳。
  • 通过应用软件:由应用软件在生成事件时提供时间戳。
  • 由堆栈提供:由 IdsM 内部的时间管理堆栈自动生成时间戳。

然而,在以下情况下,SEv 将不会被分配时间戳:

  • 在用户回调注册之前请求时间戳。
  • 用户回调被注册为 nullptr(空指针)。
  • 用户回调处理未在规定的 100 毫秒内完成,此时 TimestampProvider 功能将被禁用。
2.1.10 安全事件生成流程

SWCL(软件组件)和 FC(功能集群)可以利用 IdsM API 来创建新的安全事件。所有可由 SWCL 生成的事件类型都需在配置清单中预先定义,并与 SWCL 的 PortPrototype 相关联。

生成新事件的流程包含以下三个关键步骤:

  • 构造 InstanceSpecifier 对象:利用引用事件类型的 PortPrototype 的 shortName 路径。
  • 创建 EventReporter 对象:通过传递 InstanceSpecifier 来构造。
  • 报告事件:在 EventReporter 对象上调用 ReportEvent 函数。

在调用 ReportEvent 函数时,应用程序可以选择性地附加时间戳、计数器值和/或上下文数据。

2.1.11 使用 EventReporter 报告安全事件  

当自适应应用程序(即安全传感器)检测到安全事件时,应通过 IdsM 的 ReportEvent API 进行报告。为了生成并报告 SEv(安全事件),需要构造一个 EventReporter 对象,并在构造时传入实现安全事件报告接口的端口原型的 InstanceSpecifier 作为参数。

以下是一个简化的代码示例,展示了如何使用 EventReporter API 来报告安全事件:

Image

此代码片段展示了如何创建一个 EventReporter 对象,并利用其 ReportEvent 方法来报告检测到的安全事件。

2.1.12 API 介绍与生命周期管理  

API 介绍

EventReporter 类的 ReportEvent 方法

EventReporter 类提供了多种 ReportEvent 方法,用于报告安全事件。这些方法允许安全传感器根据检测到的安全事件的不同属性进行报告。

1.基本事件报告

  • 方法签名:void EventReporter::ReportEvent(const CountType countType = 1U)
  • 描述:该方法用于报告安全事件,countType 参数是可选的,表示安全传感器记录该事件的次数。如果不提供 countType,则默认为 1。

2.带时间戳的事件报告

  • 方法签名:void EventReporter::ReportEvent(const TimestampType timestamp, const CountType countType = 1U)
  • 描述:该方法不仅报告安全事件,还附带一个时间戳。timestamp 参数允许使用安全传感器记录的事件发生时间进行报告,countType 参数同样是可选的,表示记录次数。

3.带上下文数据的事件报告

  • 方法签名:void EventReporter::ReportEvent(const ContextDataType &contextData, const CountType countType = 1U)
  • 描述:该方法报告安全事件时,还包含上下文数据。contextData 参数允许使用安全传感器提供的与事件相关的额外信息进行报告,countType 参数表示记录次数,也是可选的。

生命周期管理

IdsM(入侵检测与安全管理模块)的生命周期管理涉及初始化和去初始化两个关键阶段,确保 IdsM 在系统运行期间的正确启动和关闭。

  • 初始化
  • 方法:通过调用 ara::core::Initialize 函数来初始化 IdsM。
  • 描述:在 IdsM 开始运行之前,必须执行初始化步骤。这包括加载配置、分配资源以及准备 IdsM 所需的所有组件。
  • 去初始化
  • 方法:通过调用 ara::core::Deinitialize 函数来去初始化 IdsM。
  • 描述:在系统关闭或 IdsM 不再需要时,应进行去初始化步骤。这包括释放资源、保存状态(如果需要)以及确保 IdsM 的组件被正确关闭。

通过严格管理 IdsM 的生命周期,可以确保其在系统中的稳定运行,同时避免资源泄漏和潜在的安全问题。

03.跨功能集群依赖

入侵检测系统管理器(IdsM)是一个高度集成的组件,它依赖于多种外部库和功能集群来执行其任务。为了报告系统的当前执行状态,IdsM 利用执行客户端 API;而为了获取机器的实时状态信息,它则依赖于状态管理器。此外,IdsM 还集成了加密功能,使用加密 API 对经过筛选的合格安全事件(QSEv)进行数字签名,以确保数据的完整性和真实性。为了长期保存这些重要的安全事件,IdsM 采用持久性文件存储 API,将 QSEv 以文件的形式存储在磁盘上。

3.1 提供的接口 Provided Interfaces

IdsM(入侵检测系统管理器)为 AUTOSAR 自适应平台内的其他功能集群提供了一系列接口,以便它们能够报告和访问安全事件。图 5.1 直观地展示了这些接口:

Image

表 5.1 则详细列出了这些接口及其对应的功能集群和目的:

image.png

此外,IdsM 还支持通过诊断访问接口读取持久化的安全事件,并允许重新配置报告模式,以满足不同的安全需求。

3.2 Required Interfaces

为了正常运作,IdsM 需要从 AUTOSAR 自适应平台内的其他功能集群获取一些关键接口。图 5.2 展示了这些所需的接口

Image

表 5.2 则提供了更详细的列表和描述:

image.png

表 5.2 提供了所需接口的完整列表

IdsM 还支持生成日志消息和违规消息,并记录生产过程中遇到的错误。为了存储 QSEv(处理过的安全事件),IdsM 使用了持久性接口 QsevFileStorageInterface,并配置了名为“PRPortQsevStorage”的所需端口。通过这些接口,IdsM 能够与 AUTOSAR 自适应平台内的其他功能集群紧密协作。

3.3 状态管理与 IdsM 的集成

IdsM(入侵检测系统管理器)不仅依赖于其他功能集群的接口,还需要与状态管理器(STM)进行交互,以获取当前的系统或机器状态。这种集成对于 IdsM 来说至关重要,因为它可以根据不同的状态来触发相应的安全响应。

IdsM 与 STM 的通信

IdsM 通过 STM 提供的 TriggerOut_StateMachine 接口来获取机器状态。这种通信是通过显式 IPC(进程间通信)机制实现的,它要求 IdsM 和 STM 之间建立稳定的连接。为了确保这种连接的建立,需要进行适当的 ARXML 配置。

ARXML 配置

在配置 IdsM 与 STM 之间的通信时,需要注意以下几点:

  • IdsM 守护进程的可执行文件:应配置为 idsm。
  • RootSwComponentPrototype:应设置为 idsmRootSwComponent,这是 IdsM 在软件组件层次结构中的根节点。
  • SwComponentPrototype:应配置为 SwComponentPrototype_TOSM,这表示 IdsM 与 STM 之间的通信组件。
  • PortPrototype:应设置为 RPIDSMStateMachineState,这是 IdsM 用于接收 STM 状态的端口。

需要注意的是,SwComponentPrototypeTOSM 是 SwComposition(软件组合)的一部分,它定义了 IdsM 与 STM 通信所需的软件组件和接口。

此外,所需的接口定义应存在于 SDK 文件夹中的 stm-aap-state-manager-provided-port-triggeroutstatemachine.arxml 文件中。这个文件包含了 STM 提供的 TriggerOut_StateMachine 接口的定义。

IdsM 守护进程的配置

在配置 IdsM 守护进程时,可以参考 AraIDSMExample 中的示例,该示例位于 machineconfig_arxml/IdsManager 文件夹中。这个示例提供了 IdsM 守护进程配置的详细指导。

连接 STM 服务

在配置 IdsM 守护进程后,需要执行以下步骤来连接 STM 服务:

  1. 创建 IPC 客户端:IdsM 需要创建一个新的 IPC 客户端,以便与 STM 进行通信。
  2. 映射端口:在 IPC 客户端创建后,需要将 RPIDSMStateMachineState 端口映射到 STM 提供的相应端口上,以确保 IdsM 能够正确接收 STM 的状态信息。

通过这些步骤,IdsM 能够与 STM 建立稳定的通信连接,并根据 STM 提供的状态信息来触发相应的安全响应。

04.小   结

4.1 IDSM(IdsM)配置与集成小结

IDSM,即入侵检测系统管理器(IdsM),在 AUTOSAR 架构中扮演着至关重要的角色,它负责监控、报告和处理安全事件。以下是 IDSM 配置与集成的详细小结:

一、配置安全事件的流程

1. 配置安全提取(SecXT)

  • 定义需要被监控和处理的安全事件。
  • 配置每个安全事件的详细参数,如优先级和处理方式。
  • 确保安全事件的报告和处理与系统的其他部分无缝集成。

2. 配置安全事件的报告模式

  • 利用 SecXT 模型的参数为每个安全事件配置默认的报告方式。
  • 报告模式包括 OFF、BRIEF、DETAILED 等,以满足不同的安全需求。

3. 创建 IdsM Module Instantiation

  • 为 IdsM 模块创建一个实例化对象,提供必要的配置信息。
  • 设置平台模块以太网端点,配置 IPv4 地址和 TCP 端口。
  • 将 IdsM 模块实例化对象添加到软件集群中。

4. 配置安全事件的过滤链

  • 设置 IdsmProperties 元素,代表一组 SEv 过滤器。
  • 添加不同类型的过滤器,如速率限制过滤器和流量限制过滤器。
  • 过滤链包括状态过滤器、采样过滤器、聚合过滤器和阈值过滤器等。

5. 创建 IdsM Instance

  • 创建 IdsM 实例,保存并管理可报告给 ECU/机器的安全事件过滤器的配置。
  • 在 IDSM 配置页面添加 IdsM 速率限制和流量限制引用条件。

6. 创建组件与端口以报告安全事件

  • 创建应用程序软件组件类型,并添加 RPort 用于接收和报告安全事件。
  • 分配可执行文件,确保应用程序能够正确运行。

7. 配置安全事件与映射

  • 建立安全事件过滤链,包括聚合过滤器、事件过滤器和阈值过滤器等。
  • 创建软件组件,指派安全事件到进程。
  • 建立端口映射,设置安全上下文事件映射。
  • 在 IdsM 配置选项卡中创建上下文映射,并添加相关条件。
  • 添加可报告的安全事件,设置 RPort In 组合实例引用。
  • 分配安全事件到进程,形成完整的事件定义到事件报告和管理的链条。

二、IdsM 的内部机制与 API

1. IdsM 的内部安全事件报告机制    

  • 允许集成商自定义配置各类安全事件的触发条件和报告方式。
  • 涵盖广泛的安全告警和异常检测场景,如事件缓冲区不可用、流量限制超出等。

2. 注册时间戳回调机制

  • 提供注册回调的方法,通过 API RegisterTimestampProvider 来实现。
  • SEv 可以附带时间戳,精确记录事件发生的时间点。
  • 时间戳可以由事件报告接口、应用软件或 IdsM 内部的时间管理堆栈提供。

3. 安全事件生成流程

  • SWCL 和 FC 可以利用 IdsM API 创建新的安全事件。
  • 构造 InstanceSpecifier 对象,创建 EventReporter 对象,并调用 ReportEvent 函数报告事件。

4. 使用 EventReporter 报告安全事件

  • 当自适应应用程序检测到安全事件时,通过 IdsM 的 ReportEvent API 进行报告。
  • 构造 EventReporter 对象,并调用其 ReportEvent 方法来报告检测到的安全事件。

5. API 介绍与生命周期管理

  • EventReporter 类提供了多种 ReportEvent 方法,用于报告安全事件。
  • 生命周期管理涉及 IdsM 的初始化和去初始化阶段,确保 IdsM 在系统运行期间的正确启动和关闭。

IDSM(IdsM)的配置与集成涉及多个关键步骤和组件,包括安全提取的配置、报告模式的设置、IdsM 模块实例化和过滤链的配置等。通过严格管理 IdsM 的生命周期和正确使用其 API,可以确保系统在面临安全威胁时能够及时响应并采取有效的措施。

4.2 IDS 的构成组件  

依据 AUTOSAR 标准,入侵检测系统(IDS)的核心组成部分包括以下几个关键元素:

  1. 安全传感器(Security Sensor):这一组件主要由 AUTOSAR 基础软件(BSW)模块、复杂驱动描述(CDD)以及软件组件(SWC)构成。它们负责监测系统的安全状态,并在检测到潜在威胁时,向入侵检测系统管理器(IdsM)报告安全事件(SEv)。
  2. 入侵检测系统管理器(IdsM):IdsM 是 IDS 的中枢,负责接收并处理来自安全传感器的安全事件。它通过分析这些事件来评估系统的安全状况。
  3. 安全事件存储器(SEM):这是一个独立的诊断事件存储器,用于存储用户定义的安全事件。它与主要的诊断事件存储器相分离,确保安全事件的记录与常规诊断事件相区分。
  4. 入侵检测系统报告器(IdsR):IdsR 负责从各个 ECU 的 IdsM 实例中收集并处理已处理的安全事件。它能够将这些信息整合起来,为系统管理员或安全团队提供全面的安全状况概览。

4.3 IdsM 的核心功能

IdsM 在 IDS 中扮演着至关重要的角色,其主要功能包括:

  1. 事件生成:通过 IdsM 的 API,软件组件(SWCL)和功能组件(FC)能够生成新的安全事件,以便对潜在威胁进行记录和分析。
  2. 事件报告:IdsM 支持多种报告模式和过滤链,以便对安全事件进行灵活处理。这有助于确保只有最相关和最关键的安全信息被传递给相关方。
  3. 上下文数据修改:IdsM 允许对安全事件的上下文数据进行修改,以提供更准确和完整的威胁分析。
  4. 时间戳添加:为每个安全事件添加时间戳,有助于追踪威胁发生的时间线,为事件分析提供关键的时间信息。
  5. 访问控制:IdsM 实施严格的访问控制策略,确保只有授权的进程能够生成、修改和报告安全事件。
  6. 诊断访问:IdsM 支持读取持久化存储的安全事件,并允许重新配置报告模式,以满足不同的安全需求和诊断要求。

4.4 IdsM 的访问控制策略

IdsM 的访问控制功能是其安全性的重要组成部分,它能够对以下操作进行精细化的权限管理:

  1. 事件生成:限制哪些进程具有生成安全事件的权限,以防止未经授权的实体创建虚假的安全事件。
  2. 上下文数据修改:对能够修改安全事件上下文数据的进程进行限制,确保数据的准确性和完整性。
  3. 时间戳提供:控制哪些进程能够为安全事件提供时间戳,以防止时间戳被恶意篡改。
  4. 报告模式修改:限制哪些进程能够修改和查询报告模式,以确保报告策略的一致性和安全性。
  5. 合格事件接收:对能够接收并处理合格安全事件的进程进行限制,确保这些信息只能被授权实体访问和利用。

参考文献:

[1] AUTOSAR_AP_SWS_IntrusionDetectionSystemManager.pdf
[2] ETAS RTA-VRTE UserGuide.pdf
[3] AUTOSAR_AP_EXP_SWArchitecture.pdf
[4] AUTOSAR_AP_EXP_PlatformDesign.pdf
[5] AUTOSAR_AP_EXP_InterfacesGuidelines.pdf
[6] https://blog.csdn.net/usstmir...

END

作者:刘向
来源:汽车电子与软件

推荐阅读:

更多汽车电子干货请关注汽车电子与软件专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。)
推荐阅读
关注数
5726
内容数
471
汽车电子与软件行业的相关技术报道及解读。
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息