ruzzy

Fuzz pure Ruby code and Ruby C extensions with coverage-guided libFuzzer instrumentation.

Updated Apr 5, 2026
One-click install
npx skills add https://github.com/marumo333/atrox --skill ruzzy-marumo333
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: ruzzy
Source: https://github.com/marumo333/atrox/tree/main/.claude/skills/trailofbits/plugins/testing-handbook-skills/skills/ruzzy
Command: npx skills add https://github.com/marumo333/atrox --skill ruzzy-marumo333

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Ruby lacks production-ready coverage-guided fuzzing tools, making it hard to detect memory corruption, undefined behavior, and crashes in Ruby applications and native C extensions before they reach production. ## Core Features & Use Cases - Pure Ruby Fuzzing: Uses a tracer-and-harness script pattern to coverage-guide fuzzing of pure Ruby code. - C Extension Fuzzing: Fuzzes Ruby gems with native extensions using AddressSanitizer and UndefinedBehaviorSanitizer to detect heap overflows, use-after-free, and integer overflow. - libFuzzer Integration: Passes all standard libFuzzer options (max_len, timeout, corpus directories) and saves crash artifacts for reproduction. - Use Case: Fuzz the msgpack MessagePack parser by compiling the gem with sanitizer flags, writing a harness that calls MessagePack.unpack, and running it under ASan to find memory corruption bugs. ## Quick Start Use the ruzzy skill to write a fuzzing harness for my Ruby C extension and show me how to run it with AddressSanitizer enabled.

Frequently Asked Questions about ruzzy

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I fuzz Ruby code with coverage guidance?▼

Use Ruzzy, a coverage-guided Ruby fuzzer built on libFuzzer. For pure Ruby code, create a tracer script calling Ruzzy.trace and a harness script defining a test_one_input lambda, then run with LD_PRELOAD pointing to Ruzzy's ASan library.

How to fuzz Ruby C extensions for memory corruption?▼

Compile the gem with -fsanitize=address,fuzzer-no-link flags using clang, write a harness that rescues Ruby exceptions and returns 0, then run it with LD_PRELOAD set to Ruzzy::ASAN_PATH to detect heap overflows and use-after-free.

Does Ruzzy support macOS or Windows?▼

Ruzzy supports Linux x86-64 and AArch64/ARM64 natively. For macOS or Windows, use the official Dockerfile or development environment provided in the Ruzzy GitHub repository.

Why does my Ruby fuzzer show leak detection spam?▼

The Ruby interpreter itself leaks memory, triggering AddressSanitizer leak warnings. Set ASAN_OPTIONS=detect_leaks=0 along with allocator_may_return_null=1 and use_sigaltstack=0 before running campaigns.

Why is there no coverage progress when fuzzing pure Ruby?▼

Pure Ruby fuzzing requires a separate tracer script due to Ruby interpreter implementation details. Create a tracer that calls Ruzzy.trace with your harness filename, and run the tracer instead of the harness directly.