Back to Skills

ruzzy

Ruzzy is a coverage-guided Ruby fuzzer by Trail of Bits. Use for fuzzing pure Ruby code and Ruby C extensions.

5,392stars479forksUpdated 5/26/2026

Security Assessment

Safe(100/100)
Security Score100/100

About ruzzy

Ruzzy is a coverage-guided fuzzer for Ruby built on top of libFuzzer. It is designed to help developers identify crashes, memory corruption, and undefined behavior in Ruby applications and Ruby C extensions. By integrating sanitizer support, Ruzzy enables security-focused testing workflows that can uncover vulnerabilities and stability issues that traditional testing may miss. It is particularly useful for projects that rely on native extensions or require robust fuzz testing capabilities within the Ruby ecosystem.

The tool supports fuzzing both pure Ruby code and Ruby C extensions. For pure Ruby applications, Ruzzy uses a tracer-based approach that requires separate tracer and harness scripts due to Ruby interpreter implementation details. For Ruby C extensions, a single harness file is sufficient. Ruzzy integrates with AddressSanitizer through environment configuration and supports deterministic harness design for reliable fuzzing results. Installation requires a recent version of clang and a supported Linux architecture, with optional debugging support available through environment variables. The project also provides toy examples and harness guidelines to help users validate setup and write effective fuzzing targets.

Ruzzy is intended for security researchers, Ruby developers, maintainers of Ruby gems with native extensions, and teams performing application hardening or vulnerability discovery. It is especially valuable when testing memory safety in C extensions or when coverage-guided fuzzing is needed for Ruby-based projects. Developers working on Linux environments who need production-ready fuzzing support for Ruby applications can use Ruzzy to improve software reliability and security testing workflows.

FAQ

What types of Ruby code can Ruzzy fuzz?

Ruzzy supports fuzzing both pure Ruby code and Ruby C extensions. Pure Ruby fuzzing requires a tracer script and a separate harness file, while C extensions can be fuzzed using a single harness file.

Which platforms are supported by Ruzzy?

Ruzzy supports Linux x86-64 and AArch64/ARM64 systems. For macOS or Windows environments, the documentation recommends using the provided Dockerfile or development environment.

What dependencies are required to install Ruzzy?

Ruzzy requires a supported Linux system, a recent version of clang (tested back to 14.0.0), and Ruby with gem support installed.

Why does pure Ruby fuzzing require two scripts?

Pure Ruby fuzzing uses separate tracer and harness scripts because of Ruby interpreter implementation details. The tracer script is responsible for enabling coverage tracing before executing the harness.

What are important rules when writing a fuzzing harness?

The harness should remain deterministic, return 0 from the test_one_input lambda, and catch Ruby exceptions when testing C extensions to avoid crashing the fuzzer for non-memory-related issues.

Install ruzzy

Download and extract the skill files to your .claude/skills/ directory.

Quick Setup:

  1. Copy the skill folder to .claude/skills/
  2. Claude will automatically detect and use the skill