工程开发
ruzzy avatar

ruzzy

为 Ruby 代码与 C 扩展功能设计的覆盖率导向模糊测试工具,运用 libFuzzer 与内存清理器 (ASan) 检测内存损坏与未定义行为。

简介

Ruzzy 是一款专为 Ruby 生态系统设计的专业级覆盖率导向模糊测试工具。它利用 libFuzzer 引擎,为纯 Ruby 应用程序以及包含原生 C 扩展功能的复杂 Ruby Gem 提供强大的测试能力。通过与内存清理器 (AddressSanitizer, ASan) 的整合,Ruzzy 使开发人员与安全性审计人员能够发掘传统单元测试容易遗漏的内存损坏、缓冲区溢出以及未定义行为。这是维护原生扩展功能完整性与确保 Ruby 安全架构稳定性的重要工具。

  • 采用覆盖率导向的变异策略,最大化 Ruby 解释器中的代码路径探索。

  • 支持对 Ruby C 扩展功能进行直接模糊测试,以识别深层的内存安全性漏洞。

  • 与 clang 与 ASan 整合,为发现的崩溃错误提供精确的堆栈跟踪。

  • 具备灵活的测试线束 (harness) 架构,允许对输入进行精细控制与异常处理。

  • 针对 Linux 环境进行优化,支持 x86-64 与 AArch64/ARM64 架构。

  • 安装时需使用兼容的 clang 版本 (14.0.0+) 并配置正确的环境变量 (CC, CXX, LDSHARED) 以进行仪器化。

  • 用户必须通过 LD_PRELOAD 与特定的 ASAN_OPTIONS (例如禁用 sigaltstack 并设置 allocator_may_return_null=1) 来管理 Ruby 解释器与 ASan 的互动。

  • 测试线束开发需要确保 Ruby 代码的确定性;在对 C 扩展功能进行模糊测试时,测试人员应处理 Ruby 层级的异常情况,以确保模糊测试工具专注于内存安全性问题而非解释器错误。

  • 对于纯 Ruby 代码的模糊测试,工具要求使用追踪脚本来辅助必要的运行时仪器化。

  • 有效弥合了高阶 Ruby 逻辑与低阶 C 内存安全性之间的差距,使其成为供应链安全与依赖项审计的关键组件。

仓库统计

Star 数
4,882
Fork 数
424
Open Issue 数
21
主要语言
Python
默认分支
main
同步状态
空闲
最近同步时间
2026年4月29日 12:57
在 GitHub 查看