发布于 

IEEE S&P 2024 - 对车载攻击面的重新审视

论文阅读:《Revisiting Automotive Attack Surfaces: a Practitioners’ Perspective》

论文阅读

  • 背景介绍
    • TARA、网络安全法规
  • 访谈方法
    • 访谈设置、访谈程序与数据处理、访谈结构
  • 访谈结果
    • 评估TARA
      • 资产识别困难
      • 缺乏客观的定义和标准
      • 自动化程度低,效率低
    • 评估威胁数据库
      • 需要更多常见的汽车专用威胁,而不是照搬其他领域的现有威胁
      • 从业人员对现有法规列出的具体威胁评价较低
    • 现有法规的限制和建议
      • 更详细的信息肯定会对安全小组有所帮助
      • 传统 IT 威胁与汽车威胁之间存在差距
    • 访谈研究摘要
      • 缺乏高质量的针对汽车的威胁数据库
      • 缺乏有效的 TARA 工具
  • 改进威胁数据库
    • 使用分层框架来呈现汽车特有的威胁
      • 威胁描述(TD), 一组描述特定威胁细节的自然语言句子
        • 攻击描述 (AD)
        • 威胁的根源 (RC)
        • 识别威胁的安全测试方法 (STA)
        • 预防威胁的措施 (MG)
      • 威胁代码(TC),某一特定类别下的一组威胁描述(TD)
      • 威胁主题(TT),一组遵循特定高级分类逻辑的威胁代码(TC)
      • 威胁知识图谱(TKG),利用知识图谱来进一步表示威胁代码(TC)之间的关系
        • 知识图谱可以用一组三元组来表示:头部实体、关系、尾部实体
        • 实体是威胁代码(TC),三元组表示两个 TC 之间的逻辑关系
    • 威胁数据库的分类及其详细内容
      • T1:通用威胁代码(分类),各种 ECU 可共享一套适用于各种实施方案的通用模式
        • C1.Hardware, C2.Software, C3.RTOS, C4.Complex OS, C5.Data
      • T2:车内组件,描述了对车内特定组件的威胁
        • C6.IVI, C7.Telematics, C8.Sensor, C9.Gateway and Zone Controller, C10.ADAS, C11.IVN, C12.BMS, C13.Other ECUs
      • T3:车外组件,描述了车外特定组件面临的威胁
        • C14.Mobile APP, C15.Backend Server, C16.Charging Pile
      • T4:通信协议,描述了通信协议所面临的威胁
        • C17.UWB, NFC and BLE, C18.V2X, C19.CAN, C20.Ethernet
      • T5:通信通道/接口,描述了对车辆通信通道和接口的威
        • C21.Wi-Fi, Bluetooth and Cellular, C22.Charging Port, C23.USB and SD card, C24.OBD
      • T6:车辆功能/服务,描述了对车辆功能和服务的威胁
        • C25.OTA, C26.Diagnostic, C27.Remote monitor and control
      • T7:其他,包括不属于其他主题的其他威胁(如内部攻击)
        • C28.Others
    • 为了更好地说明威胁代码(分类)之间的关系,将28个代码分为两类:
      • 实体代码 Entity code(T2车内组件、T3车外组件)
      • 属性代码 Property code(T1、T4、T5、T6、T7)
        • 一个属性代码代表一个实体代码中的一个特定安全属性
        • 构建知识图谱的三元组进一步表述为(实体代码、易受威胁处、属性代码
        • 在11个实体代码和17个属性代码之间构建了109个三元组
      • 威胁代码之间的这些联系使用户能够了解汽车威胁之间的相互依赖关系,帮助他们构建特定于汽车模型的 CarVal Datalog 规则。
      • 此外,用户可以灵活地根据不同的汽车实现修改和创建自己的关系。
  • CarVal — 自动化路径推理和风险评估
    • 挑战
      • 传统的攻击路径推理引擎依赖于 IT 网络中人工制作的推理规则,目前还没有可用于推理 IVN 攻击路径的规则
      • IVN 是由具有各种硬件和软件设置的 ECU 组成,以前的方法没有考虑到这些新特征,无法表示最新的 IVN 模型
      • 以往的工作只讨论了如何计算攻击路径中特定攻击的可行性(即可能性),没有考虑 ISO21434 TARA 所指出的攻击影响,这导致在特定汽车系统中的输出不完整
    • 解决方案
      • 根据访谈,构建推理规则集并定义网络攻击
      • 引入一个混合模型,将代表车载总线(如 CAN 总线)广播性质的总线模型与代表最新网关设计的星形模型相结合
      • 除了攻击可行性,通过计算路径上每个节点的攻击影响来增强推理引擎
    • 工作流程
      • 输入
        • 攻击目标,指定作为数据模型推理目标的特定攻击
        • 攻击入口,描述攻击者如何访问汽车系统,攻击路径的起点
        • 漏洞集,由可能导致特定攻击的潜在漏洞组成
        • 车辆配置,如 IVN 拓扑结构、IVN 中电子控制单元 (ECU) 和总线的属性
      • 攻击路径推理,在接收到上述输入后启动数据逻辑推理
        • 确定攻击者如何从攻击入口实现攻击目标
        • 推理过程的有效性取决于精心设计的推理规则
        • 攻击路径节点类型
          • 攻击节点(AN)—— 攻击目标
          • 入口节点( EN) —— 攻击入口
          • 漏洞节点(VN)—— 漏洞集
          • 事实节点(FN)—— 车辆配置
      • 风险评估,在考虑 feasibilityimpact 的基础上对生成的攻击路径进行评估风险值
        • 计算攻击路径上所有 AN(代表特定威胁)的攻击可行性和攻击影响
        • 相关定义
          • EN、VN、AN 的可行性(概率)
          • AN 的累积可行性、影响和风险值
          • VN、AN 的影响
        • 攻击可行性计算
          • 攻击节点的累积路径攻击可行性是由其所有前提节点的可行性值相乘计算得出的
          • 由于所有可行性值都在 (0,1) 范围内,随着攻击路径变深,累积攻击可行性会降低
        • 攻击影响传播
          • 一个 AN 的累积路径上攻击影响是其所有前提节点影响值的乘积
          • 由于所有影响值都大于 1,因此累积攻击影响会随着攻击路径的深入而增加
        • 风险值计算
          • 汽车系统中与特定威胁相关的风险值的确定基于两个因素,即可行性和影响
          • 可行性和影响越大,风险值也就越大
          • 节点的最终风险值是可行性和影响相乘后加上基线值
        • 每个推导出的攻击节点都会被赋予特定攻击路径上的累计攻击可行性影响风险值
    • 演示示例
      • CarVal 的输出是 Attributed Attack Path (AAP)
        • 既提供如何在 IVN 中实施攻击的逻辑流程
        • 也提供了与路径上每个攻击节点相关的定量指标(feasibility, impact, and risk value)
    • 具体实施
      • 攻击路径推理(MulVAL reasoning framework + XSB database system)
      • 风险评估(Python + treelib library)
  • 实车实验
  • Sup_Materials
    • Codebook.pdf(用于访谈研究数据分析的最终代码手册)
    • Insights_and_Database.pdf(从访谈中得出的更多见解,以及包含119个威胁的数据库)
    • Interview_protocol.pdf(用于访谈过程中的访谈方案)
    • Security_Report.pdf(对应于论文中安全分析的安全报告)

运行环境

开源代码:CarVal: Automated Attack Path Reasoning in IVN.

CarVal_Code:

  • carval_infer.sh(启动推断攻击路径的脚本)
  • input_IVN.P(CarVal的输入,包括 IVN 和待推断的攻击目标)
  • interaction_rules.P(CarVal 推理的所有交互规则)
  • risk_assessment.py(此代码将对由 carval_infer.sh 生成的 AttackGraph.dot 执行风险评估)

配置运行环境:

  1. XSB (用于Unix和Windows的逻辑编程和推理数据库系统)
  2. Graphviz (一款开源图形可视化软件)
  3. MulVAL (基于逻辑的企业网络安全分析器)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
sudo apt update
# 安装 Graphviz
sudo apt install graphviz graphviz-doc
# 安装 epstopdf
sudo apt install texlive-font-utils
# 安装 jdk
sudo apt install default-jdk
# 安装 XSB
tar -zxf XSB-5.0.tar.gz
cd XSB/build
./configure
./makexsb
# 添加环境变量
sudo vim /etc/profile
# sudo vim ~/.zshrc
# 加入 export PATH=/home/hcjjj/Desktop/CarVal/XSB/bin:$PATH
source /etc/profile
# source ~/.zshrc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 安装 MulVAL
# 依赖
sudo apt install flex bison
git clone https://github.com/risksense/mulval.git
cd mulval
# 创建文件夹,不然:cp: target '../../bin/adapter' is not a directory
mkdir bin bin/adapter bin/metrics
# mv -> cp,不然 fatal error: graphit.tab.h: No such file or directory
vim src/attack_graph/Makefile
# 环境变量
sudo vim /etc/profile
# export MULVALROOT=/home/hcjjj/Desktop/CarVal/mulval
# export PATH=$MULVALROOT/bin:$MULVALROOT/utils:$PATH
source /etc/profile
# 编译 注意 gcc 的版本,太高会编译报错
sudo apt purge --autoremove -y gcc-11 g++-11
sudo vim /etc/apt/sources.list
# deb [arch=amd64] http://archive.ubuntu.com/ubuntu focal main universe
sudo apt update
sudo apt install gcc-7 g++-7
cd /usr/bin/
sudo mv gcc-7 gcc
sudo mv g++-7 g++
# 回到 mulval 目录
cd -
make

运行 testcases 代码:

1
2
3
4
5
6
7
8
9
10
cd testcases/3host
# 前面添加到环境变量了
which graph_gen.sh
# /home/hcjjj/Desktop/mulval/utils/graph_gen.sh
# chmod u+x /home/hcjjj/Desktop/mulval/utils/graph_gen.sh
chmod u+x graph_gen.sh
# 生成攻击图
graph_gen.sh input.P -v -p
# 运行 CVSS 度量程序
probAssess.sh

运行 CarVal 代码:

Copy the CarVal code into the MulVal directory, including:

  • Replace mulval/kb/interaction_rules.P with CarVal_Code/interaction_rules.P
  • Copy all other codes under CarVal_Code (carval_infer.sh, input_IVN.P, risk_assessment.py) into mulval/utils/.
  • Now CarVal is ready to run. Execute the following code under the mulval/utils:
1
2
3
4
5
# 添加可执行权限
chmod u+x carval_infer.sh ./render.sh
# carval_infer.sh 用到 render.sh 和 interaction_rules.P
# 这边要改一下 ./carval_infer.sh 里面 xsb 的路径
./carval_infer.sh -v ./input_IVN.P
  • Then the output attack path will be generated as AttackGraph.dot in the same directory. Then execute the python script to further calculate the risk values along the attack path.
1
2
3
sudo apt install python3 pip
pip install pydot networkx matplotlib
python3 risk_assessment.py

代码分析

攻击路径推理

  • carval_infer.sh(启动推断攻击路径的脚本)
  • input_IVN.P(CarVal 的输入,包括 IVN 和待推断的攻击目标)
  • interaction_rules.P(CarVal 推理的所有交互规则)

风险评估

  • risk_assessment.py(此代码将对由 carval_infer.sh 生成的 AttackGraph.dot 执行风险评估)

TARA 1.0

  • 资产识别(定义)
  • 威胁场景识别
    • 威胁情景识别的方法可以使用小组讨论和/或系统方法,例如:

      • 诱发因合理的可预见的误用或滥用而产生的恶意用例

      • 基于 EVITA、TVRA、PASTA、STRIDE 等框架的威胁建模方法

  • 影响等级评估
    • 应根据安全、财务、操作和隐私(S、F、O、P)等影响类别分别对道路使用者的潜在不利后果进行评估损害情景
    • 损害情景的影响等级应按每个影响类别确定为以下之一:severe、major、moderate、negligible(严重、主要的、中等、可忽略不计)
  • 攻击路径分析
    • 应分析威胁情景,以确定攻击路径
      • 一个攻击路径分析可以基于
        • 自上而下的方法,通过分析威胁情景的不同方式来推断攻击路径。 可以实现,例如攻击树、攻击图
        • 自下而上的方法,从确定的网络安全漏洞中建立攻击路径
      • 如果部分攻击路径没有导致威胁情景的实现,可以停止对该部分攻击路径的分析
    • 一个攻击路径应与该攻击路径可实现的威胁情景相关
      • 在产品开发的早期阶段,攻击路径往往是不完整或不精确的,因为具体的实施细节还不知道,无法识别具体的漏洞
      • 在产品开发过程中,随着更多信息的出现,例如在漏洞分析之后,攻击路径可以被更新
  • 攻击可行性评估
    • 攻击可行性评级方法应根据以下情况之一来定义办法

      • 基于攻击潜力的方法
      • 基于 CVSS 的方法
      • 基于攻击向量的方法
      • 选择方法可以取决于生命周期中的阶段和可用的信息
    • 如果使用基于攻击潜力的方法,应根据核心因素确定攻击可行性等级,包括:

      • 经过的时间、专家的专业知识、对该项目或组件的了解、机会之窗、设备
    • 如果使用基于 CVSS 的方法,则应根据以下情况确定攻击可行性等级在基本度量组的可利用度量上,包括:

      • 攻击矢量、攻击的复杂性、需要的特权、用户互动
    • 如果使用基于攻击矢量的方法,应根据评估攻击路径的主要攻击矢量(参见 CVSS 2.1.1 )来确定攻击可行性等级

  • 风险值的确定
    • 对于每个威胁情景,应根据相关损害情景的影响和相关攻击路径的攻击可行性来确定风险值
      • 如果一个威胁情景对应一个以上的损害情景或一个相关的损害情景在一个以上的影响类别中具有影响, 可以为每个影响等级单独确定一个风险值
      • 如果威胁情景与一个以上的攻击路径相对应,相关的攻击可行性评级可以适当地汇总,例如,威胁情景被赋予相应攻击路径的攻击可行性评级中的最大值。
    • 威胁情景的风险值应在 1 和 5 之间(包括 1 和 5),其中 1 的值代表最小风险
    • 风险值确定的方法:风险矩阵、风险公式
  • 风险处理决策
    • 对于每种威胁情况,考虑到其风险值,应确定以下一种或多种风险处理方案:
      • 避开风险、减少风险、分担风险、保留风险

参考资料: