首页 > 解决方案 > 使用 libfuzzer 在小端环境中对大端代码进行模糊测试

问题描述

我正在尝试使用 libfuzzer 模糊为大端 MIPS 架构编写的部分代码。

我在 Debian little endian 机器下运行了 libfuzzer,并发出了分段错误。我认为结果不是 100% 值得信赖的。如何将 libfuzzer 与模拟器一起用于大端架构?这可能吗?是否有任何其他技术可以通过使用模糊测试在小端架构中测试大端代码?

标签: cfuzzinglibfuzzer

解决方案


您可以在主机上将您的软件交叉编译为大端 MIPS,然后使用 QEMU 用户模式仿真。在这种模式下,QEMU 在模拟 CPU 上运行单个进程,消除所有模拟硬件。相反,它只是将系统调用转换为主机内核,因此该进程可以访问所有主机文件、网络等——就像你的主机 CPU 能够执行 MIPS 指令一样——它现在可能会弄乱你的主机文件等,你已被警告。:)

我不是特别熟悉libfuzzer,但是这个设置至少应该足以验证已经发现的崩溃(假设人们可以相信 QEMU 足够真实地模拟 MIPS CPU)。AFAIKlibfuzzer是一个进程内 fuzzer,因此与 AFL 不同,fuzzed 进程不应该面临使用共享内存与单独的 fuzzer 进程通信等问题。


推荐阅读