【AutoCS】基于DDS的模糊测试研究

文摘   2024-12-24 17:46   上海  

作者 | 柳泽 上海控安可信软件创新研究院
来源 | 鉴源实验室
社群 | 添加微信号“TICPShanghai”加入“上海控安51fusa安全社区”


01

引 言


近年来,随着工业4.0和智能网联技术的发展,数据驱动型系统的需求日益增加,推动了诸如 DDS(Data Distribution Service)等高效数据分发中间件的应用和发展。在工业制造和智能网联领域,实时性、可靠性以及可扩展性成为系统设计中不可或缺的要素,传统的数据传输和通信架构难以满足这些需求。因此,DDS 作为一种标准化的发布/订阅通信模型,逐渐受到广泛关注。

DDS最早应用于国防军工,欧美的主流军工厂商,如THALES泰雷兹、、Raytheon雷神、Lockheed Martin洛克希德·马丁均采用DDS中间件为其作战指挥与控制系统、无人机、导弹发射控制的提供通信服务。随着自动驾驶技术的快速发展和车联网(V2X)的普及,为满足智能网联汽车车内多种传感器之间,以及与车外高带宽,低延迟的数据传输需求,DDS于2018年被引入AUTOSAR。DDS 系统通常承担着实时数据分发和通信的重任,其安全性和稳定性变得至关重要。一旦发生故障或遭遇恶意攻击,可能导致严重的系统失效或数据泄露,进而影响业务连续性和人身安全。因此,对DDS进行深入研究,挖掘并消除潜在漏洞,确保 DDS 中间件的稳定性和可靠性对于工业自动化、智能化控制的安全至关重要。


02

DDS介绍

DDS(Data Distribution Service) 是一种用于实时系统的中间件标准,由对象管理组织 (OMG, Object Management Group) 制定。它专门设计用于支持分布式系统中的高效、可靠和可扩展的数据交换,尤其在高性能、实时性和可用性要求较高的分布式场景中应用。以下是DDS的应用示意图:

图 1

在 DDS(Data Distribution Service)中,“域” 是一个重要的概念,它用来组织和隔离数据通信,以便在大型分布式系统中实现高效和有序的数据管理。每个域由一个唯一的域标识符(Domain ID)进行标识。DDS中的通信实体为域参与者(DomainParticipant),只有同一个域中的域参与者才可相互通信。在域之下,对通信的主题Topic进行了进一步的划分,只有参与者参与到了同一Topic时,两者才能进行通信。Topic通信中有两种角色:

· Publisher:Topic消息的发布者,可以同时有1个或多个发布者。

· Subscriber:Topic消息的订阅者,可以同时有1个或多个发布者。

DDS在网络协议栈中位于TCP和UDP之上,并且基于TCP和UDP来进行发送。DDS的规范中针对网络实时发布订阅,规定了实时发布订阅(Real-Time Publish Subscribe,RTPS)协议。

图 2

RTPS 是 DDS 中的一个通信协议,专门用于在分布式系统中实现实时数据分发。RTPS 是 DDS 的核心传输协议,负责确保数据在网络上传输的实时性和可靠性。其主要特性包括:

· 数据传输:RTPS 确保发布者和订阅者之间的数据能够以实时和高效的方式传输。根据配置的 QoS 策略,RTPS 可以保证数据传输的可靠性和传递顺序,满足不同应用场景的需求。

· 自动发现:RTPS 支持节点之间的自动发现机制,允许分布式系统中的发布者和订阅者在启动时自动找到彼此,而无需手动配置。这使系统的动态扩展变得更加容易。

· QoS 管理:RTPS 协议支持多种 QoS 策略,如可靠性、持久性和传输优先级,提供对数据传输的严格控制,满足不同的实时性和可靠性要求。

图 3

RTPS协议的消息报文结构如图3所示,主要头(Header)、头拓展(HeaderExtention)、子消息(Submessage)组成。Header负责定义RTPS消息的域和节点信息,而功能的控制是由各个子消息来实现的,每个RTPS可以有一个或多个子消息。每个子消息都有特定的用途,用于在发布者和订阅者之间协调数据分发、可靠性控制以及参与者的自动发现。以下是 RTPS 的主要子消息类型:

图 4

各子消息的报文结构及功能可见DDSI-RTPS v2.5,在此不做深入探讨。

03

DDS协议模糊测试技术

3.1 DDS漏洞分析

基于DDS的中间件因其去中心化,Qos机制丰富,耦合度低,数据分发高效灵活等特性,被诸多高分布式系统采用,其中ROS2已将fastDDS当作长期发布版本的默认中间件。除此之外,Eclipse CycloneDDS、GurumNetworks GurumDDS、OCI OpenDDS、RTI Connext DDS等不同厂商的DDS开源工程也被行业广泛应用。这些项目尽管在性能和功能上不断优化,但也不可避免地暴露出各种安全漏洞。根据CVE(Common Vulnerabilities and Exposures)数据库的统计,对开源DDS项目的安全漏洞记录已达41条之多,这些漏洞可能被利用来发动多种类型的网络攻击,如拒绝服务、信息泄露和未经授权的访问等。下面介绍一些DDS中挖掘出来的CVE漏洞:

1)子报文解析中的错误格式的处理不当

