【论文速读】| 超越随机输入:一种基于机器学习的新型硬件模糊测试方法
![【论文速读】| 超越随机输入:一种基于机器学习的新型硬件模糊测试方法](https://static001.geekbang.org/infoq/34/34aee3dd8bf7b561530634f0753cca12.jpeg)
![](https://static001.geekbang.org/infoq/d5/d5509b92c7051a39a1de3ec0f6522a5f.jpeg?x-oss-process=image%2Fresize%2Cp_80%2Fauto-orient%2C1)
本次分享论文:Beyond Random Inputs: A Novel ML-Based Hardware Fuzzing
基本信息
原文作者:Mohamadreza Rostami, Marco Chilese, Shaza Zeitouni, Rahul Kande, Jeyavijayan Rajendran, Ahmad-Reza Sadeghi
作者单位:Technical University of Darmstadt, Texas A&M University
关键词:硬件模糊测试,机器学习,处理器安全,RISC-V,ChatFuzz
原文链接:
https://arxiv.org/pdf/2404.06856v1
开源代码:未提供
论文要点
论文简介:
现代计算系统主要依赖硬件作为信任的根基。然而,随着硬件的复杂性不断增加,跨层攻击可能会利用安全关键漏洞。传统的硬件漏洞检测方法,如随机回归和形式验证,存在局限性。虽然随机回归具有可扩展性,但在探索硬件时效率较低;而形式验证技术则常因手动工作和状态爆炸问题而受限。硬件模糊测试已成为检测大规模设计(如现代处理器)中的安全漏洞的有效方法,然而,现有的模糊测试器在合理时间内难以全面覆盖复杂硬件设计。
为了解决这一挑战,本文提出了一种新颖的基于机器学习的硬件模糊测试器——ChatFuzz。研究者的方法利用大语言模型(LLMs)来理解处理器语言,并生成数据和控制流交织且随机的机器代码序列。通过引入强化学习(RL)来指导输入生成过程,并利用代码覆盖率指标来奖励输入。
研究目的:
本文旨在提升现有硬件模糊测试方法的效率和覆盖率。通过利用大语言模型和强化学习,ChatFuzz 能够生成更复杂且相关的测试输入,从而更快速、更全面地覆盖硬件设计中的潜在漏洞。具体来说,研究者的目标是克服现有模糊测试器在覆盖复杂硬件设计时的时间限制,提升测试效率,并揭示更多的安全漏洞。
研究贡献:
1. 提出并实现了首个利用机器学习进行输入生成和改进的处理器模糊测试器——ChatFuzz。
2. 提出了一种三步训练过程,包括无监督学习、反汇编器辅助的强化学习,以及基于 RTL 仿真的覆盖率优化。
3. 实验结果显示,ChatFuzz 在不到一小时内达到了 74.96%的条件覆盖率,而现有最佳模糊测试器需要约 30 小时才能达到相同的覆盖率。
4. ChatFuzz 在 BOOM 处理器上达到了 97.02%的条件覆盖率,并在测试过程中发现了比现有工具更多的独特不匹配情况和新漏洞。
引言
传统的硬件验证技术对确保硬件设计的可靠性和正确性至关重要。在这些技术中,随机回归和形式验证方法被广泛使用。随机回归可以处理大规模硬件设计,但在探索细节时效率较低,难以发现关键组件中的漏洞。形式验证旨在验证设计是否符合预定义的属性,虽然在验证难以触及的硬件组件方面有效,但它严重依赖领域专家的手动工作,并且常导致状态爆炸,使得全面验证整个设计变得不切实际。
硬件模糊测试已成为扩展设计空间探索和揭示复杂设计(包括复杂处理器)中安全漏洞的有力方法。硬件模糊测试利用覆盖率数据(如分支条件、语句和多路复用器的控制寄存器或信号)生成测试用例,探索多样的硬件行为。相比传统的硬件验证技术,硬件模糊测试在覆盖范围、可扩展性和效率方面表现出优势。然而,现有的最佳模糊测试器在合理时间内难以全面覆盖复杂硬件设计,通常未能达到 70%的覆盖率门槛。
为了解决这一挑战,研究者提出了一种新颖的基于机器学习的硬件模糊测试器——ChatFuzz。研究者的方法利用大语言模型来理解处理器语言,并生成数据和控制流交织的随机机器代码序列。通过引入强化学习指导输入生成过程,利用代码覆盖率指标进行奖励,从而显著提高条件覆盖率和测试效率。
研究背景
模糊测试通过向被测程序提供大量输入来发现传统测试方法可能遗漏的故障、漏洞或安全问题。模糊测试器可以生成随机、格式错误或异常的输入来测试程序的处理能力。近年来,由于其相对于现有验证方法的诸多优势,模糊测试在硬件安全社区中受到了广泛关注和采用。特别是模糊测试的高度自动化、成本效益高、可扩展性强,能够全面覆盖被测应用程序。
传统的处理器模糊测试器,如 DifuzzRTL 和 TheHuzz,使用代码覆盖率和控制寄存器覆盖率作为反馈来指导变异过程。这些模糊测试器通过随机生成指令来生成种子,并通过变异当前输入中的指令生成新输入。近期的研究还提出了混合硬件模糊测试器,如 HyPFuzz 和 PSOFuzz,它们结合了模糊测试器与形式工具和优化算法的能力,以提高覆盖率。然而,这些混合模糊测试器仍然使用传统处理器模糊测试器的种子生成和变异引擎,未能实现对深层设计区域的有效探索。
ChatFuzz
利用 LLM 的最新进展,研究者提出了 ChatFuzz 这一创新方法,以增强硬件安全性。ChatFuzz 涉及使用机器语言(具体来说,是机器代码)训练大型语言模型,并使用训练后的模型生成伪随机但相互关联的指令序列进行硬件模糊测试。与现有方法不同,研究者的方法优先生成数据与控制流交织的指令序列。
![](https://static001.geekbang.org/infoq/26/26bfe7c14f9e0e05601cb974f386e626.jpeg?x-oss-process=image%2Fresize%2Cp_80%2Fauto-orient%2C1)
ChatFuzz 由多个组件组成。基于 LLM 的输入生成器为模糊测试目标 CPU 生成指令序列。RTL 和 ISA 仿真器分别在目标 CPU 及其黄金模型上执行给定输入,同时记录执行轨迹。每个测试输入的 RTL 仿真器报告覆盖信息,这些信息用于优化输入生成过程。Mismatch 检测器比较执行轨迹,以识别潜在的漏洞。
实现方法
在此部分中,研究者将详细介绍 ChatFuzz 组件的实现。研究者部署了 Synopsys VCS 和 Spike 仿真器,分别用于 RTL 和 RISC-V ISA 的仿真。此外,研究者开发了自定义组件用于 Mismatch 检测和覆盖计算。
1. Mismatch 检测:该组件通过差分测试来标记目标 CPU 中的潜在漏洞。它比较目标 CPU 和其黄金模型在运行相同输入时的架构状态变化,并生成包含唯一标识的不匹配报告,从而有效减少验证工程师的手动工作量。
2. 覆盖计算:该组件负责接收 RTL 仿真器的覆盖报告。覆盖报告经过解析后,计算每个覆盖指标的独立覆盖、增量覆盖和总覆盖值。
3. LLM 输入生成:ChatFuzz 的机器学习部分完全用 Python 实现,使用了 Pytorch 和 Huggingface 框架。研究者利用这些框架实现了分词器、大语言模型(具体来说是 GPT-2 家族)和 PPO 算法用于强化学习。所有实验均在高性能服务器上进行。
研究评估
研究者使用十个 Synopsys VCS 实例作为仿真器,并通过 Synopsys VCS 提供的条件覆盖率指标来衡量研究者解决方案的有效性。条件覆盖率与实现新硬件行为和功能的目标一致。
研究者的分析表明,ChatFuzz 和 TheHuzz 在运行时开销上相似。然而,当考虑等效数量的生成测试(1.8K)时,ChatFuzz 实现了 74.96%的条件覆盖率,而 TheHuzz 仅达到了 67.4%。值得注意的是,TheHuzz 需要大约 30 小时才能达到 75%的覆盖率,而 ChatFuzz 以 34.6 倍的速度实现了相同的覆盖量。最终,ChatFuzz 通过生成 199K 个测试用例实现了 79.14%的条件覆盖率,而 TheHuzz 达到了 76.7%的条件覆盖率。此外,ChatFuzz 在 Boom 处理器上实现了 97.02%的条件覆盖率。
论文结论
研究者介绍了 ChatFuzz,这是一种新颖的硬件模糊测试器,利用大语言模型学习机器语言并生成复杂、相互关联、数据/控制流交织和伪随机的测试用例。研究者的方法显著提高了条件覆盖率,在不到一小时内达到 74.96%,而现有的最佳硬件模糊测试器需要大约 30 小时才能达到相同的覆盖率。
在 Boom 处理器上,ChatFuzz 在 49 分钟内实现了 97.02%的条件覆盖率。ChatFuzz 成功识别了 100 多个独特的不匹配,揭示了两个新漏洞,并暴露了 RocketCore 行为与黄金模型的偏差,甚至在 RISC-V ISA 规范中规定的复杂角落案例中。这些结果突显了 ChatFuzz 在探索处理器漏洞方面的有效性,提供了一种更快、更全面的硬件安全和测试方法。
原作者:论文解读智能体
校对:小椰风
![](https://static001.geekbang.org/infoq/3e/3e62456fe8fab576953943ec31d40577.jpeg?x-oss-process=image%2Fresize%2Cp_80%2Fauto-orient%2C1)
评论