projectdiscovery/nuclei · error
Invalid DNS request type: %s
Error message
Invalid DNS request type: %s
What it means
Raised by toDNSRequestTypes when a DNS template request's type field, after TrimSpace + ToUpper, matches none of DNSRequestTypeMapping (dns_types.go:56-75). Supported types are A, NS, DS, CNAME, SOA, PTR, MX, TXT, AAAA, CAA, TLSA, ANY, SRV, RRSIG, NSEC, DNSKEY, NSEC3, NSEC3PARAM. DNSRequestTypeHolder.UnmarshalYAML propagates the error and template compilation stops.
Source
Thrown at pkg/protocols/dns/dns_types.go:93
}
// GetSupportedDNSRequestTypes returns list of supported types
func GetSupportedDNSRequestTypes() []DNSRequestType {
var result []DNSRequestType
for index := DNSRequestType(1); index < limit; index++ {
result = append(result, index)
}
return result
}
func toDNSRequestTypes(valueToMap string) (DNSRequestType, error) {
normalizedValue := normalizeValue(valueToMap)
for key, currentValue := range DNSRequestTypeMapping {
if normalizedValue == currentValue {
return key, nil
}
}
return -1, errors.New("Invalid DNS request type: " + valueToMap)
}
func normalizeValue(value string) string {
return strings.TrimSpace(strings.ToUpper(value))
}
func (t DNSRequestType) String() string {
return DNSRequestTypeMapping[t]
}
// DNSRequestTypeHolder is used to hold internal type of the DNS type
type DNSRequestTypeHolder struct {
DNSRequestType DNSRequestType `mapping:"true"`
}
func (holder DNSRequestTypeHolder) String() string {
return holder.DNSRequestType.String()
}View on GitHub (pinned to 265b3a3dec)
Solutions
- Use one of the supported types, e.g. A, AAAA, CNAME, MX, TXT, SOA, NS, PTR, SRV, CAA, TLSA, DS, ANY, RRSIG, NSEC, DNSKEY, NSEC3, NSEC3PARAM
- Check the type is spelled as a bare record name without extra words
- Validate DNS templates with nuclei -validate before running
Example fix
# before
dns:
- type: AXFR
name: '{{FQDN}}'
# after
dns:
- type: NS
name: '{{FQDN}}' Defensive patterns
Strategy: validation
Validate before calling
var validDNSTypes = map[string]bool{}
for _, t := range dns.GetSupportedDNSRequestTypes() { validDNSTypes[t.String()] = true }
func dnsTypeOK(s string) bool { return validDNSTypes[strings.ToUpper(strings.TrimSpace(s))] } Prevention
- Lint DNS templates against the eighteen supported record types
- Use the bare record name (TXT, not txt-record)
- Run nuclei -validate before adding templates to a pack
When it happens
Trigger: A dns request block with type: AXFR, type: mx (fine after uppercasing) but type: mail fails; any record type outside the eighteen supported values.
Common situations: Requesting zone-transfer (AXFR) or obscure record types nuclei does not enumerate; lowercase/mixed-case works, but abbreviations and wrong names (e.g. 'txt-record') do not.
Related errors
- validation failed for these fields
- Invalid severity: %s
- Invalid extractor type: %s
- Invalid matcher type: %s
- Invalid action type: %s
AI-assisted analysis of projectdiscovery/nuclei@265b3a3dec (2026-08-15).
Data as JSON: /api/errors/4db8f10cf263e218.
Report an issue: GitHub.