SiliFuzz:通过代理模糊测试发现CPU缺陷

SiliFuzz:通过代理模糊测试发现CPU缺陷

silifuzz 项目地址: https://gitcode.com/gh_mirrors/si/silifuzz

项目介绍

SiliFuzz 是一个通过模糊测试软件代理(如 CPU 模拟器或反汇编器)来发现 CPU 缺陷的系统。它通过在实际 CPU 上大规模执行积累的测试输入(称为 语料库)来实现这一目标。SiliFuzz 目前仍在开发中,详细信息请参阅 论文

项目技术分析

术语解释

  • 软件模糊测试和覆盖率:模糊测试是一种通过生成大量动态测试输入来测试目标(如应用程序或 API)的技术。其目标是使这些输入尽可能多样化和有趣,以触发边缘情况,从而最大化代码覆盖率。
  • 代理:在 SiliFuzz 中,代理是指任何在某些方面与目标 CPU 行为相似的软件或硬件系统,如 CPU 模拟器或反汇编器。当无法直接从目标收集覆盖信息时,代理是必要的。
  • 语料库/语料库分片:用于测试目标的输入集合称为 语料库。大型语料库通常包含数百万个输入,并被分成多个不重叠的块,称为 分片
  • 快照:SiliFuzz 快照描述了一小段 CPU 指令及其初始寄存器和内存状态,以确定性地执行该序列。快照通常包含少于 100 字节的代码,运行时间在微秒级,但可以任意大。
  • 预期结束状态:结束状态描述了在快照执行结束时预期存在的寄存器和内存内容。如果快照在不同的 CPU 微架构上执行不同,它将具有多个预期结束状态。
  • Snap:Snap 是 快照 的内存表示形式,可以由 Runner 轻松加载和执行。
  • Runner:Runner 是一个用于测试单个 CPU 核心的二进制文件。它消耗一个语料库分片,反复执行其中的随机 Snaps,并检查是否达到预期结束状态。
  • Orchestrator:Orchestrator 是一个驱动多个 Runner 的进程。在典型设置中,Orchestrator 将持续为每个逻辑 CPU 核心执行一个 Runner,并累积和报告单个 Runner 进程产生的任何故障。

支持的平台和微架构

SiliFuzz 已在以下 x86_64 微架构上进行了广泛测试,运行最新的 Linux 内核:

  • intel-skylake / intel-cascadelake
  • intel-haswell / intel-broadwell
  • intel-ivybridge
  • amd-rome
  • amd-milan

其他 x86_64 微架构只要具备编译器和操作系统支持,也应该能够工作。SiliFuzz 正在积极开发 AArch64 支持。

项目及技术应用场景

SiliFuzz 主要应用于以下场景:

  • CPU 缺陷检测:通过模糊测试软件代理,SiliFuzz 能够发现 CPU 中的逻辑错误和电气缺陷,从而提高硬件的可靠性和稳定性。
  • 安全漏洞挖掘:SiliFuzz 已经发现了一些已知的安全漏洞,如 CVE-2021-26339 等,显示出其在安全领域的潜力。
  • 硬件测试:在硬件开发和测试阶段,SiliFuzz 可以作为自动化测试工具,帮助发现和修复潜在的硬件问题。

项目特点

  • 高效性:SiliFuzz 通过大规模并行执行测试输入,能够快速发现 CPU 中的缺陷。
  • 灵活性:支持多种 CPU 微架构,并且正在开发对 AArch64 的支持,具有广泛的适用性。
  • 自动化:SiliFuzz 的 Orchestrator 能够自动管理多个 Runner,简化了大规模测试的部署和管理。
  • 可扩展性:通过使用语料库分片和快照技术,SiliFuzz 能够处理大规模的测试输入,具有良好的可扩展性。

总结

SiliFuzz 是一个强大的工具,通过模糊测试软件代理来发现 CPU 中的缺陷。它不仅能够提高硬件的可靠性和稳定性,还在安全漏洞挖掘和硬件测试方面展现出巨大的潜力。如果你正在寻找一种高效、灵活且自动化的 CPU 测试工具,SiliFuzz 绝对值得一试。

silifuzz 项目地址: https://gitcode.com/gh_mirrors/si/silifuzz

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

金畏战Goddard

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值