Check ID:
Provider: AWS
Service:
Severity: MEDIUM
Categories:
Resource type:
waf_global_rule_with_conditionsProvider: AWS
Service:
wafSeverity: MEDIUM
Categories:
internet-exposedResource type:
AwsWafRuleWhat this check verifies
AWS WAF Classic global rules contain at least one condition that matches HTTP(S) requests the rule evaluates for action (e.g.,allow, block, count).
Risk
No-condition rules never match traffic, providing no filtering. Malicious requests (SQLi/XSS, bots) can reach origins, impacting confidentiality (data exfiltration), integrity (tampering), and availability (service disruption). They may also create a false sense of coverage.Recommendation
Attach at least one precise condition to every rule, aligned to known threats and application context. Apply least privilege for traffic, use managed rule groups for defense in depth, and routinely review rules to remove placeholders. If on Classic, plan migration to WAFv2.Remediation
- CLI
- Terraform
- Native IaC
- Dashboard steps
References
- https://docs.aws.amazon.com/waf/latest/developerguide/classic-web-acl-rules-editing.html
- https://docs.aws.amazon.com/securityhub/latest/userguide/waf-controls.html#waf-6
- https://docs.aws.amazon.com/config/latest/developerguide/waf-global-rule-not-empty.html
Where this check fires
This check runs on every scheduled scan against your AWS account. Findings appear at Cloud Security → Findings filterable byCheck ID = waf_global_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