一种针对BGP协议栈的黑盒语义缺陷检测方法及系统
本技术涉及网络协议安全模糊测试,特别涉及一种针对bgp协议栈的黑盒语义缺陷检测方法及系统。
背景技术:
1、相关技术中,依托boofuzz通用模糊测试框架开展bgp自动化测试,具体地,利用boofuzz通过构建协议报文模板,对网络协议中的字段、块结构以及请求顺序进行描述,从而生成符合基本协议格式的测试输入。测试人员需要首先定义协议报文中的字段类型、长度关系以及多个请求之间的发送顺序,例如定义bgp open 报文中的version、my as、holdtime、optional parameters length 等字段,以及update报文中的 withdrawn routes、path attributes、nlri 等结构;随后框架根据预设策略对字段进行变异,生成异常输入;再通过传输控制协议(transmission control protocol,tcp)连接将测试数据发送至被测bgp协议栈;最后依据连接断开、目标崩溃、监控器反馈或日志信息判断是否触发异常。
2、在协议流程组织方面,boofuzz支持通过session和请求关系图组织多个报文之间的发送顺序。例如,可以在建立tcp连接后依次发送open、keepalive、update 等报文,以模拟bgp会话建立与路由交换过程。通过这种方式,测试输入能够在一定程度上进入协议栈的实际处理逻辑。
3、然而,相关技术中的boofuzz能够通过字段、块、长度字段、session及监控接口描述基础报文结构、请求顺序和目标运行状态,但在直接用于bgp测试时,跨层嵌套长度关系、跨报文关联关系、会话状态语义约束以及面向bgp响应特征的反馈引导策略仍需要测试人员进行较多定制开发,通用框架本身缺少面向bgp协议语义的一体化建模和判定机制,降低bgp语义缺陷挖掘的深度与效率,亟待解决。
技术实现思路
1、本技术是基于发明人对以下问题和认识作出的:
2、现代网络通信系统中,边界网关协议(border gateway protocol,bgp)用于自治系统之间交换路由可达性信息,是运营商骨干网、互联网交换中心以及大型数据中心边界网络中的关键控制平面协议。由于bgp位于网络控制平面的核心位置,一旦硬件设备或协议栈实现出现进程异常,会话频繁重建或者路由表发生异常,极易引发大范围路由重新收敛或收敛延迟、路由前缀撤回、路由振荡等连锁反应,其影响范围可能迅速扩散至多个区域网络。bgp协议栈的正确性直接关系到跨域路由传播、网络收敛以及互联网整体稳定性。
3、由于bgp协议需要维护复杂的会话状态机,并处理多种报文类型及其语义约束,其实现过程中需要处理大量状态转换、字段关联关系以及异常处理逻辑,增加了协议正确实现的难度。开发者或制造商在实现过程中若对异常输入校验不足,可能导致严重的安全隐患。例如,研究人员在多个主流bgp实现中发现过多类安全缺陷,包括frrouting、gobgp、bird、openbgpd等协议栈中的报文解析异常、属性处理错误以及会话状态异常问题。其中,frrouting曾披露 cve-2023-47234等缺陷,攻击者可通过构造异常bgp update 报文导致bgpd进程异常退出;此类问题会进一步影响边界路由设备的稳定运行,甚至造成路由振荡和控制平面不可用。因此,亟需对bgp协议栈中的缺陷进行系统性检测。
4、bgp协议栈广泛分布于多种网络设备、服务器操作系统与云网络平台之中,既包含开源实现或闭源实现,也包含用户态实现或内核协同实现。例如,linux环境中的frrouting、bird、gobgp,bsd 系统中的openbgpd,以及商业路由设备中的私有bgp实现均存在较大实现差异。这种环境异构性、实现差异性以及运行可观测性不足等特点,使得bgp协议栈测试面临较高难度。
5、目前,针对bgp协议的测试方法中,较常见的一类工具为boofuzz。boofuzz是一种通用网络协议模糊测试框架,测试人员可以使用其提供的字段、块、长度、会话等抽象来描述协议报文结构,并由框架自动对字段进行变异,将生成的输入发送至被测目标。
6、然而,该方法主要存在如下缺点:虽然boofuzz能够通过字段、块、长度字段、session及监控接口描述基础报文结构、请求顺序和目标运行状态,但在直接用于bgp测试时,跨层嵌套长度关系、跨报文关联关系、会话状态语义约束以及面向bgp响应特征的反馈引导策略仍需要测试人员进行较多定制开发,通用框架本身缺少面向bgp协议语义的一体化建模和判定机制,亟待改善。
7、本技术提供一种针对bgp协议栈的黑盒语义缺陷检测方法及系统,以解决相关技术中难以适配bgp报文复杂字段关联约束,无法深入挖掘协议深层语义异常,并且无法结构化提取多维度协议行为反馈,降低bgp语义缺陷挖掘的深度与效率等问题。
8、本技术第一方面实施例提供一种针对bgp协议栈的黑盒语义缺陷检测方法,包括以下步骤:基于边界网关协议bgp报文结构化模板所生成的bgp测试报文序列,建立目标测试端与被测协议栈之间的bgp会话,根据所述目标测试端维护的bgp状态机状态,以及从tcp连接事件和已交换的bgp报文中所获得的外部可观测信息,推定当前bgp会话所处的协议阶段,并利用所述当前bgp会话所处的协议阶段确定当前测试报文类型;根据所述当前测试报文类型与所述协议阶段确定对应字段变异节点,并对所述字段变异节点进行目标变异处理,获得变异测试报文序列,解析所述被测协议栈基于所述变异测试报文序列所返回的响应信息,并将所述响应信息对应的响应特征与历史响应特征进行对比,获得对比结果;判断所述对比结果是否满足预设更新条件,若满足所述预设更新条件,则将对应变异测试报文序列存入目标种子池,并检测被测协议栈是否满足预设异常条件,若满足所述预设异常条件,则利用对应变异测试报文序列执行异常复现验证,将满足预设验证条件的变异测试报文序列对应的异常缺陷作为所述bgp协议栈的黑盒语义缺陷。
9、可选地,在本技术的一个实施例中,在获得对比结果之后,还包括:若检测到所述对比结果满足所述预设更新条件,则将所述变异测试报文序列作为目标种子存入目标种子池中,生成更新的种子池;基于所述更新的种子池中的种子报文序列对应的bgp测试报文类型和所处协议阶段,匹配对应可变异字段,以确定新一轮的字段变异节点。
10、可选地,在本技术的一个实施例中,本技术实施例的方法还包括:对所述变异测试报文序列执行多轮重放,获得重放结果,并根据所述重放结果判断所述变异测试报文序列是否达到预设异常复现条件;若达到所述预设异常复现条件,则将所述变异测试报文序列对应的异常缺陷作为所述bgp协议栈的黑盒语义缺陷;若未达到所述预设异常复现条件,则将证据不足或暂未稳定复现的标记为待验证异常,确认由正常协议行为或者环境波动导致的标记为误报,并判断当前测试时间是否达到预设缺陷检测时间;若达到所述预设缺陷检测时间,则停止对所述bgp协议栈的黑盒语义缺陷检测,否则确定所述新一轮的字段变异节点。
11、可选地,在本技术的一个实施例中,所述基于边界网关协议bgp报文结构化模板所生成的bgp测试报文序列,建立目标测试端与被测协议栈之间的bgp会话,包括:根据所述bgp报文结构化描述模板生成所述bgp测试报文序列,其中,所述bgp报文结构化描述模板包括bgp公共报文头与会话协商报文open、保活报文keepalive、路由更新报文update、报错通知报文notification对应的字段描述;基于所述bgp测试报文序列,建立所述目标测试端与所述被测协议栈之间的连接,并维持所述目标测试端与所述被测协议栈之间的所述bgp会话,其中,所述bgp会话的交互方式包括建立tcp连接、交换open报文以及通过keepalive报文使会话进入established状态;在所述established状态下,根据测试目标执行update报文交互,并在单轮测试结束或异常触发后执行会话终止或测试环境恢复处理。
12、可选地,在本技术的一个实施例中,所述将所述响应信息对应的响应特征与历史响应特征进行对比,获得对比结果,包括:基于预设时序,将所述变异测试报文序列发送至所述被测协议栈,并解析所述被测协议栈返回的响应信息;根据所述响应信息提取可反映协议行为差异的响应特征,将所述响应特征与所述历史响应特征进行对比,获得所述对比结果;其中,所述响应特征包括返回报文类型、notification错误码及错误子码、错误数据长度、在预设观察窗口内是否继续发送keepalive报文及会话是否保持、是否接受update、连接关闭方式、是否观察到携带rst标志的tcp报文段、超时无响应和协议状态变化中的至少之一。
13、本技术第二方面实施例提供一种针对bgp协议栈的黑盒语义缺陷检测系统,包括:建立模块,用于基于边界网关协议bgp报文结构化模板所生成的bgp测试报文序列,建立目标测试端与被测协议栈之间的bgp会话,根据所述目标测试端维护的bgp状态机状态,以及从tcp连接事件和已交换的bgp报文中所获得的外部可观测信息,推定当前bgp会话所处的协议阶段,并利用所述当前bgp会话所处的协议阶段确定当前测试报文类型;处理模块,用于根据所述当前测试报文类型与所述协议阶段确定对应字段变异节点,并对所述字段变异节点进行目标变异处理,获得变异测试报文序列,解析所述被测协议栈基于所述变异测试报文序列所返回的响应信息,并将所述响应信息对应的响应特征与历史响应特征进行对比,获得对比结果;检测模块,用于判断所述对比结果是否满足预设更新条件,若满足所述预设更新条件,则将对应变异测试报文序列存入目标种子池,并检测被测协议栈是否满足预设异常条件,若满足所述预设异常条件,则利用对应变异测试报文序列执行异常复现验证,将满足预设验证条件的变异测试报文序列对应的异常缺陷作为所述bgp协议栈的黑盒语义缺陷。
14、可选地,在本技术的一个实施例中,本技术实施例的系统还包括:生成模块,用于在获得对比结果之后,若检测到所述对比结果满足所述预设更新条件,则将所述变异测试报文序列作为目标种子存入目标种子池中,生成更新的种子池;确定模块,用于在获得对比结果之后,基于所述更新的种子池中的种子报文序列对应的bgp测试报文类型和所处协议阶段,匹配对应可变异字段,以确定新一轮的字段变异节点。
15、可选地,在本技术的一个实施例中,本技术实施例的系统还包括:获取模块,用于对所述变异测试报文序列执行多轮重放,获得重放结果,并根据所述重放结果判断所述变异测试报文序列是否达到预设异常复现条件;第一判定模块,用于若达到所述预设异常复现条件,则将所述变异测试报文序列对应的异常缺陷作为所述bgp协议栈的黑盒语义缺陷;第二判定模块,用于若未达到所述预设异常复现条件,则将证据不足或暂未稳定复现的标记为待验证异常,确认由正常协议行为或者环境波动导致的标记为误报,并判断当前测试时间是否达到预设缺陷检测时间;判断模块,用于若达到所述预设缺陷检测时间,则停止对所述bgp协议栈的黑盒语义缺陷检测,否则确定所述新一轮的字段变异节点。
16、可选地,在本技术的一个实施例中,所述建立模块包括:生成单元,用于根据所述bgp报文结构化描述模板生成所述bgp测试报文序列,其中,所述bgp报文结构化描述模板包括bgp公共报文头与会话协商报文open、保活报文keepalive、路由更新报文update、报错通知报文notification对应的字段描述;建立单元,用于基于所述bgp测试报文序列,建立所述目标测试端与所述被测协议栈之间的连接,并维持所述目标测试端与所述被测协议栈之间的所述bgp会话,其中,所述bgp会话的交互方式包括建立tcp连接、交换open报文以及通过keepalive报文使会话进入established状态;在所述established状态下,根据测试目标执行update报文交互,并在单轮测试结束或异常触发后执行会话终止或测试环境恢复处理。
17、可选地,在本技术的一个实施例中,所述处理模块包括:解析单元,用于基于预设时序,将所述变异测试报文序列发送至所述被测协议栈,并解析所述被测协议栈返回的响应信息;对比单元,用于根据所述响应信息提取可反映协议行为差异的响应特征,将所述响应特征与所述历史响应特征进行对比,获得所述对比结果;其中,所述响应特征包括返回报文类型、notification错误码及错误子码、错误数据长度、在预设观察窗口内是否继续发送keepalive报文及会话是否保持、是否接受update、连接关闭方式、是否观察到携带rst标志的tcp报文段、超时无响应和协议状态变化中的至少之一。
18、本技术第三方面实施例提供一种电子设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序,以实现上述方法。
19、本技术第四方面实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储计算机程序,该程序被处理器执行时实现上述方法。
20、本技术第五方面实施例提供一种计算机程序产品,包括计算机程序,所述计算机程序被执行时用于实现上述方法。
21、本技术实施例可以基于bgp报文结构化模板生成测试报文序列,建立并维持测试端与被测协议栈的bgp会话,测试端根据tcp连接事件以及已交换的bgp报文等外部可观测信息,更新对当前bgp会话状态的判断,推定当前bgp会话所处的协议阶段,并据此确定当前测试报文类型,选定字段变异节点并执行变异处理得到变异报文序列,将被测协议栈返回的响应信息对应的响应特征与历史特征比对,若对比结果满足更新条件,则将对应报文序列存入种子池,若被测协议栈满足异常条件,则利用对应报文序列执行异常复现验证,将满足验证条件的报文序列对应的异常缺陷作为bgp协议栈的黑盒语义缺陷,有效提升了bgp语义缺陷挖掘的深度与效率。由此,解决了相关技术中难以适配bgp报文复杂字段关联约束,无法结构化提取多维度协议行为反馈,降低bgp语义缺陷挖掘的深度与效率等问题。
22、本技术附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本技术的实践了解到。
版权声明:本站专利文献数据主要来源于国家知识产权局等公开渠道,由 技术新讯 进行整理汇编。页面设计及数据汇编的著作权归本站所有。全部内容仅供个人学习、科研评估与技术交流参考,严禁用于任何商业用途(包括但不限于直接生产制造、技术转让、倒卖数据等)。
免责条款:专利技术具有时效性,本站不对资料的绝对准确性、完整性和可实施性提供任何明示或暗示的担保。因参考本站内容造成的直接或间接损失,本站不承担相关法律责任。若您认为本站内容有侵权问题,请及时提供权属证明与我们联系,本站将在核实后依法处理。反馈意见:yyfuon@163.com