面向资源解耦的域名系统权威引擎自动化验证方法

文档序号:43765067发布日期:2025-11-15 00:30阅读:24来源:国知局

本技术涉及软件测试,具体而言,涉及一种面向资源解耦的域名系统权威引擎自动化验证方法。


背景技术:

1、分布式机器学习的应用规模与日俱增,功能也愈发复杂;许多应用采用资源解耦合的架构,对底层网络的安全可靠性提出了更高要求。其中,dns(domain name system,域名系统)对网络的正常运转起到至关重要的作用。它提供域名解析服务,将可读的域名转换为ip(internet protocol,互联网协议)地址,从而实现对在线服务的访问。dns系统的核心是权威引擎(authoritative engine),它负责将接收到的dns查询与本地配置的权威dns区域记录进行匹配,并生成相应的dns响应。对于需要维护不同权威引擎实现的云服务提供商和网络运营商而言,确保权威引擎的正确性至关重要;在给定区域配置的前提下,权威引擎能够为任何查询生成正确的响应。

2、然而确保dns权威引擎的正确性是一项极具挑战的工作,需要在代码实现层面进行全面的分析。任何形式的这种分析都受阻于权威引擎中处理多种dns记录类型的复杂逻辑、高度优化和定制化的代码实现、以及庞大的代码规模(例如,在bind 9(berkeleyinternet name domain 9,伯克利域名系统的第9个版本)中,约10,000行代码与域名解析相关)。

3、在相关技术中,基于自动化验证的方案已经被证明可以用于复杂软件的正确性保证。这种方法将目标软件分解为规模较小的层,并通过逐层验证程序符合相应的规范(specification)来完成总的正确性验证。然而,这种方法往往非常依赖人工,因为要想将验证扩展到大规模的真实软件上,往往需要引入额外的规范,该过程不仅消耗大量人力,而且需要专家参与。

4、在基于自动化验证的方案中,将部分层的人工规范替换为函数摘要(summarization)。然而,该方法仍然存在对人工规范的较大依赖。具体来说,用户首先需要设计精化层,将代码模块划分到不同层中,为每个层定义抽象域,并决定哪些层采用手动处理(因为函数摘要无法为这些层提供足够精简的表示)。随后,用户需为这些手动层开发人工规范,为进一步的验证提供足够的抽象。最后,用户运行自动化验证工具(如符号执行器),按自底向上的顺序完成证明。值得注意的是,每层的函数摘要都是提前(ahead-of-time)生成的,那么用户需要在实际运行验证工具前预先设计好证明的方式,为该层提供适当的规范来辅助逻辑抽象,或者验证器完全不作假设,直接生成完整的函数摘要。

5、因此,相关技术在自动化验证过程中需要设计分层方案、开发大量的人工规范以及执行分层验证,会进行大量的人工操作,导致验证效率较低。


技术实现思路

1、本技术在于提供一种面向资源解耦的域名系统权威引擎自动化验证方法,旨在解决相关技术在自动化验证过程中需要设计分层方案、开发大量的人工规范以及执行分层验证,会进行大量的人工操作,导致验证效率较低的问题。

2、本技术提供一种面向资源解耦的域名系统权威引擎自动化验证方法,包括:

3、获取目标代码以及顶层规范;其中,所述目标代码表征域名系统权威引擎代码,所述顶层规范表征域名系统权威引擎预期的正确实现;

4、根据所述目标代码的执行路径,生成控制流图,并根据所述控制流图获取目标代码对应的效果的树;

5、根据所述目标代码对应的效果的树,获取所述目标代码对应的函数摘要,并将所述函数摘要中的合并状态分割为多个单个具体状态值,获取即时函数摘要;其中,所述合并状态表征变量存在多个取值的状态;

6、对所述即时函数摘要进行状态取值验证、符号化区域处理以及冗余信息处理,得到优化之后的即时函数摘要;

7、以所述顶层规范为基础,对所述优化之后的即时函数摘要进行自动化验证,得到域名系统权威引擎对应的自动化验证结果。

8、在一种可能的实施方式中,所述根据所述目标代码的执行路径,生成控制流图,并根据所述控制流图获取目标代码对应的效果的树,包括:

9、基于所述控制流图,确定所述目标代码对应的根节点;

10、以所述目标代码对应的根节点为基础,采用深度优先搜索的符号执行对所述控制流图进行遍历,生成其他效果节点,得到所述目标代码对应的效果的树。

11、在一种可能的实施方式中,所述根据所述目标代码对应的效果的树,获取所述目标代码对应的函数摘要,包括:

12、根据所述效果的树,以从根到叶的每一条路径作为待构建函数摘要的目标路径;

