For the complete documentation index, see llms.txt. This page is also available as Markdown.
Cortex CloudApplication Security

AWS CloudFront attached WAFv2 WebACL is not configured with AMR for Log4j Vulnerability misconfigura

AWS CloudFront attached WAFv2 WebACL is not configured with AMR for Log4j Vulnerability misconfiguration detected in code

Rule Details

Cortex AppSec Rule ID

APPSEC2_AWS_47

Category - Subcategory

Public Exposure - APIs

Provider

AWS

Severity

MEDIUM

Framework

Terraform

Mapped CSPM/KSPM Rule

c8bbb7a9-c13a-482b-a0f3-96b4f5ff2ce0

Impact

This rule identifies AWS CloudFront attached with WAFv2 WebACL which is not configured with AWS Managed Rules (AMR) for Log4j Vulnerability. As per the guidelines given by AWS, CloudFront attached with WAFv2 WebACL should be configured with AWS Managed Rules (AMR) AWSManagedRulesKnownBadInputsRuleSet and AWSManagedRulesAnonymousIpList to protect from Log4j Vulnerability (CVE-2021-44228).

For more information please refer to https://aws.amazon.com/security/security-bulletins/AWS-2021-006/

How to Fix

Resource: aws_cloudfront_distribution, aws_wafv2_web_acl

  • Arguments: rule.statement.managed_rule_group_statement.name [source,go]


resource "aws_cloudfront_distribution" "pass" { origin { domain_name = aws_s3_bucket.b.bucket_regional_domain_name origin_access_control_id = aws_cloudfront_origin_access_control.default.id origin_id = local.s3_origin_id }

enabled = true is_ipv6_enabled = true comment = "Some comment" default_root_object = "index.html"

aliases = ["mysite.example.com", "yoursite.example.com"]

default_cache_behavior { allowed_methods = ["DELETE", "GET", "HEAD", "OPTIONS", "PATCH", "POST", "PUT"] cached_methods = ["GET", "HEAD"] target_origin_id = local.s3_origin_id

forwarded_values { query_string = false

cookies { forward = "none" } }

viewer_protocol_policy = "allow-all" min_ttl = 0 default_ttl = 3600 max_ttl = 86400 }

Cache behavior with precedence 0

ordered_cache_behavior { path_pattern = "/content/immutable/*" allowed_methods = ["GET", "HEAD", "OPTIONS"] cached_methods = ["GET", "HEAD", "OPTIONS"] target_origin_id = local.s3_origin_id

forwarded_values { query_string = false headers = ["Origin"]

cookies { forward = "none" } }

min_ttl = 0 default_ttl = 86400 max_ttl = 31536000 compress = true viewer_protocol_policy = "redirect-to-https" }

price_class = "PriceClass_200"

restrictions { geo_restriction { restriction_type = "whitelist" locations = ["US", "CA", "GB", "DE"] } }

tags = { Environment = "production" }

viewer_certificate { cloudfront_default_certificate = true } web_acl_id = aws_wafv2_web_acl.pass_acl.arn }

resource "aws_wafv2_web_acl" "pass_acl" { name = "managed-rule-example" description = "Example of a managed rule." scope = "REGIONAL"

default_action { allow {} }

rule { name = "rule-1" priority = 1

override_action { count {} }

statement { managed_rule_group_statement { name = "AWSManagedRulesAnonymousIpList" vendor_name = "AWS"

excluded_rule { name = "SizeRestrictions_QUERYSTRING" }

scope_down_statement { geo_match_statement { country_codes = ["US", "NL"] } } } }

visibility_config { cloudwatch_metrics_enabled = false metric_name = "friendly-rule-metric-name" sampled_requests_enabled = false } }

rule { name = "rule-2" priority = 2

override_action { count {} }

statement { managed_rule_group_statement { name = "AWSManagedRulesKnownBadInputsRuleSet" vendor_name = "AWS"

excluded_rule { name = "SizeRestrictions_QUERYSTRING" }

scope_down_statement { geo_match_statement { country_codes = ["US", "NL"] } } } }

visibility_config { cloudwatch_metrics_enabled = false metric_name = "friendly-rule-metric-name" sampled_requests_enabled = false } }

tags = { Tag1 = "Value1" Tag2 = "Value2" }

visibility_config { cloudwatch_metrics_enabled = false metric_name = "friendly-metric-name" sampled_requests_enabled = false } }

Last updated

Was this helpful?