一种支持运行时指令变异的处理器模糊测试方法

文档序号:36014719发布日期:2023-11-17 10:20阅读:48来源:国知局
一种支持运行时指令变异的处理器模糊测试方法

本发明涉及处理器验证领域,尤其涉及一种支持运行时指令变异的处理器模糊测试方法。


背景技术:

1、随着性能提升和功能扩展,处理器设计正在变得越来越复杂。现代处理器极其庞大,通常有数十亿的晶体管和多个内核。这使得处理器变得越来越容易出错,甚至最新的商品处理器也存在硬件错误。例如,英特尔在他们的第13代cpu中发现了37个错误。处理器中的错误不仅会产生不正确的计算结果,还会导致毁灭性的错误。由于硬件漏洞在芯片制造完成后很难修补,因此在硅片前对处理器进行验证是至关重要的。

2、近年来,一些硬件模糊测试技术已经在验证处理器设计方面取得了良好的效果。然而,由于处理器的复杂性,它们受到复杂的输入语法、欺骗性的变异指导和模型实现差异的影响。因此,如何有效和高效地验证处理器仍然是一个开放的问题。


技术实现思路

1、针对现有技术的不足,本发明提供一种支持运行时指令变异的处理器模糊测试方法,具体技术方案如下:

2、一种支持运行时指令变异的处理器模糊测试方法,在发现被测处理器的漏洞之前,将持续进行多轮测试,且每一轮测试包含以下步骤:

3、步骤一:根据种子生成包含测试指令的激励模板;

4、步骤二:将激励模板提交给协同仿真测试平台,使被测处理器和指令集架构模拟器同步执行测试指令;在测试过程中,当每条测试指令被取出时,将根据运行时信息对该条测试指令进行变形;执行过程中,同时收集被测处理器的覆盖率,以及被测处理器和指令集架构模拟器对每条测试指令的执行结果;当执行结果不同时,判断被测处理器的执行结果是否合法,若合法,则将被测处理器的执行结果同步给所述指令集架构模拟器;若不合法,则认为发现漏洞,对漏洞进行输出,并终止后续测试指令的执行;

5、步骤三:在测试指令序列执行完成后,对被测处理器的覆盖率进行评估,如果覆盖率满足要求,则返回步骤二;如果覆盖率不满足要求,则对种子进行调整,返回步骤一。

6、进一步地,所述步骤一通过以下子步骤实现:

7、(1.1)根据种子生成测试指令,形成测试指令序列;

8、(1.2)在测试指令序列中插入访问外设的访存指令,所述外设用于提供操作数;

9、(1.3)根据种子对插入访存指令后的测试指令序列进行洗牌;

10、(1.4)根据种子配置模糊执行环境;

11、(1.5)将模糊执行环境与洗牌后的测试指令序列进行组合,编译生成可执行文件,即激励模板。

12、进一步地,所述测试指令包括多个测试块,每个测试块的末尾放置控制转移指令,以将它们链接在一起;所述测试块选自整数算术测试块、浮点算术测试块、状态与控制寄存器测试块、内存操作测试块、原子内存操作测试块、系统操作测试块以及自定义扩展测试块。

13、进一步地,所述步骤二中,采用变形器对激励模板中的每条测试指令进行变形,变形的过程如下:

14、变形器以软件逻辑的形式嵌入到被测处理器的取指单元和解码单元之间,监视被测处理器的内部状态,劫持获取的指令,对获取的指令进行字段感知的突变,并返回变形后的指令;所述变形器保持一个变形映射,使得被测处理器和指令集架构模拟器能够执行相同的变形指令。

15、进一步地,测试指令的执行结果的比较过程抽象为两个阶段,即提交阶段和判断阶段;在提交阶段,被测处理器首先提交其程序计数器和执行的指令;一旦指令集架构模拟器收到提交请求,它执行下一条指令,然后检查执行的指令是否与被测处理器提交的一致;如果检查通过,指令集架构模拟器将其参考回写数据记录到记分板;判断阶段开始于测试指令的回写数据准备就绪后;通过将回写值与记分板中的参考值进行比较,以确定指令的执行结果是否一致。

16、进一步地,当被测处理器和指令集架构模拟器对测试指令的执行结果不同时,判断被测处理器的执行结果是合法时,需满足如下四个条件:

17、(1)该测试指令为状态与控制指令,或内存操作指令;

18、(2)被测处理器没有错误地批准该测试指令访问特权寄存器或保留的地址空间;

