0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

SOME/IP协议安全攻击

上海控安 来源:上海控安 作者:上海控安 2023-08-08 15:25 次阅读

作者 |张昊晖上海控安可信软件创新研究院工控网络安全组

来源 |鉴源实验室

社群 |添加微信号TICPShanghai”加入“上海控安51fusa安全社区”

01

引 言

随着汽车行业对于数据通信的需求不断增加,SOME/IP作为支持汽车以太网进程和设备间通信的一种通信协议应运而生。根据研究[1]表明,第一代使用SOME/IP的汽车以太网包含了几个交换机和少量以太网ECU,每个ECU提供了十余种服务。SOME/IP具有轻量化、高效、以接收方的需求为主导的特点,并且能够提供过程调用和事件通知,逐渐被多种汽车设备所使用。然而,正是由于其被广泛使用和其重要性,SOME/IP协议也成为了潜在的攻击目标。本文将介绍SOME/IP协议的基本原理,并探讨可能的攻击方式和防范措施。

02

SOME/IP协议

可扩展的面向服务的IP中间件(Scalable service-Oriented MiddlewarE over IP,简称SOME/IP)[2]是一种中间件规范,专门用于传输和序列化控制信号,特别是在汽车应用场景中。SOME/IP建立在(汽车)TCP/IP或UDP/IP协议栈之上,为应用程序提供了一个抽象的面向服务的接口(参见图1)。因此,应用程序无需处理IP地址和端口,而是使用服务进行通信。SOME/IP的主要目标是实现灵活且带宽高效的通信。

wKgaomTR7dCAc01bAABi_QBZ0-o199.png

图 1 SOME/IP架构

SOME/IP可以大致分为三个部分:服务发现(Service Discovery,SD)、远程过程调用(Remote Procedure Call,RPC)和对进程数据的访问。SD使服务器ECU能够发布服务,并使客户端ECU能够订阅车辆网络中的服务,这些服务由服务ID标识,并可根据需要附加选项,例如终端选项(即IP地址、传输协议(UDP/TCP)和端口号)。网络中可以存在多个具有相同服务ID的服务实例,并通过不同的实例ID进行唯一标识。可以使用RPC访问提供的服务,并可以接收有关事件的通知。应用程序可以使用set和get来访问进程数据。

SOME/IP-SD用于定位服务实例、检测服务实例是否正在运行,并实现发布/订阅处理[3]。为了提供服务实例,服务器会发送一个多播服务提供消息OfferService(Service ID,Instance ID),可选择包括上述终端选项在内的其他选项。服务器可以通过发送StopOffer(Service ID,Instance ID)消息来停止提供服务实例。如果客户端未收到具有所需服务ID的合适服务提供消息,则可以主动发送FindService(Service ID,Instance ID)消息,服务器可以回答并提供所请求的服务。实例ID可以设置为特定值,也可以设置为0xFFFF,以找到所有服务实例。发布/订阅机制可用于客户端需要从服务器获取一组信号,但又不想每次手动请求该信息的情况。客户端通过SubscribeEventgroup(Service ID,Instance ID)向事件组订阅,并由服务器确认SubscribeEventgroupACK(Service ID,Instance ID)。客户端通过StopSubscribeEventgroup(Service ID,Instance ID)消息取消订阅。在订阅活动期间,服务器会定期向客户端发送事件消息。此外,SOME/IP为服务实例提供了负载平衡选项。服务器可以在其服务提供中设置优先级和权重。客户端应选择具有最高优先级的服务。如果具有相同优先级的多个服务实例,则应基于服务实例的权重随机选择服务实例。SOME/IP协议定义了以下几种主要的通信模式:

(1)请求-响应方法(Request&Response Method):在请求-响应方法下,一个模块作为Client端在寻找所需服务时发现其正在有效生存时间内,发送一个请求消息,另一个提供该服务的Server端必须回复该请求消息。若请求消息存在差错,会回复错误信息给到Client端。Client端期望在发送请求后,接收到相应的响应消息。这种模式适用于需要请求和获取特定数据或执行特定操作的场景,如传感器数据获取、控制指令下发等。

wKgZomTR7dGAd7aFAAArYR2kcJg628.png

图 2 请求-响应方法(Request&Response Method)

