RFC演进指导的协议实现漏洞挖掘方法

文档序号:36457738发布日期:2023-12-21 17:41阅读:28来源:国知局
RFC

本发明涉及软件安全与漏洞挖掘领域,尤其涉及面向网络协议软件的漏洞挖掘法方法,具体为一种rfc演进指导的网络协议软件漏洞挖掘方法。


背景技术:

1、网络协议软件的代码实现必须遵守相应的rfc(request for comments),并且随着rfc的演变进行更新。由于rfc具有内容丰富且关联关系复杂的特点,开发人员在支持新的rfc功能时,如果存在疏忽就可能会带来不一致的漏洞,这使得系统的发现因rfc演进而引入的协议软件漏洞变得至关重要。本发明将这种在支持新rfc过程中,因代码修改不完善或不正确引入的漏洞称为rfc演进漏洞。

2、现有方法,无论是网络协议的静态漏洞挖掘方法还是动态漏洞挖掘方法,都会借助rfc文档来辅助漏洞挖掘。ribdetector(saner’22)、hdiff(dns’22)和tcp-fuzz(usenixatc‘21)等方法利用自然语言处理技术或者人工的方式从rfc文档中提取报文结构,状态机等信息来进行漏洞挖掘。然而,rfc文档在演进过程中,不仅有显式的更新,还存在隐式的影响。在扩充新功能时,往往会隐式的影响原有功能。这种隐式的rfc演进关系不易被发现,并且现有工作几乎不考虑rfc演进问题,从而忽略了网络协议至关重要的演进漏洞。


技术实现思路

1、本发明的目的是针对现有方法基本不考虑rfc演进带来漏洞的问题,提出了一种rfc演进指导的网络协议实现漏洞挖掘方法,通过识别rfc文档间的演进关系从而推断演进规则,并基于代码注释与发行说明来识别演进规则相关的代码位置,最终通过比较演进规则与代码的一致性来挖掘协议实现的演进漏洞。

2、为实现上述目的,本发明采用以下技术方案:

3、一种rfc演进指导的协议实现漏洞挖掘方法,包括以下步骤:

4、1)从协议实现支持的rfc文档和iana注册信息中,提取rfc文档间的演进关系和rfc文档内的元信息;根据提取的rfc文档间的演进关系和rfc文档内的元信息进行报文重构,提取两类演进规则:原始规则和推导规则;

5、2)通过协议实现中报文解析代码特征来识别报文字段的代码位置,并利用文本信息辅助识别相似结构报文字段的代码位置,将提取的两类演进规则映射到识别的代码位置处的代码片段上;

6、3)利用提取的两类演进规则和识别的代码位置,对演进规则违反漏洞和绕过检查漏洞进行挖掘。

7、进一步地,步骤1)中rfc文档间的演进关系包括更新关系和扩充关系;其中,

8、从rfc文档中获取更新关系,步骤包括:遍历每个rfc文档的头部信息,从头部信息中获取rfc文档的更新关系;

9、从iana注册信息中爬取扩充关系,步骤包括:分析iana维护的协议分配注册表所包含的引入新数据的字段名称、有效取值范围、每个值被分配给的参数名称以及进行分配的扩充rfc文档;识别出扩充的字段及其对应的rfc文档,以及扩充的参数及其对应的rfc文档,确定rfc文档的扩充关系。

10、进一步地,步骤1)中将提取出的更新关系和扩充关系表示成元组序列,每个元组包括原始rfc文档、新的rfc文档、更新或扩充关系类型以及更新或扩充的报文字段;对于扩充关系,还包括新注册的参数。

11、进一步地,步骤1)中rfc文档内的元信息包括报文字段/参数名称、偏移、长度和响应码,以结构化形式描述;还包括字段间关联和错误处理逻辑,以自然语言的形式描述。

12、进一步地,步骤1)中报文重构的步骤包括:针对所有的演进关系,将新的rfc文档根据元信息转化成层次结构形式和形式化规则形式;对于存在对同一字段或参数的名称在iana和rfc中不一致的情况,对这些字段和参数采用同层次字段在rfc中的出现顺序以及有效取值范围作为启发式信息,用于rfc文档与iana的匹配。

13、进一步地,步骤1)中原始规则的提取步骤包括:对于更新关系类型,从新的rfc文档内的元信息中提取与被更新字段相关的规则,该规则即为原始规则;对于扩充关系类型,根据新的rfc文档内的元信息中对新参数在不同取值下的属性记录,生成带有if条件的原始规则。

14、进一步地,步骤1)中推导规则的提取步骤包括:按照rfc文档间的演进关系,将新的rfc文档内的元信息中新参数结构挂载到原始rfc文档内的元信息中更新或扩充的报文字段的对应偏移上,推导新参数对更新或扩充的报文字段的有效取值范围或长度属性的影响,得到推导规则。

15、进一步地,步骤2)中报文解析代码特征包括:如果一个报文结构体的字段大小和字段顺序与rfc规范一致,那么协议实现直接将接收到的数据报文复制或者赋值给一个结构体;否则,解析逻辑为逐一对接收的网络协议报文按照rfc的字段长度以及偏移进行字段解析。

