Skip to main content
CRITICAL SEVERITYCVSS 3.1: 9.1Category: HOSTINGRecord: cnameVerified: 2026-02-15

How to Prevent GitHub Pages CNAME Takeover: Terraform & DNS Remediation

A comprehensive, zero-hallucination security guide to detecting and purging dangling CNAME records pointing to orphaned GitHub Pages assets. Includes verified HTTP response signatures, CVSS attack vectors, and multi-provider Terraform fixes.

CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N

Command-Line Verification & Response Fingerprint

Execute this verification probe against your suspected subdomain to confirm if an orphaned GitHub Pages resource is currently unallocated and claimable.

Probing CommandBash / Zsh
$ curl -I -s -S https://subdomain.yourcompany.com
Queries HTTP response headers without downloading payloads to test DNS delegation state.
Authoritative Provider Signature404 Not Found
HTTP/1.1 404 Not Found
server: GitHub.com
x-github-request-id: 04A2:2415:10FA2C:19BF8

[Response Token Match: "There isn't a GitHub Pages site here"]
Presence of token "There isn't a GitHub Pages site here" confirms vulnerability.

Exploitation Risk Matrix & Blast Radius

Dangling DNS records allow adversaries to provision the unclaimed GitHub Pages endpoint and serve arbitrary malicious content under your authoritative domain.

Session Cookie Theft

If root session cookies use Domain=.yourcompany.com, the hijacked subdomain automatically receives credentials on incoming requests, bypassing HTTP-only safeguards.

OAuth Redirect Poisoning

Permissive OAuth callback patterns (e.g. https://*.yourcompany.com/auth/callback) can be routed directly to the attacker-controlled subdomain to harvest auth codes and tokens.

Cross-Site Scripting (XSS)

Adversaries can host phishing portals, execute arbitrary JavaScript in the context of your domain origin, and bypass Content Security Policy (CSP) wildcard entries.

Remediation Provider & IaC Switcher

Authoritative DNS deletion commands and infrastructure-as-code manifests to purge dangling GitHub Pages records.

resource "cloudflare_record" "remediated" {
  zone_id = var.cloudflare_zone_id
  name    = "subdomain"
  type    = "CNAME"
  content = "active-service.example.com"
  proxied = true
  ttl     = 1
}

Authoritative Remediation Protocol

  1. 1Remove the CNAME record pointing to *.github.io from your DNS zone.
  2. 2Verify your domain in your GitHub organization settings under "Custom domain verification" with a TXT record.
  3. 3Enforce HTTPS and ensure your repository maintains a CNAME file specifying the subdomain.

Live GitHub Pages CNAME Pattern Matcher

Paste any suspicious CNAME destination to test if it resolves to an unlinked or vulnerable GitHub Pages endpoint.

Quick test:
Vulnerable Signature Matched: This target matches the authoritative fingerprint pattern for GitHub Pages. If this DNS pointer returns an orphaned HTTP response, an attacker can register the backend endpoint and hijack traffic.

RFC Citations & Technical Standards

Live Threat Detection Engine

Scan Your Attack Surface for Dangling GitHub Pages Records

SubDomainWatch continuously enumerates DNS zones, evaluates CNAME chains with recursive unwrap, and probes HTTP response bodies to catch orphan assets before attackers do.

Run Free 60-Second Scan