机器人操作系统的漏洞检测优化方法、装置及设备
- 国知局
- 2024-08-19 14:22:40
本发明涉及程序漏洞检测,尤其涉及一种机器人操作系统的漏洞检测优化方法、装置及设备。
背景技术:
1、机器人操作系统(robot operating system,ros)在工业和学术环境中拥有广泛的应用,已成为开发机器人系统的事实上的标准,目前有数以万计的机器人操作系统支持的设备已融入我们的日常生活。机器人操作系统主要由两个部分组成:机器人操作系统应用程序和机器人操作系统运行时。它可以部署在多种操作系统上,包括linux、mac和各种实时操作系统。
2、机器人操作系统运行时是核心,提供基本功能,如消息传递和回调调度。其顶层包括客户端库实现,如c++用户库、python用户库和java用户库,提供不同语言的应用程序编程接口(application programming interface,api)实现,以便开发高级应用程序。在顶层之下是机器人操作系统客户端库(通用用户库),它是这些api的标准接口,提供系统调度和回调管理等基本功能。为了确保与不同数据分发服务(data distribution service,dds)实现的兼容性,通用用户库依赖于机器人操作系统中间件接口(rmw)作为中间桥梁。这使得分布式组件之间的通信更加高效。机器人操作系统应用程序部署各种用户特定的应用程序,每个应用程序都设计用于执行特定任务。每个应用程序通常由多个节点组成,每个节点都有通过主题和服务进行通信的回调。节点负责单个模块化的目的,它的回调是在响应特定事件(如接收消息或服务请求)时调用的函数,由c++用户库执行器管理,这些回调会根据机器人操作系统的实时要求进行调度。执行器还确保它们与消息事件的一致交互。
3、模糊测试(fuzz testing)作为一种高效的漏洞挖掘技术,已经成功地在各类系统中发现了无数关键漏洞。它通过随机生成符合待测对象输入规范的各类种子作为测试用例,并使用各种异常检测器来监控被测系统潜在的漏洞。此外,有些模糊测试引擎还采用覆盖率作为引导,以生成更有效的测试用例。这一方法不仅提升了测试的全面性,还增强了发现漏洞的能力。通过检查当前执行的测试用例是否触发了新的代码,来给予这些测试用例更高的变异优先级,进而测试到系统内更深层的代码。
4、但是,机器人操作系统由于专注于执行特定的任务,其控制流相对固定,因此代码覆盖率的变化性较为有限。这种局限性可能使得先前的代码覆盖率测试无法全面捕捉机器人操作系统内部复杂多样的状态转换。举例来说,不同的输入可能会引发系统展现出截然不同的行为模式,这在传统的代码覆盖率测试中可能无法得到充分反映,例如回调持续时间和消息吞吐量,但会导致相同的代码覆盖率。可见,传统的基于代码覆盖率的模糊测试方法对于机器人操作系统可能不够有效,无法充分探索其潜在的安全漏洞。因此,需要一种更适用于机器人操作系统的模糊测试方法。
技术实现思路
1、本发明提供了一种机器人操作系统的漏洞检测优化方法、装置及设备,解决了传统对机器人操作系统漏洞的模糊测试粗略、不全面的问题。
2、一种机器人操作系统的漏洞检测优化方法,在每个机器人操作系统机器人操作系统的模糊测试循环中,包括:
3、通过注册追踪器获取注册信息,通过运行时追踪器获取机器人操作系统的执行信息;所述注册信息包括与回调函数相关的属性以及回调函数所属的类型;
4、根据所述注册信息和所述执行信息构建回调追踪;
5、对所述回调追踪进行分析,验证是否产生新系统状态;
6、根据所述新系统状态生成新的测试用例,将所述新的测试用例作为下一轮循环的测试用例。
7、在本发明的一种实施例中,所述通过注册追踪器获取的注册信息,通过运行时追踪器获取机器人操作系统的执行信息,具体包括:在机器人操作系统的c++用户库层中安装第一追踪器,在通用用户库层中安装第二追踪器;当用户应用程序启动回调注册过程时,通过所述第一追踪器记录第一回调属性,并将所述第一回调属性写入数据检索缓冲区;当所述回调注册过程传播到通用用户库层时,通过所述第二追踪器记录第二回调属性,并将所述第二回调属性写入数据检索缓冲区;当所述c++用户库层的执行器调度回调函数执行时,通过运行时追踪器获取机器人操作系统执行过程中产生的数据,将其聚合后存储到特定的数据检索缓冲区。
8、在本发明的一种实施例中,所述根据所述注册信息和所述执行信息构建回调追踪,具体包括:将注册数据处理成结构化信息;所述结构化信息包括回调序列号和不同层的处理程序;基于每个模糊测试循环中的执行信息计算延迟指标,所述延迟指标包括回调延迟和消息延迟;将所述回调延迟和所述消息延迟指标进行合并构建回调追踪,所述回调追踪表示为两个不同的向量,其中,一个向量表示回调延迟,另一个向量表示消息延迟。
9、在本发明的一种实施例中,所述基于每个模糊测试循环中的执行信息计算延迟指标,具体包括:根据所述回调序列号、处理程序和第一时间戳确定回调延迟;根据所述回调序列号、消息缓冲区大小以及第二时间戳确定消息延迟。
10、在本发明的一种实施例中,所述回调序列号通过哈希函数生成,作为区分各种回调函数的唯一标识符;所述第一时间戳包括调用回调函数时的时间戳、回调函数开始执行时的时间戳和回调函数执行结束时的时间戳;所述第二时间戳包括消息发布和订阅的时间戳。
11、在本发明的一种实施例中,所述对所述回调追踪进行分析,验证是否产生新系统状态,具体包括:对所述回调追踪进行分析,根据判断指标识别新的系统状态;所述判断指标包括:
12、(1)判断回调追踪是否包含新的执行序列;
13、(2)判断特定回调的延迟是否与已建立的平均基准值存在高于第一预设阈值的偏差;
14、(3)判断特定消息的吞吐量是否存在比平均基准低于第二预设阈值的偏差;
15、当所述判断指标中存在至少一项为真时,确定产生新的系统状态。
16、在本发明的一种实施例中,所述运行时追踪器包括:第三追踪器,用于记录目标回调的处理程序;第四追踪器,用于记录回调开始时间的时间戳;第五追踪器,用于记录回调结束时间的时间戳;第六追踪器,用于记录通信信息,所述通信信息包括传入消息缓冲区的大小和与发布和订阅活动相关的时间戳。
17、一种机器人操作系统的漏洞检测优化装置,包括:
18、信息收集模块,用于通过注册追踪器获取注册信息,通过运行时追踪器获取机器人操作系统的执行信息;所述注册信息包括与回调函数相关的属性以及回调函数所属的类型;
19、回调追踪构建模块,用于根据所述注册信息和所述执行信息构建回调追踪;
20、新状态判定模块,用于对所述回调追踪进行分析,验证是否产生新系统状态;
21、用例生成模块,用于根据所述新系统状态生成新的测试用例,将所述新的测试用例作为下一轮循环的测试用例。
22、一种机器人操作系统的漏洞检测优化设备,包括:
23、至少一个处理器;以及,
24、与所述至少一个处理器通过总线通信连接的存储器;其中,
25、所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被执行,以实现如上述各实施例任一项所述的方法。
26、一种非易失性存储介质,存储有计算机可执行指令,所述计算机可执行指令由处理器执行,以实现如上述各实施例任一项所述的方法。
27、本发明提供了一种机器人操作系统的漏洞检测优化方法、装置及设备,至少包括以下有益效果:
28、首先,通过在机器人操作系统中插桩了跟踪器,能够更系统地收集系统行为;基于收集到的系统行为信息指示机器人操作系统的状态转换和输入处理过程,能够生成高质量有效载荷;在测试过程中,通过持续分析回调跟踪,识别触发新系统状态的输入,并以此为指导生成高质量的有效载荷,这种基于反馈的测试用例生成方法可以产生更高质量的输入,从而提高机器人操作系统模糊测试的效率。首先,本发明通过考虑状态转换,能够比传统基于代码覆盖率的测试方法探索更广泛的系统行为,能更全面的进行模糊测试。其次,通过识别新的系统状态,提供了更高的漏洞检测率,增加了发现关键漏洞的可能性。最后,基于反馈的有效载荷生成优化了测试过程,使模糊测试更加快速、精准,提高了的测试效率和可靠性。
本文地址:https://www.jishuxx.com/zhuanli/20240819/274973.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。