DDS-RTPS协议中,不同节点的通信控制都是依靠子消息的来实现。DDS-RTPS消息中支持携带一条或者多条子消息,且DDS-RTPS的报文种类与的格式变化丰富,因此子消息的解析过程处理不当也会造成很多漏洞。多子消息的DDS-RTPS报文依靠子消息头中的子消息长度来解析单条子报文,如图5所示:

图 5

攻击者可以利用子消息解析过程中的漏洞,构造恶意拼接的复杂子报文,致使RTPS报文解析出错误的消息。CVE-2024-28231中,攻击者通过刻意构造数据包的结构,使得 uint32_t型的参数payload_size被计算为-1(被转译成0xFFFFFFFF),最终导致了缓冲区溢出的错误。

图 6

为了触发该漏洞,攻击者需要构造特定DATA报文使得程序进入该位置。攻击者精心构造了子消息头的长度OctetsToNextHeader,InlineQos的偏移量octetsToInlineQos,以及inlineQosSize,最终使得payload_size计算异常。

2)子消息缺乏隐私安全保护措施

该类漏洞是由于DDS-RTPS报文的子消息中存在很多控制相关的命令,对于该类命令的传输如果不进行有效的安全加密,则会外部攻击者通过伪造合法节点在网络中进行恶意网络攻击行为。CVE-2023-50257描述了eProsima Fast DDS(前称为Fast RTPS)中存在的一个严重漏洞。在Fast DDS的实现中,用于断开节点连接的数据(如p[UD])和guid值未被加密。这一缺陷允许攻击者构造并发送恶意数据包,从而强行断开订阅者(Subscribers)与发布者(Publishers)的连接。攻击者可以发送特制的断开连接数据包到全局数据空间,并使用特定的发布者ID。这样,所有连接到该发布者的订阅者将断开连接,并无法接收数据,且通过持续发送断开连接的恶意数据包,攻击者可以阻止订阅者与发布者重新建立连接,导致分布式系统中的数据传输中断。

3)缺乏逻辑检查

该类漏洞是由于程序在接收外部数据输入时,未进行有效的逻辑结构检查,使得外部程序可以在没有初始化等前置操作时便去进行进一步应用处理。CVE-2023-50716描述了一个典型的未初始化导致DDS程序崩溃的例子。输入的无效DATA_FRAG子消息会使得CacheChange_t对象在未对inline_qos和serializedpayload进行初始化时便去释放内存,最终导致了程序的终止。

3.2 DDS-RTPS协议模糊测试

DDS 中间件通过“发布-订阅”模式提供一个高效的数据分发引擎,抽象化了底层的通信细节,简化了数据传输和消息管理。虽然DDS中间件简化了应用开发者的开发流程,但是也使自身暴露在复杂的分布式网络环境中。DDS开源软件漏洞分析的案例分析中,很多漏洞都是攻击者伪装成网络节点,通过精心构造报文来引发DDS中间件的崩溃。通过发送特定协议报文触发漏洞来实现网络恶意攻击的方式使得攻击者可以用低廉的成本来达成攻击目的。因此,有必要通过模糊测试的方式预先排查并修复漏洞,提升产品的鲁棒性和稳定性。

SmartRocket TestSec是一款针对工业互联网协议的自动化智能黑盒模糊测试工具。工具的模糊测试测试功能支持CAN、CAN FD、Ethernet、USB、BlueTooth、WIFI等不同硬件类型的模糊测试,DDS-RTPS的协议模糊测试属于工具的Ethernet模糊测试用例。DDS-RTPS的协议模糊测试有以下特性:

· 被测件的互操作性检查

· 用户自定义配置DDS-RTPS报文的待模糊字段

· 用户自定义配置监控套件监控被测件状态

· 支持模糊的交互过程全记录

· 支持crash报文记录及向前回溯

· 支持结果报告自动生成

图 7

TestSec协议模糊测试页面(图7)勾选添加了RTPS模糊测试用例之后,可以通过用例说明了解各个报文字段的意义,并根据需求选择特定的字段进行模糊。RTPS协议模糊测试支持用户添加多个子消息以模拟真实的RTPS报文格式。用户可以固定填写关键参数信息使得报文信息可以发送到指定的被测件上或者使被测件进入特定的报文交互模式,以更快的测试具体功能。以CVE-2024-28231的POC为例,用户可以固定部分字段,并对其赋予有意义的值,对想要模糊测试的字段进行变异勾选。

图 8

然后利用ASAN监控套件,检测被测软件的状态。在检测到Crash后,TestSec会汇总监控信息、以及模糊用例的信息,并最终生成测试报告,见图10。

图 9

图 10

参考文献:

1. https://github.com/eProsima/Fast-DDS/security

2. https://www.omg.org/spec/DDSI-RTPS/

3. AUTOSAR. (2022). Specification of Secure Onboard Communication. AUTOSAR Standard Working Specification.



往期文章
点击链接阅读原文

1.符合强制性国标《汽车整车信息安全技术要求》的汽车网络解决方案



2.智能网联汽车协议模糊测试技术概述



3.SOME/IP协议安全攻击



4.TCP协议网络安全攻击



5.TLS协议基本原理与Wireshark分析



6.智能网联汽车网络安全攻击与防御技术概述



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





ArtiAuto 匠歆汽车
匠歆会展是一家全球性的活动公司,通过会议和培训向汽车制造、出行、教育、生命科学等行业的领先商业、学术、政府和研究机构提供前沿信息。旗下品牌包括匠歆汽车(ArtiAuto)、匠歆出行(ArtiMobi)、匠歆教育(ArtiEdu)等。
 最新文章