16、进一步地,步骤2)中通过协议实现中报文解析代码特征来识别报文字段的代码位置的步骤包括:

17、定义pkt_meta表示一个特定类型报文mpkt的字段顺序和大小的元信息;

18、收集协议实现中的所有结构体信息,并筛选出大小和元素格式都小于等于pkt_meta中的结构体;

19、对于剩余的结构体,检查与mpkt具有相同强制字段大小和顺序的结构体,构建候选集合;若结构体被用来做类型转换或者是任何内存拷贝函数的目的参数,则将其加入到候选集合;

20、若候选集合为空,继续分析其他包含所有强制字段但顺序不同的结构体;

21、若一个结构体的变量类型总是被用在内存存储语句的基地址,并且从内存存储语句中收集到的偏移值集合与pkt_meta中记录的字段偏移集合相同,则将该结构体添加到候选集合中;

22、若候选集合中,mpkt中存在多个候选结构体,则选择出正确的一个作为mpkt的报文结构,并确认报文字段的代码位置。

23、进一步地,步骤2)中利用文本信息辅助识别相似结构报文字段的代码位置的步骤包括:

24、对每个报文字段fld,根据报文解析模式找到解析函数列表parselist(fld)和访问位置列表poslist(fld);

25、检查每个访问位置poslist(fld)中的代码位置的注释pos,查看是否包含fld字段名称,如果包含,则将其记录为fld的一个访问位置,并将pos和对应的解析函数parselist(fld)添加到精细化列表refined(fld)中;

26、对于精细化列表refined(fld)为空的字段fld,根据已恢复的报文结构,查找与fld同层的字段,且同层字段的精细化列表不为空;寻找fld中与不为空的同层字段的偏移量相同的字段所在解析函数,并根据上层type字段进行区分,以确定最终的正确解析函数并加入到精细化列表refined(fld)中;

27、对于仍未得到精细化列表refined(fld)的字段fld,搜索协议实现的发行说明信息,找到支持新rfc文档的协议实现的版本信息,通过分析该版本的提交信息,找到与fld有关的修改的代码函数,并加入到精细化列表refined(fld)中,从而最终确定相似结构报文字段的代码位置。

28、进一步地,步骤3)中演进规则违反漏洞挖掘步骤包括:

29、为协议实现的每一个函数构造控制流图cfg和支配树;

30、收集所有与rfc特定条件相关的变量定值点,然后利用到达定值分析方法找到使用这些变量的条件检查;

31、对于每个条件检查cond,从识别的代码位置即特定操作位置op的最近前必经节点开始遍历,收集约束条件;

32、确认是否同时满足这两个条件:条件1是cond存在于从入口到op的每条路径上,条件2是每条路径上的cond都为真;如果有一个或两个条件不满足,则确认存在演进规则违反漏洞;

33、若约束条件与rfc条件的否定的并集是可满足的,则至少有一条路径不符合rfc规则,从而确定演进规则违反漏洞。

34、进一步地,步骤3)中绕过检查漏洞的挖掘步骤包括:

35、对于每个规则的条件,需要检查两个条件:a)在规则的条件检查失败的路径上需要设置错误码;b)错误码需要返回到最终的错误处理函数中;

36、分析函数中出现在规则指定条件为false路径上的返回值,并跟踪其在上层调用函数中的访问位置,直到到达报文解析入口函数;

37、如果错误码被大于0的值覆盖而未继续向上层调用函数传递,则记录为绕过检查类漏洞。

38、本发明方法具有的优点如下:

39、1.综合考虑rfc文档演进关系:本发明方法利用rfc文档间的演进关系来推断演进规则,包括原始规则和推导规则,通过综合考虑更新关系和扩充关系,能够更全面地捕捉网络协议的演进情况,从而提高漏洞挖掘的准确性和全面性。

40、2.结合代码特征和文本信息:本发明方法结合了协议实现中报文解析代码的特征和文本信息来确认报文字段位置,通过对代码的分析和文本信息的辅助,能够更准确地确定报文字段位置,从而为后续的漏洞挖掘提供准确的基础。

41、3.多层次挖掘漏洞:本发明方法不仅挖掘演进规则违反漏洞,还挖掘绕过检查类漏洞,通过对演进规则的一致性比较和错误处理的分析,能够全面地挖掘网络协议实现中可能存在的漏洞,包括规则违反类和绕过检查类漏洞。

42、4.使用静态代码分析:本发明方法采用静态代码分析的技术来挖掘漏洞,避免了实际运行代码的开销和风险,通过构造控制流图和支配树,收集变量定值点,并进行到达定值分析,能够高效地分析代码中的漏洞潜在位置,提高挖掘的效率和精确性。

43、5.考虑协议实现演进:本发明方法通过分析协议实现的发行说明信息和注释信息,能够考虑协议实现所支持的rfc演进情况,从而更好地理解漏洞的产生和修复过程,对于相似结构报文的字段位置的确定,结合文本信息,能够更好地应用于支持不同协议演进规则的协议实现中,提高挖掘的适用性。

44、综合,本发明方法能够更准确、全面地挖掘网络协议实现中的漏洞,为网络安全领域提供有力的支持。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1