From e29bc9ff20ed2a91d393450dd34a3a744901076a Mon Sep 17 00:00:00 2001 From: alexandreps1123 Date: Wed, 9 Oct 2024 00:36:50 -0300 Subject: [PATCH] feat: config to directed greybox 2 --- cmd/dogefuzz/env.go | 9 +++++++++ fuzz/common.go | 3 +++ fuzz/leader.go | 4 ++++ listener/env.go | 1 + pkg/common/types.go | 2 ++ 5 files changed, 19 insertions(+) diff --git a/cmd/dogefuzz/env.go b/cmd/dogefuzz/env.go index ee8a0aa..ead3a2a 100644 --- a/cmd/dogefuzz/env.go +++ b/cmd/dogefuzz/env.go @@ -76,6 +76,7 @@ type Env interface { BlackboxFuzzer() interfaces.Fuzzer GreyboxFuzzer() interfaces.Fuzzer DirectedGreyboxFuzzer() interfaces.Fuzzer + DirectedGreybox2Fuzzer() interfaces.Fuzzer OtherDirectedGreyboxFuzzer() interfaces.Fuzzer PowerSchedule() interfaces.PowerSchedule } @@ -133,6 +134,7 @@ type env struct { blackboxFuzzer interfaces.Fuzzer greyboxFuzzer interfaces.Fuzzer directedGreyboxFuzzer interfaces.Fuzzer + directedGreybox2Fuzzer interfaces.Fuzzer otherDirectedGreyboxFuzzer interfaces.Fuzzer powerSchedule interfaces.PowerSchedule } @@ -479,6 +481,13 @@ func (e *env) DirectedGreyboxFuzzer() interfaces.Fuzzer { return e.directedGreyboxFuzzer } +func (e *env) DirectedGreybox2Fuzzer() interfaces.Fuzzer { + if e.directedGreybox2Fuzzer == nil { + e.directedGreybox2Fuzzer = fuzz.NewDirectedGreybox2Fuzzer(e) + } + return e.directedGreybox2Fuzzer +} + func (e *env) OtherDirectedGreyboxFuzzer() interfaces.Fuzzer { if e.otherDirectedGreyboxFuzzer == nil { e.otherDirectedGreyboxFuzzer = fuzz.NewOtherDirectedGreyboxFuzzer(e) diff --git a/fuzz/common.go b/fuzz/common.go index 59d0576..f1dcbd8 100644 --- a/fuzz/common.go +++ b/fuzz/common.go @@ -14,6 +14,7 @@ type env interface { BlackboxFuzzer() interfaces.Fuzzer GreyboxFuzzer() interfaces.Fuzzer + DirectedGreybox2Fuzzer() interfaces.Fuzzer DirectedGreyboxFuzzer() interfaces.Fuzzer OtherDirectedGreyboxFuzzer() interfaces.Fuzzer PowerSchedule() interfaces.PowerSchedule @@ -34,6 +35,8 @@ func buildOrderer(strategy common.PowerScheduleStrategy, contract *dto.ContractD return newCoverageBasedOrderer() case common.DISTANCE_BASED_STRATEGY: return newDistanceBasedOrderer(contract) + case common.DISTANCE_BASED2_STRATEGY: + return newDistanceBased2Orderer(contract) case common.DISTANCE_COVERAGE_BASED_STRATEGY: return newDistanceCoverageBasedOrderer(contract) default: diff --git a/fuzz/leader.go b/fuzz/leader.go index 376d3e1..8986af8 100644 --- a/fuzz/leader.go +++ b/fuzz/leader.go @@ -9,6 +9,7 @@ type fuzzerLeader struct { blackboxFuzzer interfaces.Fuzzer greyboxFuzzer interfaces.Fuzzer directedGreyboxFuzzer interfaces.Fuzzer + directedGreybox2Fuzzer interfaces.Fuzzer otherDirectedGreyboxFuzzer interfaces.Fuzzer } @@ -17,6 +18,7 @@ func NewFuzzerLeader(e env) *fuzzerLeader { blackboxFuzzer: e.BlackboxFuzzer(), greyboxFuzzer: e.GreyboxFuzzer(), directedGreyboxFuzzer: e.DirectedGreyboxFuzzer(), + directedGreybox2Fuzzer: e.DirectedGreybox2Fuzzer(), otherDirectedGreyboxFuzzer: e.OtherDirectedGreyboxFuzzer(), } } @@ -29,6 +31,8 @@ func (l *fuzzerLeader) GetFuzzerStrategy(typ common.FuzzingType) (interfaces.Fuz return l.greyboxFuzzer, nil case common.DIRECTED_GREYBOX_FUZZING: return l.directedGreyboxFuzzer, nil + case common.DIRECTED_GREYBOX2_FUZZING: + return l.directedGreybox2Fuzzer, nil case common.OTHER_DIRECTED_GREYBOX_FUZZING: return l.otherDirectedGreyboxFuzzer, nil default: diff --git a/listener/env.go b/listener/env.go index 4149f0f..c397832 100644 --- a/listener/env.go +++ b/listener/env.go @@ -40,6 +40,7 @@ type Env interface { BlackboxFuzzer() interfaces.Fuzzer GreyboxFuzzer() interfaces.Fuzzer DirectedGreyboxFuzzer() interfaces.Fuzzer + DirectedGreybox2Fuzzer() interfaces.Fuzzer OtherDirectedGreyboxFuzzer() interfaces.Fuzzer PowerSchedule() interfaces.PowerSchedule } diff --git a/pkg/common/types.go b/pkg/common/types.go index 6ed4d5d..a2a6e46 100644 --- a/pkg/common/types.go +++ b/pkg/common/types.go @@ -33,6 +33,7 @@ const ( BLACKBOX_FUZZING FuzzingType = "blackbox" GREYBOX_FUZZING FuzzingType = "greybox" DIRECTED_GREYBOX_FUZZING FuzzingType = "directed_greybox" + DIRECTED_GREYBOX2_FUZZING FuzzingType = "directed_greybox2" OTHER_DIRECTED_GREYBOX_FUZZING FuzzingType = "other_directed_greybox" ) @@ -79,6 +80,7 @@ type PowerScheduleStrategy string const ( DISTANCE_BASED_STRATEGY PowerScheduleStrategy = "distance_based" + DISTANCE_BASED2_STRATEGY PowerScheduleStrategy = "distance_based2" COVERAGE_BASED_STRATEGY PowerScheduleStrategy = "coverage_based" DISTANCE_COVERAGE_BASED_STRATEGY PowerScheduleStrategy = "distance_coverage_based" )