13、针对任意一条目标路径,从根节点进行执行,获取目标路径上每个函数与预设的统一状态模型相关的数据,得到目标路径对应的函数摘要;

14、遍历所有目标路径,得到所述目标代码对应的函数摘要,所述目标代码对应的函数摘要包括所有目标路径对应的函数摘要。

15、在一种可能的实施方式中,还包括:

16、在所述目标代码存在递归函数的情况下,将所述递归函数的控制流图合并到调用者对应的控制流图中,得到合并控制流图,并根据所述合并控制流图获取所述目标代码对应的效果的树;

17、根据所述目标代码对应的效果的树,获取所述目标代码对应的函数摘要,包括:

18、根据由所述合并控制流图获取的所述目标代码对应的效果的树,获取所述目标代码对应的函数摘要;所述目标代码对应的函数摘要包含递归函数对应的函数摘要。

19、在一种可能的实施方式中,所述针对任意一条目标路径,从根节点进行执行,获取目标路径上每个函数与预设的统一状态模型相关的数据,得到目标路径对应的函数摘要的过程中,包括:

20、在遇到函数调用的情况下,确定被调用函数的摘要构建情况;其中,所述摘要构建情况包括已构建摘要和未构建摘要;

21、在被调用函数的摘要构建情况为已构建摘要的情况下,调用被调用函数的函数摘要,并根据所述被调用函数的函数摘要获取目标路径对应的函数摘要;

22、在被调用函数的摘要构建情况为未构建摘要的情况下,构建被调用函数的函数摘要,并根据所述被调用函数的函数摘要获取目标路径对应的函数摘要。

23、在一种可能的实施方式中,所述将所述函数摘要中的合并状态分割为多个单个具体状态值,获取即时函数摘要,包括:

24、将所述函数摘要中的合并状态分割为多个单个具体状态值;

25、针对每一个具体状态值,采用所述具体状态值替换对应的所述函数摘要中的合并状态,得到即时函数摘要;

26、针对未经分割的所述函数摘要,将原有的函数摘要作为即时函数摘要。

27、在一种可能的实施方式中,所述对所述即时函数摘要进行状态取值验证、符号化区域处理以及冗余信息处理,得到优化之后的即时函数摘要,包括:

28、对所述即时函数摘要进行状态取值验证,确定即时函数摘要验证结果;其中,所述即时函数摘要验证结果包括验证成功或者验证失败;

29、在即时函数摘要验证结果为验证失败的情况下,重新生成即时函数摘要;

30、在即时函数摘要验证结果为验证成功的情况下,对所述即时函数摘要进行符号化区域处理,得到符号化之后的即时函数摘要;其中,所述符号化区域处理表征通过符号表示程序中的内存状态;

31、对所述符号化之后的即时函数摘要进行摘要编码优化处理,得到优化之后的即时函数摘要;其中,所述摘要编码优化处理表征去除无用节点以及去除相同数据的处理。

32、在一种可能的实施方式中,所述对所述即时函数摘要进行符号化区域处理,得到符号化之后的即时函数摘要,包括:

33、采用符号化区域代替所述即时函数摘要中具体的栈区域和堆区域,得到符号化之后的即时函数摘要。

34、在一种可能的实施方式中,所述对所述符号化之后的即时函数摘要进行摘要编码优化处理,得到优化之后的即时函数摘要,包括:

35、去除所述符号化之后的即时函数摘要中无可行兄弟节点的假设节点,得到初次处理之后的即时函数摘要;

36、递归对比初次处理之后的即时函数摘要中相同的子树,并将相同的子树合并,得到优化之后的即时函数摘要。

37、在一种可能的实施方式中,还包括:

38、执行设置于所述目标代码中目标函数之前的打桩函数,并将所述打桩函数返回值解释为所述目标函数对应的额外路径约束,得到添加约束之后的目标代码;

39、以所述添加约束之后的目标代码为基础,将所述函数摘要中的合并状态分割为多个单个具体状态值,获取即时函数摘要。

40、有益效果:

41、本技术提供一种面向资源解耦的域名系统权威引擎自动化验证方法,该方法包括:先获取dns权威引擎的目标代码以及顶层规范,然后根据目标代码的执行路径生成控制流图,并根据控制流图获取目标代码对应的效果的树,接着根据效果的树获取目标代码对应的函数摘要,并将函数摘要中的合并状态分割为多个单个具体状态值,获取即时函数摘要,并对即时函数摘要进行优化之后,采用顶层规范对优化得到的即时函数摘要进行自动化验证,通过即时函数摘要来捕捉dns权威引擎对域名区域配置的依赖所带来的程序不变量,提升分层验证的自动化程度,与dns权威引擎的具体实现解耦合,且可用性强,能够广泛用于生产实践中。

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