rules:
- id: aws-kms-no-rotation
  patterns:
  - pattern-either:
    - pattern: |
        resource "aws_kms_key" $ANYTHING {
          ...
          enable_key_rotation = false
          ...
        }
    - pattern: |
        resource "aws_kms_key" $ANYTHING {
          ...
          customer_master_key_spec = "SYMMETRIC_DEFAULT"
          enable_key_rotation = false
          ...
        }
    - pattern: |
        resource "aws_kms_key" $ANYTHING {
          ...
        }
  - pattern-not-inside: |
      resource "aws_kms_key" $ANYTHING {
        ...
        enable_key_rotation = true
        ...
      }
  - pattern-not-inside: |
      resource "aws_kms_key" $ANYTHING {
        ...
        customer_master_key_spec = "RSA_2096"
        ...
      }
  message: The AWS KMS has no rotation. Missing rotation can cause leaked key to be used by attackers.
    To fix this, set a `enable_key_rotation`.
  languages: [hcl]
  severity: WARNING
  metadata:
    owasp:
    - A03:2017 - Sensitive Data Exposure
    - A02:2021 - Cryptographic Failures
    cwe:
    - 'CWE-326: Inadequate Encryption Strength'
    technology:
    - aws
    - terraform
    category: security
    references:
    - https://owasp.org/Top10/A02_2021-Cryptographic_Failures
    subcategory:
    - vuln
    likelihood: MEDIUM
    impact: MEDIUM
    confidence: MEDIUM
