fuzzing-obstacles

Patch SUT code with conditional compilation to bypass fuzzing obstacles.

19.0k|5.6k|Updated Jul 9, 2024
One-click install
npx skills add https://github.com/elizaOS/eliza --skill fuzzing-obstacles-elizaos
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: fuzzing-obstacles
Source: https://github.com/elizaOS/eliza/tree/main/packages/skills/skills/testing-handbook-skills/skills/fuzzing-obstacles
Command: npx skills add https://github.com/elizaOS/eliza --skill fuzzing-obstacles-elizaos

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve?

This Skill helps overcome common obstacles in codebases that prevent fuzzers from effectively exploring all code paths, leading to deeper bug discovery.

Core Features & Use Cases

  • Identify Obstacles: Detects anti-fuzzing patterns like checksums, global state, and complex validation.
  • Conditional Patching: Enables developers to conditionally bypass these obstacles during fuzzing builds while preserving production behavior.
  • Use Case: When a fuzzer consistently fails to get past a checksum validation step, this technique allows you to patch the code so the checksum is ignored during fuzzing, enabling the fuzzer to reach and test the code that follows.

Quick Start

Apply conditional compilation to skip checksum validation during fuzzing builds.

Frequently Asked Questions about fuzzing-obstacles

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

FAQPage Schema
Why does my fuzzer stop at checksum validation and fail to reach deeper code paths?

Checksum validation blocks fuzzers because random inputs rarely match expected values. You can conditionally patch the System Under Test to bypass checksums during fuzzing builds, allowing the fuzzer to explore deeper paths while preserving production behavior.

How do I bypass global state and complex validation obstacles during fuzzing?

Bypass global state and complex validation during fuzzing by applying conditional compilation to patch the System Under Test. This skips anti-fuzzing patterns in fuzzing builds while ensuring the original production logic remains completely unchanged.

What's the best way to skip anti-fuzzing patterns without changing production behavior?

The best way to skip anti-fuzzing patterns is using conditional compilation in C/C++ and Rust. This patches the code to ignore obstacles like checksums during fuzzing builds while ensuring the production binary retains its original validation behavior.

Do I need to understand conditional compilation to use these fuzzing bypass techniques?

Yes, understanding conditional compilation in C/C++ and Rust is required. You must use compiler directives to separate fuzzing builds from production builds so that patched bypasses for obstacles like checksums only activate during fuzz testing.

How can I boost code coverage when my fuzzer gets blocked by anti-fuzzing patterns?

Boost code coverage by identifying anti-fuzzing patterns like checksums and global state, then applying conditional patches to the System Under Test. This enables fuzzers to explore previously blocked paths and discover deeper bugs.

Can I use conditional patching to bypass fuzzing obstacles in both C/C++ and Rust codebases?

Yes, conditional patching works for both C/C++ and Rust codebases. The technique uses language-specific conditional compilation features to bypass fuzzing obstacles like checksums and global state while keeping the production code behavior intact.