Check ID: waf_regional_rule_with_conditions
Provider: AWS
Service: waf
Severity: MEDIUM
Resource type: AwsWafRegionalRule

What this check verifies

AWS WAF Classic Regional rules have one or more conditions (predicates) attached (IP, byte/regex, geo, size, SQLi/XSS) to define which requests the rule evaluates

Risk

An empty rule never matches, letting traffic bypass that control. This weakens defense-in-depth and can impact confidentiality (data exfiltration), integrity (SQLi/XSS), and availability (missing rate/size limits), depending on Web ACL order and default action.

Recommendation

Define precise conditions for each rule (e.g., IP, pattern, geo, size) and avoid placeholder rules. Apply least privilege filtering, review rule order, and use layered controls for defense in depth. Regularly validate and monitor rule effectiveness.

Remediation

aws waf-regional update-rule --rule-id <example_rule_id> --change-token $(aws waf-regional get-change-token --query ChangeToken --output text) --updates '[{"Action":"INSERT","Predicate":{"Negated":false,"Type":"IPMatch","DataId":"<example_ipset_id>"}}]'

References

Where this check fires

This check runs on every scheduled scan against your AWS account. Findings appear at Cloud Security → Findings filterable by Check ID = waf_regional_rule_with_conditions. To re-evaluate after a fix, hit Run now on the account’s schedule under Cloud Security → Schedules — the next scan re-checks this control and marks the finding fixed or keeps it persistent.
← Back to AWS checks