19、(3)若该指令是状态与控制指令,则目的寄存器中仅有规范中定义的warl字段可以不相等;

20、(4)若该指令是内存操作指令,且从规范之外的外围地址读取数据,则该数据可以不相等,否则应相等;

21、进一步地,种子对包括测试的特权态、测试的指令集集合、虚拟内存的开关与配置、测试对象的权重、指令洗牌的强度在内的测试属性进行配置。

22、进一步地,变形器对激励模板中的每条测试指令进行变形包括字段级别的变形与语义级别的变形;

23、其中,字段级别的变形具体为:

24、当一个新的测试指令到达时,变形器首先解码指令,确定哪些字段是可变形的,随后变形器随机选择规范中定义的有效操作码来替换可变形字段中的操作码相关字段;

25、语义级别的变形包括对指令立即数、操作数的变形:

26、对指令立即数的变形具体为:变形器根据当前的程序计数器和地址空间生成有效的地址偏移量;

27、对操作数有两种不同的变形方式:

28、方式一:变形器维护一个通用寄存器的类型池,以提供所需类型的操作数;

29、方式二:变形器使用一个滑动窗口记录仍在流水线中执行的指令的目的寄存器字段,以提供形成流水线竞争的操作数。

30、进一步地,所述外设提供的操作数包括32位或64位的整数,32位或64位的浮点数,内存地址,页表项。

31、本发明的有益效果如下:

32、本发明公开一种支持运行时指令变异的处理器模糊测试方法,该方法该方法设计了一种新的输入结构,提供了多级运行时变异原语,提出了一种可动态地变异指令的指令形变技术,并使用状态同步技术以消除微架构的实现差异。相比于现有的处理器模糊测试方法,该方法具有更优秀的测试效果与更快的测试速度。



技术特征:

1.一种支持运行时指令变异的处理器模糊测试方法,其特征在于,在发现被测处理器的漏洞之前,将持续进行多轮测试,且每一轮测试包含以下步骤:

2.根据权利要求1所述的支持运行时指令变异的处理器模糊测试方法,其特征在于,所述步骤一通过以下子步骤实现:

3.根据权利要求2所述的支持运行时指令变异的处理器模糊测试方法,其特征在于,

4.根据权利要求1所述的支持运行时指令变异的处理器模糊测试方法,其特征在于,所述步骤二中,采用变形器对激励模板中的每条测试指令进行变形,变形的过程如下:

5.根据权利要求1所述的支持运行时指令变异的处理器模糊测试方法,其特征在于,测试指令的执行结果的比较过程抽象为两个阶段,即提交阶段和判断阶段;在提交阶段,被测处理器首先提交其程序计数器和执行的指令;一旦指令集架构模拟器收到提交请求,它执行下一条指令,然后检查执行的指令是否与被测处理器提交的一致;如果检查通过,指令集架构模拟器将其参考回写数据记录到记分板;判断阶段开始于测试指令的回写数据准备就绪后;通过将回写值与记分板中的参考值进行比较,以确定指令的执行结果是否一致。

6.根据权利要求1所述的支持运行时指令变异的处理器模糊测试方法,其特征在于,当被测处理器和指令集架构模拟器对测试指令的执行结果不同时,判断被测处理器的执行结果是合法时,需满足如下四个条件:

7.根据权利要求1所述的支持运行时指令变异的处理器模糊测试方法,其特征在于,种子对包括测试的特权态、测试的指令集集合、虚拟内存的开关与配置、测试对象的权重、指令洗牌的强度在内的测试属性进行配置。

8.根据权利要求1所述的支持运行时指令变异的处理器模糊测试方法,其特征在于,变形器对激励模板中的每条测试指令进行变形包括字段级别的变形与语义级别的变形;

9.根据权利要求2所述的支持运行时指令变异的处理器模糊测试方法,其特征在于,所述外设提供的操作数包括32位或64位的整数,32位或64位的浮点数,内存地址,页表项。


技术总结
本发明公开一种支持运行时指令变异的处理器模糊测试方法,该方法使用运行时信息生成具有有效格式和语义的指令流,该方法设计了一种新的输入结构,提供了多级运行时变异原语,提出了一种可动态地变异指令的指令形变技术,并使用状态同步技术以消除微架构的实现差异。相比于现有的处理器模糊测试方法,本方法能够有效且高效的探索处理器状态,具有更快的测试速度与更优秀的测试效果。

技术研发人员:周亚金,刘诣元,徐金焱,林浩然
受保护的技术使用者:浙江大学
技术研发日:
技术公布日:2024/1/16
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1