(2)请求-无响应方法(Fire&Forget Method):在请求无响应方法下,一个模块作为Client端在寻找所需服务时发现其正在有效生存时间内,发送一个请求消息,另一个提供该服务的Server端无需回复该请求消息。即使请求消息存在差错,也不会回复错误信息。

wKgaomTR7dGAdZ75AAARz-SpsQQ487.png

图 3 请求-无响应方法(Fire&Forget Method)

(3)事件通知(Event):在事件通知模式下,作为Server端的模块会对已经订阅其服务的Client端发送状态值或者触发事件的通知。这种模式适用于实时共享状态信息和事件通知的场景,如交通事件发布、环境变化通知等。

wKgZomTR7dKAWaOJAAAyQThipzE642.png

图 4 事件通知(Event)

(4)域值通知(Field):域值通知模式是对于Method和Event数据包的组合,它提供了3种通信流程:

① Notify:Notify报文一般会在Client订阅服务之后,由Server端发送,用于通知域值。

wKgaomTR7dKAFEuEAAAw4X45yVM392.png

图 5 Notify

② Getter:Getter报文使用请求响应方法的模式,当Client端向Server端发送获取域值的请求时,Server端返回当前域值。

wKgZomTR7dKAB4RRAAAT9Uw4qks861.png

图 6 Getter

③ Setter:Setter报文使用请求响应方法的模式,当Client端向Server端发送设置域值的请求时,Server端返回更新后的域值。

wKgaomTR7dOAOpJ9AAAvF5MGNKI561.png

图 7 Setter

这些通信模式为SOME/IP协议提供了灵活的通信方式,使得车辆内部模块和车辆与外部实体之间可以以适当的方式进行通信和数据交换。通过选择合适的通信模式,车辆系统可以实现高效的数据交换、实时的事件通知和灵活的方法调用,以满足各种复杂的应用需求。

03

SOME/IP攻击

SOME/IP协议最经常出现的攻击类型是中间人攻击。中间人攻击是攻击者在受害两方都未发现攻击者身份的情况下实施数据窃听和篡改的攻击类型。在以太网环境下,可以通过与受害方同时连接同一个交换机达到中间人攻击的效果。对于SOME/IP的通信,有以下3种不同的中间人攻击方式[4]:

(1)服务提供上的复制攻击

此类攻击的操作与重放攻击类似,但实现的环境是在中间人的环境下。图8简单地展示了这种攻击的实现方式:

首先客户端、攻击者和服务端均处在同一个交换机网络下,互相都能接收到彼此的数据。接着服务端在启动服务并进入到正式阶段(Main Phase)后,会周期性地在这个交换机网络中广播自己提供的服务,例如图中所示服务端提供了0x1234和0x5678这2个服务ID的服务,并让客户端和攻击者都收到了这条广播数据。此时,采用复制攻击的攻击者会立刻复制这条广播报文,修改IP地址和端点信息,伪造自己在这个交换机网络中也提供同样的服务。当然因为攻击者只能在SOME/IP协议层面进行复制攻击,无法对下层通信进行干预,因而客户端就会在短时间内收到2条宣称自己具有0x1234和0x5678服务的广播报文,然后可能会选择攻击者发送的这条广播报文进行回复,即图中的请求服务。一旦攻击者收到客户端的请求服务,就会把这条报文带有客户端的身份信息修改为自己的身份信息,但请求服务内容不变地发送到服务端。攻击者再接着把服务端回复的服务内容转发给客户端,这样就完成了一次中间人转发操作。并且对于服务端,攻击者会被认为是真正的客户端,而对于客户端会把攻击者当成提供服务的节点。在成功进入这个中间人环境后,攻击者可以进行下一步深层次的攻击。

wKgZomTR7dOAOHAQAADBnLcFm9w271.png

图 8 服务提供上的复制攻击

(2)服务提供上的断连攻击

第一种复制攻击看似很容易能进入到中间人的环境中,但具有一定的局限性:

①客户端可能已经与服务端建立了连接,不会再对攻击者的广播作出反应。

②即使客户端未与服务端建立连接,也不能保证客户端选择攻击者的广播报文发送请求,因为服务端永远比攻击者先发出去原始报文。

③根据SOME/IP官方文档,不可复用服务端提供的Instance ID,但还要根据客户端能够接受的Instance ID伪造Offer报文。

