AWS WAF Classic global rule groups should have at least one rule
Checks that the AWS WAF Classic global rule group has at least one rule. An empty rule group inspects nothing, so traffic passes untouched while a name suggesting block implies protection that is not there. A group whose rules only count still passes. AWS WAF Classic support ended on September 30, 2025, so migrating to AWS WAF is the lasting fix.
- service
- WAF
- severity
- Medium
- scope
- evaluated once per account
How to fix it
- Can break clients: Where a web ACL uses this group, a rule added with Block blocks matching requests as soon as the update is saved; add it with Count first and read its metrics.
In the console
AWS WAF Classic → Global (CloudFront) → Rule groups → the rule group → Rules
- Add rule to rule group
- An existing rule with at least one condition; rate-based rules cannot be added
- Action
- Block or Allow as intended, with Count first to see what the rule matches
With the AWS CLI
aws waf update-rule-group --rule-group-id <rule-group-id> --change-token <change-token> --updates '[{"Action":"INSERT","ActivatedRule":{"Priority":1,"RuleId":"<rule-id>","Action":{"Type":"BLOCK"},"Type":"REGULAR"}}]' --region us-east-1With Terraform
resource "aws_waf_rule_group" "this" {
name = var.name
metric_name = var.metric_name
activated_rule {
priority = 1
rule_id = var.rule_id
action {
type = "BLOCK"
}
}
}
See which of your accounts this check is failing on.
Book a live scan