projectdiscovery/nuclei · error
no fuzz values specified
Error message
no fuzz values specified
What it means
Returned by fuzz.Rule.executeRuleValues (pkg/fuzz/execute.go) when a fuzzing rule is executed against a request component but carries no payloads: the template's `fuzz:` payload block (a SliceOrMapSlice on the rule, fuzz/fuzz.go:92) parsed into neither a string list (rule.Fuzz.Value) nor a key:value map (rule.Fuzz.KV). With nothing to substitute into the fuzzed parameter/header/cookie, nuclei cannot build a mutated request and aborts the rule with this error.
Source
Thrown at pkg/fuzz/execute.go:451
if gotErr != nil {
return gotErr
}
req, err := ruleComponent.Rebuild()
if err != nil {
return err
}
if gotErr := rule.execWithInput(input, req, input.InteractURLs, ruleComponent, "", "", "", "", "", ""); gotErr != nil {
return gotErr
}
}
return gotErr
}
// something else is wrong
return fmt.Errorf("no fuzz values specified")
}
// Compile compiles a fuzzing rule and initializes it for operation
func (rule *Rule) Compile(generator *generators.PayloadGenerator, options *protocols.ExecutorOptions) error {
// If a payload generator is specified from base request, use it
// for payload values.
if generator != nil {
rule.generator = generator
}
rule.options = options
// Resolve the default enums
if rule.Mode != "" {
if valueType, ok := stringToModeType[rule.Mode]; !ok {
return errors.Errorf("invalid mode value specified: %s", rule.Mode)
} else {
rule.modeType = valueType
}View on GitHub (pinned to 265b3a3dec)
Solutions
- Open the failing template and give the fuzz rule entry a `fuzz:` block containing either a list of strings or a key:value map
- Run `nuclei -validate -t <template.yaml>` to catch empty fuzz blocks before execution
- If payloads come from a generator (top-level payloads + attack), verify the payloads block exists on the request and actually yields values, since the generator feeds rule.Fuzz at Compile time
- When driving fuzz.Rule programmatically, assert len(rule.Fuzz.Value) > 0 || rule.Fuzz.KV != nil before calling Execute
Example fix
# before (fuzz rule with no payloads -> no fuzz values specified)
fuzz:
- type: parameter
param: username
mode: single
fuzz: []
# after
fuzz:
- type: parameter
param: username
mode: single
fuzz:
- "'"
- "admin'--"
# after (key:value form)
fuzz:
username: admin
password: password Defensive patterns
Strategy: validation
Validate before calling
for _, r := range fuzzRules {
if len(r.Fuzz.Value) == 0 && r.Fuzz.KV == nil {
return fmt.Errorf("fuzz rule on %q has no payloads; add a fuzz value list or key:value map", r.Param)
}
} Type guard
func fuzzRuleArmed(rule *fuzz.Rule) bool {
return rule != nil && (len(rule.Fuzz.Value) > 0 || rule.Fuzz.KV != nil)
} Try / catch
if err := rule.Execute(input); err != nil {
if strings.Contains(err.Error(), "no fuzz values specified") {
gologger.Warning().Msg("skipping unarmed fuzz rule")
continue
}
return err
} Prevention
- Validate dast/fuzz templates with `nuclei -validate` in CI before execution
- Keep the fuzz payload list or key:value map directly under each fuzz rule entry
- When payloads are generator-driven, verify the payloads block produces at least one value
When it happens
Trigger: Executing a fuzz template whose rule entry has an empty, null, or missing `fuzz:` payload list (the rule has param/mode/type but no payloads); creating a fuzz.Rule in Go and calling Execute without setting Fuzz and without a payload generator passed to Compile; a payloads/attack block that compiles but generates zero value combinations so Fuzz is never populated.
Common situations: Template author scaffolds a dast/fuzz block and forgets the payload list; YAML indentation drifts so the payload values sit under a sibling key and `fuzz:` itself is empty; payloads referenced via generator DSL but the base request has no payloads section so the generator is nil; editing a copied template and deleting the values.
Related errors
- circular include directive detected: %s
- validation failed for these fields
- both verbose and silent mode specified
- probe concurrency must be at least 1
- Invalid severity: %s
AI-assisted analysis of projectdiscovery/nuclei@265b3a3dec (2026-08-15).
Data as JSON: /api/errors/e6f039387e41e0c6.
Report an issue: GitHub.