mirror of
https://github.com/projectdiscovery/nuclei.git
synced 2026-11-07 09:46:03 -10:00
With a template filter set, a workflow step selected by tags loaded only the templates that had its tags and passed the filter. When the filter selected one of the step's subtemplates instead, the step loaded nothing, and since subtemplates run only after their step matches, the selected subtemplate never ran. Steps selected by template already load for a loaded subtemplate (#7965), but the tag lookup never got that signal, and it matched the step's tags and the filters in a single call, so it could not skip the filters without also dropping the tags. The tag lookup now selects templates by the step's tags first and then filters them. A step loaded for its subtemplate used to skip every filter that rejected a template without an error, so -eid, -es and -ept did not apply to it while -etags and -et did. Both lookups now apply only the exclusion filters to such a step, so every exclusion holds, as it does against -itags since #7536. The tag filter also let -id lift -eid for the same template, so a workflow ran a template that a scan with the same flags skips. -eid now wins, as in the metadata index filter. BREAKING-CHANGE: WorkflowLoader.GetTemplatePathsByTags takes noValidate Fixes: #7966 Refs: #7534 Signed-off-by: Dwi Siswanto <[email protected]>
17 lines
664 B
Go
17 lines
664 B
Go
package model
|
|
|
|
// TODO shouldn't this rather be TemplateLoader?
|
|
|
|
// WorkflowLoader is a loader interface required for workflow initialization.
|
|
type WorkflowLoader interface {
|
|
// GetTemplatePathsByTags returns the paths of the templates in the
|
|
// templates directory that have one of tags. noValidate is as in
|
|
// GetTemplatePaths.
|
|
GetTemplatePathsByTags(tags []string, noValidate bool) []string
|
|
|
|
// GetTemplatePaths takes a list of templates and returns paths for them.
|
|
// With noValidate, only the exclusion filters apply, such as excluded
|
|
// tags, IDs, severities, protocols and paths.
|
|
GetTemplatePaths(templatesList []string, noValidate bool) []string
|
|
}
|