mirror of
https://github.com/FuzzingLabs/fuzzforge_ai.git
synced 2026-02-13 07:52:45 +00:00
Compare commits
2 Commits
master
...
fuzzforge-
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8adc7a2e00 | ||
|
|
3b521dba42 |
@@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<a href="https://discord.gg/8XEX33UUwZ"><img src="https://img.shields.io/discord/1420767905255133267?logo=discord&label=Discord" alt="Discord"></a>
|
<a href="https://discord.gg/8XEX33UUwZ"><img src="https://img.shields.io/discord/1420767905255133267?logo=discord&label=Discord" alt="Discord"></a>
|
||||||
<a href="LICENSE"><img src="https://img.shields.io/badge/license-Apache%202.0-blue" alt="License: Apache 2.0"></a>
|
<a href="LICENSE"><img src="https://img.shields.io/badge/license-BSL%201.1-blue" alt="License: BSL 1.1"></a>
|
||||||
<a href="https://www.python.org/downloads/"><img src="https://img.shields.io/badge/python-3.12%2B-blue" alt="Python 3.12+"/></a>
|
<a href="https://www.python.org/downloads/"><img src="https://img.shields.io/badge/python-3.12%2B-blue" alt="Python 3.12+"/></a>
|
||||||
<a href="https://modelcontextprotocol.io"><img src="https://img.shields.io/badge/MCP-compatible-green" alt="MCP Compatible"/></a>
|
<a href="https://modelcontextprotocol.io"><img src="https://img.shields.io/badge/MCP-compatible-green" alt="MCP Compatible"/></a>
|
||||||
<a href="https://fuzzforge.ai"><img src="https://img.shields.io/badge/Website-fuzzforge.ai-purple" alt="Website"/></a>
|
<a href="https://fuzzforge.ai"><img src="https://img.shields.io/badge/Website-fuzzforge.ai-purple" alt="Website"/></a>
|
||||||
@@ -274,7 +274,7 @@ See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
|
|||||||
|
|
||||||
## 📄 License
|
## 📄 License
|
||||||
|
|
||||||
Apache 2.0 - See [LICENSE](LICENSE) for details.
|
BSL 1.1 - See [LICENSE](LICENSE) for details.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -33,16 +33,11 @@ package = true
|
|||||||
# FuzzForge module metadata for AI agent discovery
|
# FuzzForge module metadata for AI agent discovery
|
||||||
[tool.fuzzforge.module]
|
[tool.fuzzforge.module]
|
||||||
identifier = "fuzzforge-cargo-fuzzer"
|
identifier = "fuzzforge-cargo-fuzzer"
|
||||||
category = "fuzzer"
|
|
||||||
language = "rust"
|
|
||||||
pipeline_stage = "fuzzing"
|
|
||||||
pipeline_order = 3
|
|
||||||
suggested_predecessors = ["fuzzforge-harness-tester"]
|
suggested_predecessors = ["fuzzforge-harness-tester"]
|
||||||
continuous_mode = true
|
continuous_mode = true
|
||||||
typical_duration = "continuous"
|
|
||||||
|
|
||||||
use_cases = [
|
use_cases = [
|
||||||
"Run continuous coverage-guided fuzzing with libFuzzer",
|
"Run continuous coverage-guided fuzzing on Rust targets with libFuzzer",
|
||||||
"Execute cargo-fuzz on validated harnesses",
|
"Execute cargo-fuzz on validated harnesses",
|
||||||
"Produce crash artifacts for analysis",
|
"Produce crash artifacts for analysis",
|
||||||
"Long-running fuzzing campaign"
|
"Long-running fuzzing campaign"
|
||||||
|
|||||||
@@ -34,16 +34,11 @@ package = true
|
|||||||
# FuzzForge module metadata for AI agent discovery
|
# FuzzForge module metadata for AI agent discovery
|
||||||
[tool.fuzzforge.module]
|
[tool.fuzzforge.module]
|
||||||
identifier = "fuzzforge-crash-analyzer"
|
identifier = "fuzzforge-crash-analyzer"
|
||||||
category = "reporter"
|
|
||||||
language = "rust"
|
|
||||||
pipeline_stage = "crash-analysis"
|
|
||||||
pipeline_order = 4
|
|
||||||
suggested_predecessors = ["fuzzforge-cargo-fuzzer"]
|
suggested_predecessors = ["fuzzforge-cargo-fuzzer"]
|
||||||
continuous_mode = false
|
continuous_mode = false
|
||||||
typical_duration = "1m"
|
|
||||||
|
|
||||||
use_cases = [
|
use_cases = [
|
||||||
"Analyze crash artifacts from fuzzing",
|
"Analyze Rust crash artifacts from fuzzing",
|
||||||
"Deduplicate crashes by stack trace signature",
|
"Deduplicate crashes by stack trace signature",
|
||||||
"Triage crashes by severity (critical, high, medium, low)",
|
"Triage crashes by severity (critical, high, medium, low)",
|
||||||
"Generate security vulnerability reports"
|
"Generate security vulnerability reports"
|
||||||
|
|||||||
@@ -31,40 +31,25 @@ fuzzforge-modules-sdk = { workspace = true }
|
|||||||
package = true
|
package = true
|
||||||
|
|
||||||
# FuzzForge module metadata for AI agent discovery
|
# FuzzForge module metadata for AI agent discovery
|
||||||
# See MODULE_METADATA.md for full documentation
|
|
||||||
[tool.fuzzforge.module]
|
[tool.fuzzforge.module]
|
||||||
# REQUIRED: Unique module identifier (should match Docker image name)
|
# REQUIRED: Unique module identifier (should match Docker image name)
|
||||||
identifier = "fuzzforge-module-template"
|
identifier = "fuzzforge-module-template"
|
||||||
|
|
||||||
# REQUIRED: Module category - one of: analyzer, validator, fuzzer, reporter
|
# Optional: List of module identifiers that should run before this one
|
||||||
category = "analyzer"
|
suggested_predecessors = []
|
||||||
|
|
||||||
# Optional: Target programming language
|
|
||||||
language = "rust"
|
|
||||||
|
|
||||||
# Optional: Pipeline stage name
|
|
||||||
pipeline_stage = "analysis"
|
|
||||||
|
|
||||||
# Optional: Numeric order in pipeline (for sorting)
|
|
||||||
pipeline_order = 1
|
|
||||||
|
|
||||||
# Optional: List of module identifiers that must run before this one
|
|
||||||
dependencies = []
|
|
||||||
|
|
||||||
# Optional: Whether this module supports continuous/background execution
|
# Optional: Whether this module supports continuous/background execution
|
||||||
continuous_mode = false
|
continuous_mode = false
|
||||||
|
|
||||||
# Optional: Expected runtime (e.g., "30s", "5m", "continuous")
|
|
||||||
typical_duration = "30s"
|
|
||||||
|
|
||||||
# REQUIRED: Use cases help AI agents understand when to use this module
|
# REQUIRED: Use cases help AI agents understand when to use this module
|
||||||
|
# Include language/target info here (e.g., "Analyze Rust crate...")
|
||||||
use_cases = [
|
use_cases = [
|
||||||
"FIXME: Describe what this module does",
|
"FIXME: Describe what this module does",
|
||||||
"FIXME: Describe typical usage scenario"
|
"FIXME: Describe typical usage scenario"
|
||||||
]
|
]
|
||||||
|
|
||||||
# REQUIRED: What inputs the module expects
|
# REQUIRED: What inputs the module expects
|
||||||
input_requirements = [
|
common_inputs = [
|
||||||
"FIXME: List required input files or artifacts"
|
"FIXME: List required input files or artifacts"
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|||||||
@@ -31,40 +31,25 @@ fuzzforge-modules-sdk = { workspace = true }
|
|||||||
package = true
|
package = true
|
||||||
|
|
||||||
# FuzzForge module metadata for AI agent discovery
|
# FuzzForge module metadata for AI agent discovery
|
||||||
# See MODULE_METADATA.md for full documentation
|
|
||||||
[tool.fuzzforge.module]
|
[tool.fuzzforge.module]
|
||||||
# REQUIRED: Unique module identifier (should match Docker image name)
|
# REQUIRED: Unique module identifier (should match Docker image name)
|
||||||
identifier = "fuzzforge-module-template"
|
identifier = "fuzzforge-module-template"
|
||||||
|
|
||||||
# REQUIRED: Module category - one of: analyzer, validator, fuzzer, reporter
|
# Optional: List of module identifiers that should run before this one
|
||||||
category = "analyzer"
|
suggested_predecessors = []
|
||||||
|
|
||||||
# Optional: Target programming language
|
|
||||||
language = "rust"
|
|
||||||
|
|
||||||
# Optional: Pipeline stage name
|
|
||||||
pipeline_stage = "analysis"
|
|
||||||
|
|
||||||
# Optional: Numeric order in pipeline (for sorting)
|
|
||||||
pipeline_order = 1
|
|
||||||
|
|
||||||
# Optional: List of module identifiers that must run before this one
|
|
||||||
dependencies = []
|
|
||||||
|
|
||||||
# Optional: Whether this module supports continuous/background execution
|
# Optional: Whether this module supports continuous/background execution
|
||||||
continuous_mode = false
|
continuous_mode = false
|
||||||
|
|
||||||
# Optional: Expected runtime (e.g., "30s", "5m", "continuous")
|
|
||||||
typical_duration = "30s"
|
|
||||||
|
|
||||||
# REQUIRED: Use cases help AI agents understand when to use this module
|
# REQUIRED: Use cases help AI agents understand when to use this module
|
||||||
|
# Include language/target info here (e.g., "Analyze Rust crate...")
|
||||||
use_cases = [
|
use_cases = [
|
||||||
"FIXME: Describe what this module does",
|
"FIXME: Describe what this module does",
|
||||||
"FIXME: Describe typical usage scenario"
|
"FIXME: Describe typical usage scenario"
|
||||||
]
|
]
|
||||||
|
|
||||||
# REQUIRED: What inputs the module expects
|
# REQUIRED: What inputs the module expects
|
||||||
input_requirements = [
|
common_inputs = [
|
||||||
"FIXME: List required input files or artifacts"
|
"FIXME: List required input files or artifacts"
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -72,3 +57,6 @@ input_requirements = [
|
|||||||
output_artifacts = [
|
output_artifacts = [
|
||||||
"FIXME: List output files produced"
|
"FIXME: List output files produced"
|
||||||
]
|
]
|
||||||
|
|
||||||
|
# REQUIRED: How AI should display output to user
|
||||||
|
output_treatment = "FIXME: Describe how to present the output"
|
||||||
|
|||||||
@@ -30,16 +30,11 @@ dev-dependencies = [
|
|||||||
# FuzzForge module metadata for AI agent discovery
|
# FuzzForge module metadata for AI agent discovery
|
||||||
[tool.fuzzforge.module]
|
[tool.fuzzforge.module]
|
||||||
identifier = "fuzzforge-harness-tester"
|
identifier = "fuzzforge-harness-tester"
|
||||||
category = "validator"
|
|
||||||
language = "rust"
|
|
||||||
pipeline_stage = "harness-testing"
|
|
||||||
pipeline_order = 2
|
|
||||||
suggested_predecessors = ["fuzzforge-rust-analyzer"]
|
suggested_predecessors = ["fuzzforge-rust-analyzer"]
|
||||||
continuous_mode = false
|
continuous_mode = false
|
||||||
typical_duration = "2m"
|
|
||||||
|
|
||||||
use_cases = [
|
use_cases = [
|
||||||
"Validate fuzz harnesses compile correctly",
|
"Validate Rust fuzz harnesses compile correctly",
|
||||||
"Run short fuzzing trials to assess harness quality",
|
"Run short fuzzing trials to assess harness quality",
|
||||||
"Provide detailed feedback for AI to improve harnesses",
|
"Provide detailed feedback for AI to improve harnesses",
|
||||||
"Gate before running expensive long fuzzing campaigns"
|
"Gate before running expensive long fuzzing campaigns"
|
||||||
|
|||||||
@@ -30,13 +30,8 @@ package = true
|
|||||||
# FuzzForge module metadata for AI agent discovery
|
# FuzzForge module metadata for AI agent discovery
|
||||||
[tool.fuzzforge.module]
|
[tool.fuzzforge.module]
|
||||||
identifier = "fuzzforge-rust-analyzer"
|
identifier = "fuzzforge-rust-analyzer"
|
||||||
category = "analyzer"
|
|
||||||
language = "rust"
|
|
||||||
pipeline_stage = "analysis"
|
|
||||||
pipeline_order = 1
|
|
||||||
suggested_predecessors = []
|
suggested_predecessors = []
|
||||||
continuous_mode = false
|
continuous_mode = false
|
||||||
typical_duration = "30s"
|
|
||||||
|
|
||||||
use_cases = [
|
use_cases = [
|
||||||
"Analyze Rust crate to find fuzzable functions",
|
"Analyze Rust crate to find fuzzable functions",
|
||||||
|
|||||||
@@ -53,36 +53,24 @@ class ModuleInfo:
|
|||||||
#: Whether module image exists locally.
|
#: Whether module image exists locally.
|
||||||
available: bool = True
|
available: bool = True
|
||||||
|
|
||||||
#: Module category (analyzer, validator, fuzzer, reporter).
|
#: Module identifiers that should run before this one.
|
||||||
category: str | None = None
|
suggested_predecessors: list[str] | None = None
|
||||||
|
|
||||||
#: Target programming language (e.g., "rust", "python").
|
|
||||||
language: str | None = None
|
|
||||||
|
|
||||||
#: Pipeline stage name (e.g., "analysis", "fuzzing").
|
|
||||||
pipeline_stage: str | None = None
|
|
||||||
|
|
||||||
#: Numeric order in pipeline for sorting.
|
|
||||||
pipeline_order: int | None = None
|
|
||||||
|
|
||||||
#: Module identifiers that must run before this one.
|
|
||||||
dependencies: list[str] | None = None
|
|
||||||
|
|
||||||
#: Whether module supports continuous/background execution.
|
#: Whether module supports continuous/background execution.
|
||||||
continuous_mode: bool = False
|
continuous_mode: bool = False
|
||||||
|
|
||||||
#: Expected runtime (e.g., "30s", "5m", "continuous").
|
|
||||||
typical_duration: str | None = None
|
|
||||||
|
|
||||||
#: Typical use cases and scenarios for this module.
|
#: Typical use cases and scenarios for this module.
|
||||||
use_cases: list[str] | None = None
|
use_cases: list[str] | None = None
|
||||||
|
|
||||||
#: Input requirements (e.g., ["rust-source-code", "Cargo.toml"]).
|
#: Common inputs (e.g., ["rust-source-code", "Cargo.toml"]).
|
||||||
input_requirements: list[str] | None = None
|
common_inputs: list[str] | None = None
|
||||||
|
|
||||||
#: Output artifacts produced (e.g., ["fuzzable_functions.json"]).
|
#: Output artifacts produced (e.g., ["fuzzable_functions.json"]).
|
||||||
output_artifacts: list[str] | None = None
|
output_artifacts: list[str] | None = None
|
||||||
|
|
||||||
|
#: How AI should display/treat outputs.
|
||||||
|
output_treatment: str | None = None
|
||||||
|
|
||||||
|
|
||||||
class Runner:
|
class Runner:
|
||||||
"""Main FuzzForge Runner interface.
|
"""Main FuzzForge Runner interface.
|
||||||
@@ -274,16 +262,12 @@ class Runner:
|
|||||||
description=project_info.get("description"),
|
description=project_info.get("description"),
|
||||||
version=project_info.get("version", image.tag),
|
version=project_info.get("version", image.tag),
|
||||||
available=True,
|
available=True,
|
||||||
category=fuzzforge_meta.get("category"),
|
suggested_predecessors=fuzzforge_meta.get("suggested_predecessors", []),
|
||||||
language=fuzzforge_meta.get("language"),
|
|
||||||
pipeline_stage=fuzzforge_meta.get("pipeline_stage"),
|
|
||||||
pipeline_order=fuzzforge_meta.get("pipeline_order"),
|
|
||||||
dependencies=fuzzforge_meta.get("dependencies", []),
|
|
||||||
continuous_mode=fuzzforge_meta.get("continuous_mode", False),
|
continuous_mode=fuzzforge_meta.get("continuous_mode", False),
|
||||||
typical_duration=fuzzforge_meta.get("typical_duration"),
|
|
||||||
use_cases=fuzzforge_meta.get("use_cases", []),
|
use_cases=fuzzforge_meta.get("use_cases", []),
|
||||||
input_requirements=fuzzforge_meta.get("input_requirements", []),
|
common_inputs=fuzzforge_meta.get("common_inputs", []),
|
||||||
output_artifacts=fuzzforge_meta.get("output_artifacts", []),
|
output_artifacts=fuzzforge_meta.get("output_artifacts", []),
|
||||||
|
output_treatment=fuzzforge_meta.get("output_treatment"),
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user