由于以上的问题,一种基于复制攻击的断连攻击被提出了,如图9所示:

可以看到图的下半部分与复制攻击的后半部分一致,就是攻击通过伪造提供服务的报文,让客户端与自己连接,完成客户端与服务端之间的消息传递。但区别就在于服务端广播提供服务报文时,攻击者会立刻向客户端发送一条伪造成服务端身份的单播停止提供服务报文,同时再把自己伪造的服务广播在这个网络中。

与复制攻击相比,断连攻击会让客户端断绝与服务端建立连接的机会,无论它是已经与客户端相连还是刚选择了服务端提供的服务。伪造StopOffer可以帮助攻击者稳定地与客户端建立连接。

断连攻击看似更加好用,实际也存在一些限制。停止提供服务的报文必须要通过单播的方式发送到客户端手中,这是因为一旦服务端收到了这条消息,它会认为存在其他服务端提供相同的服务,不会再提供重复服务。这样就会导致中间人环境无法建立,因为服务端不会再对攻击者转发的请求进行任何回复。由于单播这一限制条件,攻击者必须知道对该服务感兴趣的客户端。换言之就是知道可能与服务端建立连接的客户端的信息,这样才能成功将单播的断连报文发送到客户端手中,达成后续目的。

wKgaomTR7dOAAc_gAADsZwtuuKM805.png

图 9 服务提供上的断连攻击

(3)发布订阅上的攻击

前2种攻击在成功后,表现形式均为能够正常转发请求/回复数据。除了转发请求或回复的数据,也可以通过退订的操作最终导致可以转发事件信息。图10清晰地展示了整个流程:

服务端还是按照惯例广播自身提供的服务,接着客户端和攻击者都订阅了服务端的事件组,并收到了服务端的确认帧,此时说明服务端也记录下了客户端和攻击者分别的断端点信息。

然后攻击者会通过上面2种服务提供上的攻击的其中一种,让客户端信任自己具有它需要的服务事件组,客户端就会订阅攻击者的事件组。攻击者一收到订阅报文,就会回复确认帧,并立刻伪造一条包含客户端端点信息的退订事件组报文,让服务端不再将事件信息发送给客户端。而此时,攻击者与服务端之间的连接还存在,因此可以把服务端的事件更新信息转发给客户端,达到中间人攻击的环境。

wKgZomTR7dSAYhp-AAGWJDXz5xQ676.png

图 10 发布订阅上的攻击

参考文献:

[1]Seyler, N. Navet, and L. Fejoz. 2015. Insights on the Configuration and Performances of SOME/IP Service Discovery. SAE Int. J. Passeng. Cars – Electron. Electr. Syst. 8 (04 2015), 124–129.

[2] AUTOSAR. 2018.Specification on SOME/IP Transport Protocol - CP Release 4.4.0.

[3] AUTOSAR. 2018.Specification of Service Discovery - CP Release 4.2.2.

[4] Daniel Zelle, Timm Lauser, Dustin Kern, Christoph Krauß, Analyzing and Securing SOME/IP Automotive Services with Formal and Practical Methods, ARES 21: Proceedings of the 16th International Conference on Availability, Reliability and SecurityAugust 2021, Article No.: 8 Pages 1–20

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 以太网
    +关注

    关注

    40

    文章

    5425

    浏览量

    171721
  • IP协议
    +关注

    关注

    3

    文章

    85

    浏览量

    21652
  • ecu
    ecu
    +关注

    关注

    14

    文章

    886

    浏览量

    54504
  • Some
    +关注

    关注

    0

    文章

    3

    浏览量

    6172
