Check ID:
Provider: AWS
Service:
Severity: HIGH
Resource type:
waf_global_rulegroup_not_emptyProvider: AWS
Service:
wafSeverity: HIGH
Resource type:
AwsWafRuleGroupWhat this check verifies
AWS WAF Classic global rule groups are assessed for the presence of one or more rules. Empty groups are identified even when referenced by a web ACL, meaning the group adds no match logic.Risk
An empty rule group performs no inspection, so web requests pass without WAF scrutiny. This creates blind spots enabling:- Confidentiality: data exfiltration via SQLi/XSS
- Integrity: parameter tampering
- Availability: bot abuse and layer-7 DoS
Recommendation
Populate each rule group with effective rules aligned to application threats; chooseblock or count actions as appropriate. Prefer managed rule groups as a baseline and layer custom rules for least privilege. Avoid placeholder groups, test in staging, and monitor metrics to tune.
Remediation
- CLI
- Terraform
- Native IaC
- Dashboard steps
References
- https://docs.aws.amazon.com/waf/latest/developerguide/waf-rule-groups.html
- https://docs.aws.amazon.com/securityhub/latest/userguide/waf-controls.html#waf-7
- https://docs.aws.amazon.com/waf/latest/developerguide/classic-rule-group-editing.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_rulegroup_not_empty. 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