当前位置: 首页 > news >正文

使用 AFL++ 对 IoT 二进制文件进行模糊测试 - 第一部分

American fuzzy lop 是一款面向安全的模糊测试器,它采用一种新型的编译时插桩和遗传算法,可以自动发现干净、有趣的测试用例,从而触发目标二进制文件中新的内部状态。这显著提高了模糊测试代码的功能覆盖率。

AFL 的地址是https://lcamt uf.coredump.cx/afl/ 。它已经有一段时间没有更新了。虽然 AFL 仍然运行良好,但有一个新项目 AFL++,它是 AFL 的一个分支,包含许多改进和新功能。AFL++ 的地址是https://aflplus.plus/,其源代码位于GitHub。在本文中,我们将研究如何使用 AFL++ 对 IoT 二进制文件进行模糊测试。

当我们拥有目标二进制文件的源代码时,模糊测试效果最佳。但不幸的是,对于物联网二进制文件来说,情况往往并非如此。AFL++(和 AFL)附带一个配套工具(afl-gcc、afl-clang 等),可以作为 gcc、clang 或任何其他标准构建工具的直接替代品。该工具用于在编译源代码时向生成的二进制文件中注入检测工具。然后可以使用 afl-fuzz 对已检测的二进制文件进行模糊测试。

对闭源应用程序进行模糊测试非常棘手。为了对此类二进制文件进行模糊测试,AFL++ 可以使用 Qemu、Unicorn 或 Frida,并分别命名为 qemu 模式、Unicorn 模式和 Frida 模式。这些是仅适用于二进制文件的插桩模式,效率不如源代码插桩模式。在本文中,我们将使用 Qemu 模式。

在 Qemu 模式下,AFL++ 使用 qemu 用户模式仿真来运行二进制文件。它使用 Qemu 的修改版本,该版本会在程序执行时对基本块进行插桩。由此生成的插桩信息用于生成新的测试用例,这些测试用例会触发不同的代码路径,从而提高代码覆盖率。qemu 模式下的 AFL++ 还可以用于插桩外部架构的二进制文件(例如 x86_64 主机上的 arm 二进制文件)。这对于模糊测试通常采用 ARM 或 MIPS 架构的物联网固件二进制文件非常有用。

需要注意的是,AFL++ 和类似的模糊测试器(AFL、hongfuzz、radamsa [仅测试用例生成器])仅适用于文件输入。也就

相关文章:

  • Linux之netlink(2)libnl使用介绍(1)
  • Redis 数据类型全览:特性、场景与操作实例
  • 【Hive入门】Hive动态分区与静态分区:使用场景与性能对比完全指南
  • 游戏引擎学习第245天:wglChoosePixelFormatARB
  • 写入cache时数据格式错误产生的ERRO导致整个测试框架无法运行
  • PID程序实现
  • php一些命名规范 和 css命名规范
  • AIGC在自动化测试领域的创新应用:智能生成测试用例与缺陷预测
  • SpringCloud原理和机制
  • 产销协同的作用是什么?又如何对各部门发挥作用?
  • A. Ideal Generator
  • 【数据融合】基于拓展卡尔曼滤波实现雷达与红外的异步融合附matlab代码
  • 部署大模型需要多少GPU显存?以DeepSeek R1部署为例
  • 直接映射例题及解析
  • [笔记] MCPO搭建教程
  • 【Kafka】Windows环境下生产与消费流程详解(附流程图)
  • VO包装类和实体类分别是什么?区别是什么?
  • Jmeter如何取JDBC request响应参数作为下一个接口的值?
  • ORACLE数据库备份入门:第四部分:2-备份场景举例
  • SpringCloud组件——OpenFeign
  • 药明康德一季度净利增长89%,在手订单增超四成至523亿元
  • 北京公园使用指南
  • 上海乐高乐园建设进入最后冲刺,开园限量纪念年卡将于5月开售
  • 当隐身13年的北小京决定公开身份 ,专业戏剧评论依然稀缺
  • CSR周刊:李宁打造世界地球日特别活动,珀莱雅发布2024年度可持续发展报告
  • 清华数字政府与治理研究院揭牌:服务数字政府建设需求