aws-route53-change-records-hijack

route53:ChangeResourceRecordSets on a public hosted zone enables DNS record mutation - traffic redirection, MX/SPF override, and subdomain NS delegation (DNS hijacking primitive).

derived aws emits CanModifyConfiguration

match

A conjunctive graph pattern. Variables (?x) bind node ids; every clause must hold.

{'principal': None} HasPermission {'zone': None}

where

node_type(?zone) == DNS ?zone.provider_type == 'AWS::Route53::HostedZone' ?zone.properties.type == 'Public' effective_action_on(?principal, ?zone) contains 'route53:ChangeResourceRecordSets'

emit

source typeIdentity
target typeDNS
source?principal
target?zone
permissionsroute53:ChangeResourceRecordSets
conditionsiam_permission scp_or_org_policy
state logicACTIVE when effective-permission evaluator confirms route53:ChangeResourceRecordSets on the zone ARN (or a wildcard resource in the policy). BLOCKED if an SCP or permission boundary denies route53:ChangeResourceRecordSets on this zone's ARN. Do NOT emit for private hosted zones with this rule; use aws-route53-change-records-private-zone for private-zone coverage where the CONDITIONAL(network_reachability) condition applies.

Narrative

{principal.name} can modify any DNS record in the public hosted zone {zone.name} (route53:ChangeResourceRecordSets). An attacker can redirect A/AAAA records to attacker infrastructure, override MX for email interception, insert attacker CNAMEs, or modify TXT records to break SPF/DKIM - DNS hijacking for any name delegated to this zone.

Raw rule rules/derived/aws/route53.yaml

id: aws-route53-change-records-hijack
emits: CanModifyConfiguration
description: "route53:ChangeResourceRecordSets on a public hosted zone enables DNS record mutation \u2014\
  \ traffic redirection, MX/SPF override, and subdomain NS delegation (DNS hijacking primitive)."
applies_to:
- aws
match:
- - principal: null
  - HasPermission
  - zone: null
where:
- node_type(?zone) == DNS
- ?zone.provider_type == 'AWS::Route53::HostedZone'
- ?zone.properties.type == 'Public'
- effective_action_on(?principal, ?zone) contains 'route53:ChangeResourceRecordSets'
emit:
  source_type: Identity
  target_type: DNS
  source: ?principal
  target: ?zone
  permissions:
  - route53:ChangeResourceRecordSets
  conditions:
  - iam_permission
  - scp_or_org_policy
  state_logic: ACTIVE when effective-permission evaluator confirms route53:ChangeResourceRecordSets on
    the zone ARN (or a wildcard resource in the policy). BLOCKED if an SCP or permission boundary denies
    route53:ChangeResourceRecordSets on this zone's ARN. Do NOT emit for private hosted zones with this
    rule; use aws-route53-change-records-private-zone for private-zone coverage where the CONDITIONAL(network_reachability)
    condition applies.
  confidence: 0.95
  derived_from:
  - ?principal HasPermission ?zone (route53:ChangeResourceRecordSets)
  false_positive_note: "Honor the resource ARN scope: a policy granting route53:ChangeResourceRecordSets\
    \ on a single zone ARN does NOT permit changes to other zones. A wildcard resource covers all zones.\
    \ An SCP or permission boundary denying this action yields BLOCKED. This edge is a traffic-redirection\
    \ primitive, NOT a direct access grant; the subsequent credential capture or exploitation is out-of-band\
    \ and modeled at the receiving service (e.g. an HTTPS server the attacker stands up on the hijacked\
    \ IP). Do NOT chain this single edge directly to CanEnterAccount or CanEscalateTo \u2014 that multi-step\
    \ path includes out-of-band steps not represented in the graph. Cite can-control.yaml for the Controls\
    \ roll-up (not applicable here directly)."
  narrative: "{principal.name} can modify any DNS record in the public hosted zone {zone.name} (route53:ChangeResourceRecordSets).\
    \ An attacker can redirect A/AAAA records to attacker infrastructure, override MX for email interception,\
    \ insert attacker CNAMEs, or modify TXT records to break SPF/DKIM \u2014 DNS hijacking for any name\
    \ delegated to this zone."
move · open · esc close