收藏 人收藏

    评论

    相关推荐

    汽车网络安全攻击实例解析(二)

    本文则选取典型的智能网联汽车网络安全攻击实例展开详细介绍。
    的头像 发表于 08-08 15:17 1611次阅读
    汽车网络<b class='flag-5'>安全攻击</b>实例解析(二)

    RFID应用系统没有的安全问题怎么解决?

    。针对RFID的主要安全攻击可简单地分为主动攻击和被动攻击2种类型。主动攻击主要包括: (1)从获得的RFID标签实体,通过逆向工程手段,进行目标RFID 标签重构的复杂
    发表于 08-01 07:35

    新唐对应四大物联网安全攻击的保护措施

    ,智能家居及娱乐等则会发生个人信息被窃取的风险。因此如何从装置本身就做好安全防护是联网产品在设计规划初期就必须审慎思考的项目。 物联网设备安全必须保护系统、网络和数据免受广泛的物联网安全攻击,这些
    发表于 08-21 08:14

    ARP协议攻击及其解决方案

    由于ARP协议的设计缺陷,使得ARP协议在使用的过程中存在着盗用IP地址和ARP欺骗等严重的安全问题。本文分析ARP攻击的基本原理,并提出相
    发表于 06-11 10:17 16次下载

    车载以太网的SOME/IP-SD协议了解与认识

    通过之前的文章我们了解到了SOME/IP协议的基本组成与SOME/IP的具体工作过程,同时也提到了SOM
    的头像 发表于 08-10 10:53 3019次阅读

    基于SOME/ IP可扩展面向服务的中间件

    PDU 路由组管理需要管理启用到禁用的套接字PDU 路由,SOME/IP - 套接字适配器 [SoAD] - AUTOSAR 模型构建块,可用于通用上层支持SOME/IP中的服务发现。
    的头像 发表于 09-08 17:34 1369次阅读

    介绍一种用于SOME/IP应用的灰盒模糊器Ori

    随着智能汽车设备的出现,这些设备之间的数据通信变得越来越重要。SOME/IP是一个轻量级协议,用于促进进程/设备间的通信,它支持程序性调用和事件通知。由于其简单性和性能,SOME/
    发表于 09-21 17:47 971次阅读

    SOME/IP-SD有何作用

    车载以太网协议栈总共可划分为五层,分别为物理层,数据链路层,网络层,传输层,应用层,其中今天所要介绍的内容SOME/IP就是一种应用层协议
    的头像 发表于 10-24 10:58 1866次阅读

    SOME/IP-SD有何作用

    车载以太网协议栈总共可划分为五层,分别为物理层,数据链路层,网络层,传输层,应用层,其中今天所要介绍的内容SOME/IP就是一种应用层协议
    的头像 发表于 10-24 11:00 1277次阅读

    详细介绍一下SOME/IP协议

    Payload,也叫有效载荷,是消息内容,通常它的长度是可变的。SOME/IP协议在OSI七层网络结构中位于应用层,它建立在TCP或者UDP传输层协议之上。
    的头像 发表于 01-18 16:06 4616次阅读
    详细介绍一下<b class='flag-5'>SOME</b>/<b class='flag-5'>IP</b><b class='flag-5'>协议</b>

    汽车网络安全攻击实例解析

    近年来,汽车网络安全攻击事件频发,而汽车智能化和网联化所带来的安全隐患也与日俱增,研究人员除了考虑如何加入防御措施之外,还应该站在攻击者的角度来分析历史的攻击事件以及
    的头像 发表于 03-24 11:36 2272次阅读
    汽车网络<b class='flag-5'>安全攻击</b>实例解析

    汽车SOME/IP模糊测试的常规设计步骤

    汽车以太网上的众多上层协议中,SOME/IP 是一种专门针对汽车的协议,通过 UDP 协议栈提供基于服务的通信,使不同车辆组件之间进行基于服
    发表于 04-08 10:41 2240次阅读

    新唐对应四大物联网安全攻击之保护措施

    新唐对应四大物联网安全攻击之保护措施
    的头像 发表于 08-10 11:02 543次阅读
    新唐对应四大物联网<b class='flag-5'>安全攻击</b>之保护措施

    SOME/IP协议的基本原理

    随着汽车行业对于数据通信的需求不断增加,SOME/IP作为支持汽车以太网进程和设备间通信的一种通信协议应运而生。根据研究[1]表明,第一代使用SOME/
    发表于 08-30 10:29 1538次阅读
    <b class='flag-5'>SOME</b>/<b class='flag-5'>IP</b><b class='flag-5'>协议</b>的基本原理

    some/ip协议是什么

    SOME/IP采用服务器-客户端的服务通信模式,它提供了一种标准化的、可扩展的、灵活的方式来实现汽车电子控制单元(ECU)之间的通信。 随着汽车电子系统变得越来越复杂,对实时性、安全性和可扩展性
    的头像 发表于 02-16 17:19 2219次阅读
    <b class='flag-5'>some</b>/<b class='flag-5'>ip</b><b class='flag-5'>协议</b>是什么