Response guide · technical

Subdomain Takeover Remediation: A Response Guide

By Nathan Hill-Haimes · Published 24 September 2026 Updated

Disclosure and scope

This guide is published by SurfaceLoop, which sells external attack surface monitoring -- one of the controls recommended at the end. The remediation steps need no tooling beyond a DNS client and your provider consoles. Two deliberate omissions. We do not name specific vendors as vulnerable: namespace rules and error pages change, so the triage table describes patterns by class of service instead. And this page carries no first-party statistic: our September 2026 research cohort was apex domains and IP addresses, so we have no honest subdomain-level prevalence figure and will not imply one. Nothing here is legal advice; the confirmation section describes the questions to put to your own adviser.

How does a subdomain takeover actually happen?

A subdomain takeover is not really an attack on DNS. It is an attack on the gap between two systems: the register of names you publish, and the register of resources those names point at. The interesting property of a dangling DNS record is that it is harmless for most of its life and becomes exploitable at a moment nothing on your side marks. Understanding the five stages tells you where to intervene.

The five stages of the dangling DNS record lifecycle, who is involved at each, and the risk at each point
Stage What happens Who is involved Risk at this point
1. The record is created Somebody points a hostname at a third-party service: a CNAME to a platform, an A record to a cloud instance, an NS delegation to a provider's nameservers, or an SPF include naming a marketing supplier's domain. Often not the team that will later remove the resource. Marketing, a supplier, a contractor, or an engineer standing up a campaign site on a Friday. None. Everything works, which is exactly why nobody writes it down.
2. The resource is decommissioned The bucket is deleted, the app is torn down, the CDN distribution is removed, the trial tenant lapses, the instance is destroyed and its public address returns to the provider's pool, the supplier contract ends. Whoever owned the resource. DNS is a different system, usually a different console, often a different team. The record becomes dangling. Still resolvable, still yours, now pointing at nothing -- a pointer to an address that the provider is free to hand to somebody else.
3. The name becomes claimable The vacated identifier re-enters the provider's namespace. Depending on the class of service that identifier is a bucket name, an app slug, a tenant name, a distribution alias, or simply an IP address in a regional pool. The provider's namespace rules decide this, not you. You have no visibility into it from outside. This is the window. The record was harmless in stage 2 and is exploitable in stage 3, and nothing observable on your side changed between them.
4. Somebody claims it An attacker registers the free identifier on the provider and, because your DNS still points there, begins serving content at your hostname -- with a valid certificate, since most platforms will issue one for a hostname that resolves to them. Increasingly automated. Bulk scanning for dangling records and claiming what is available is a commodity activity, not a targeted one. Phishing under a hostname your staff and customers trust; cookies set on the parent domain where scope allows it; abuse of allowlists that trusted the subdomain; search and brand damage; and, in the email variants, mail that passes authentication.
5. You find out From monitoring, from a certificate-transparency alert, from a customer, from a bug bounty report, or from somebody on your own team noticing that a hostname nobody maintains is serving a casino. Ideally your own monitoring. In practice, frequently somebody else. By this point the remediation question is no longer maintenance -- it is incident response, because you have to establish what was served and for how long.

Two conclusions fall straight out of the table. The first is that the fix belongs at stage two: if DNS is removed before the resource is deleted, stage three never happens, and no amount of detection is needed. The second is that stage three is invisible to you -- the transition from safe to exploitable is an event inside somebody else's namespace, which is why this is one of the few external findings where continuous checking genuinely beats periodic auditing.

It is also worth being clear about why this matters beyond the hostname itself. Content served at a name on your domain inherits trust you have already spent years building: staff click it, customers recognise it, and depending on cookie scope it may be able to set cookies the parent domain will accept. Allowlists that named the subdomain -- content security policy, CORS, OAuth redirect URIs, API access rules -- extend to whoever holds it. And the email variants let mail that claims to be from you pass authentication, which is how dangling records were abused at scale in the SubdoMailing campaign documented by Guardio Labs in February 2024 across more than 8,000 domains. Our explainer on how takeover works covers the attack side in more detail; this guide is about what to do once you have one.

How do you confirm one without exploiting it?

Read this section before you touch anything, because the tempting confirmation step is also the one you must not take. The definitive proof that a subdomain is takeable is to take it. On your own domain that is fine and often the fastest remediation. On anybody else's it is the exploitation step, and no amount of good intention converts it into an assessment.

The line, stated plainly

Resolving public DNS records and requesting a public HTTP response are ordinary uses of public infrastructure. Registering the vacated resource is different in kind: you are causing a provider's systems to give you control of a name belonging to somebody else. In the UK the relevant statute is the Computer Misuse Act 1990, whose section 1 offence turns on causing a computer to perform a function with intent to secure access to programs or data, knowing at the time that the access is unauthorised. "I intended to give it back" is not one of the elements. Claiming a hostname you do not own will also, in the ordinary case, breach the hosting provider's own acceptable-use terms, which is a separate problem with the same root cause.

So: on domains you control, confirm however you like, including by claiming the resource. On domains you do not control, confirm read-only and report. If you run scanning for clients, this is the same written-authorisation discipline set out in our MSP playbook, and the scope needs to name the domains explicitly. None of this is legal advice -- it is the set of questions to take to your own adviser before you write a testing procedure.

The read-only confirmation procedure

  1. Resolve the whole chain, authoritatively. Query the authoritative nameservers for the hostname and follow every hop: your name may CNAME to a vanity name which CNAMEs to a platform endpoint. Note which hop is the last one that answers, because that is where the defect is. Chained records are where most misdiagnosis happens.
  2. Check whether the final target exists at all. A CNAME target that itself returns NXDOMAIN is the cleanest signal available: the name you are delegating trust to is not registered with anybody. For an A or AAAA record there is no target name to check, so look instead at whether anything is listening on the address and whether what answers has any relationship to you -- a reverse DNS lookup and the certificate presented on any TLS port are both informative here.
  3. Read the response body and headers. Request the hostname over HTTP and HTTPS and read what comes back. Unclaimed resources on most platforms return a distinctive, provider-worded message to the effect that no such container, application, site or store exists -- and crucially, served from the provider's infrastructure rather than yours. Note the headers too: they usually identify the platform even when the body is generic.
  4. Identify the class of service, then look up the pattern. Use the table below to work out what kind of namespace you are dealing with, which determines both severity and the remediation branch. Community fingerprint references such as can-i-take-over-xyz are genuinely useful here, with the caveat the project states itself: it is community-maintained and does not guarantee accuracy. Fingerprints go stale as providers reword error pages and add ownership verification.
  5. Check certificate transparency for the name. Search certificate transparency logs for the hostname. Certificates you did not request -- particularly recent ones -- suggest somebody has already completed validation while controlling the name, which changes this from a remediation into an incident.
  6. Write the evidence down before you change anything. Timestamp, the DNS answers at each hop, the HTTP status, headers and body, the certificate history, and the class you assigned it. Five minutes of recording now is the difference between a clean ticket and an argument in three weeks about what the state actually was.

On automated detectors

Purpose-built takeover scanners and template-driven scanners work by enumerating names and matching responses against fingerprint sets. They are the right way to cover a large estate and they share two limitations worth knowing. They produce false positives, because a provider error page can mean "not claimed" or simply "misconfigured", and they produce false negatives on anything whose fingerprint has not been contributed yet. Run them only within a scope you are authorised to scan, and treat every hit as a candidate to be confirmed by the procedure above rather than as a finding.

If it is not your domain

Report it and stop. Look for a security.txt file at the domain -- the standard formalised as RFC 9116, which names a contact and often a disclosure policy -- then a published bug bounty or disclosure programme, then a security mailbox, then the ordinary contact route asking to be connected to whoever handles security. Send the hostname, the record chain, the observed response, the timestamp and the class of service -- enough for their engineer to reproduce a read-only check in a minute -- and say explicitly that you have not claimed the resource. Where the affected name belongs to a UK government online service and you cannot find a contact, the NCSC points reporters at the Government Vulnerability Reporting Service. For private organisations there is no equivalent backstop, which is a real limitation: if the holder will not engage, your options are persistence and, where the exposure is being actively abused, the relevant hosting provider's own abuse route.

What changes by hosting provider class?

The table is organised by class of service rather than by vendor, deliberately. Whether a specific named platform is currently takeable depends on its namespace rules, its error pages and whether it has added domain-ownership verification -- all of which change, frequently, and none of which a guide can keep current. What does not change is the pattern each class exhibits, and the pattern is what tells you the severity and the remediation branch.

Subdomain takeover triage by class of hosting provider: the pattern, the read-only fingerprint, severity and notes
Class of service The pattern Read-only fingerprint Severity Notes
Object and static-file storage A hostname is CNAMEd to a storage endpoint whose identifier -- a bucket or container name -- lives in a flat namespace shared by every customer of that provider, sometimes globally and sometimes per region. Delete the container and the name typically returns to that namespace. An HTTP response from the storage endpoint saying, in the provider's own wording, that no such container exists; or the endpoint hostname failing to resolve at all. High where the hostname served anything a browser trusts. Content is fully attacker-controlled once claimed, and the provider will usually serve it over HTTPS on your name. Region-scoped namespaces are a false comfort: the region is generally guessable from the endpoint hostname you left in DNS.
PaaS and application platforms Two separate things can dangle. The application slot itself -- the platform-assigned name your CNAME targets -- can be released and re-taken. Separately, the custom-domain binding can be free even when nothing is wrong with the app, so somebody else can attach your hostname to their application. The platform's generic 'no such application' or unrouted-hostname page. Sometimes the platform-assigned hostname resolves fine and only the binding is absent, which is why the response body matters more than whether DNS resolves. High. These platforms are built to serve arbitrary application code, and a claimed binding gives the attacker a full web application on your hostname. Many platforms now require a domain-verification token before accepting a custom hostname, which closes the binding half of this. Coverage is uneven and changes -- check the current documentation for the platform you actually use rather than assuming either way.
CDN, edge and reverse proxy A hostname is CNAMEd to a distribution, zone or property, and the hostname is registered with that distribution as an alias. Deleting the distribution leaves the CNAME pointing at an edge that no longer knows the name. A provider-branded error from the edge network -- an unrecognised-host or unconfigured-domain page, or a bare 403 or 404 with provider headers attached. Variable, and provider-dependent. Some edge platforms refuse to let a second account claim an alias already seen in DNS elsewhere; others accept the first claimant. Chained CNAMEs are common here -- your name to a vanity name to the edge -- and the dangling link can be any hop. Resolve the whole chain, not just the first answer.
SaaS with custom hostnames Help desks, status pages, documentation sites, careers portals, e-commerce storefronts, marketing automation. You get a tenant identifier in the vendor's namespace and CNAME a hostname to it. Cancel the subscription, or let a trial lapse, and the tenant identifier is often claimable by the next person to sign up. A vendor-specific 'help centre not found', 'store unavailable' or 'no such site' page, served from the vendor's infrastructure at your hostname. Often the worst in practice, because of where these hostnames sit. support., status., careers. and shop. are names people are trained to trust and to enter details into. These are also the records most likely to have been created by someone outside IT, and therefore the least likely to be in any decommissioning checklist.
Compute and elastic IP addresses An A or AAAA record points at a public address that was released back to the provider's pool when the instance was destroyed. There is no name to claim, but addresses in a pool can be obtained by allocating repeatedly, and somebody who wants a specific address in a specific region can often get it. Nothing listening, a service answering that is obviously unrelated to you, or a certificate for somebody else's name on your address. Real but less deterministic than a name claim. The consequence is the same if it lands: traffic to your hostname, and anything that trusts it, goes to the new occupant. There is no reclaim branch here. Do not chase the address. Delete the record -- see the decision table.
DNS delegation (dangling NS) A subdomain is delegated with NS records to a provider's nameservers, and the zone on that provider is later deleted. Whoever next creates a zone for that name on that provider, and is assigned the same nameserver set, controls the entire subtree. The delegated zone failing to answer authoritatively -- REFUSED or SERVFAIL from the delegated nameservers rather than a clean NXDOMAIN, or inconsistent answers between them. The highest. This is not one hostname, it is every name beneath it, including records the attacker invents, plus the ability to complete certificate validation for the whole subtree. Frequently missed because most tooling looks for dangling CNAMEs. Audit NS records at every level of your zones specifically.
Email-path records (SPF includes, MX, DKIM delegation) Not a web takeover at all, but the same defect. An SPF record includes a supplier's domain that has since been abandoned and re-registered; or an MX points at a decommissioned gateway; or DKIM is delegated by CNAME to a provider you no longer use. Whoever controls the referenced domain influences whether mail claiming to be from you authenticates. Include targets that no longer resolve or are newly registered; MX hosts that do not answer; DKIM selector CNAMEs with no record behind them. High and easy to underestimate, because nothing on your website looks wrong. This class was exploited at scale in the SubdoMailing campaign. Expand every SPF include recursively and check who owns each referenced domain today, not who owned it when the record was written.

Two classes deserve calling out because tooling routinely misses them. Dangling NS delegations are the most severe case on the list and the least looked for: most takeover scanners chase CNAMEs, so audit the NS records at every level of your zones as a separate exercise. And the email-path class produces nothing visible on your website at all, which is why SPF includes and DKIM delegations need expanding recursively rather than reading at face value. Both belong in the same review as your DNS and email authentication work rather than in a web scan.

Delete, reclaim or re-point? The decision tree

One question decides the branch: does anything still need to live at this hostname? Ask it before you ask anything technical, and ask somebody outside the infrastructure team, because the answer is often held by marketing, sales or whoever printed the URL on something. Then read down the table.

Remediation decision table for dangling DNS records: the situation, the action, the reasoning and what to avoid
Situation Action Why What not to do
Nothing needs to live at this hostname any more Delete the DNS record. The only remediation that removes the class of problem rather than moving it. A record that does not exist cannot dangle. This is the right answer far more often than teams expect, because most of these hostnames were created for something that ended. Do not leave it pointing somewhere 'harmless' as a compromise. Every placeholder is a future dangling record with a different owner.
The hostname is still in use and you still hold the provider account Reclaim the resource in your own account first, then decide about DNS at leisure. Recreating the container, app, tenant or alias under your own account removes the exposure immediately, because the identifier is no longer free for anybody else to take. It buys you the time to work out what still references the hostname before you touch DNS. Do not treat reclaiming as the end of the job. An occupied placeholder resource is a standing cost and will itself be deleted by somebody one day. Book the DNS decision.
The hostname is still needed but the provider relationship has ended Re-point it at infrastructure you control, serving a deliberate response, then retire the name once nothing references it. A hostname that genuinely still receives traffic -- printed on materials, embedded in an old application, sitting in a customer's bookmark -- needs to keep resolving to something you own. A 410 Gone, a plain explanatory page, or a redirect to a live equivalent are all defensible. Do not point it at a new third party just to make it resolve. You have converted a dangling record into a dependency on another namespace you do not control.
An A or AAAA record points at a released IP address Delete the record. There is no reclaim branch. You cannot reliably retrieve a specific address from a provider pool, and an address you happen to reacquire today can be released again by an automation tomorrow. Deleting the record is the only durable fix. Do not allocate addresses repeatedly hoping to recover the old one, and do not leave the record in place while you decide. This one is genuinely urgent because pools recycle quickly.
An NS delegation points at a provider zone that no longer exists Remove the delegation from the parent zone immediately, then recreate the zone properly if the subtree is still needed. The exposure covers every name beneath the delegated label, so it is the highest-severity case and the fastest to fix -- the change is in a zone you control, at the parent. Do not recreate the zone on the same provider and assume you will be assigned the same nameservers. Remove the delegation first; reinstate it deliberately afterwards.
A wildcard record is answering for names you never created Treat the wildcard as the finding. Enumerate what genuinely needs to resolve, create those records explicitly, and remove the wildcard. A wildcard hides the problem rather than causing it: names appear to resolve, so nothing looks dangling, while anything the wildcard points at is reachable under every possible label. Do not leave a wildcard in place because removing it might break something unknown. That reasoning is why it is still there.
The record sits in a zone somebody else controls Escalate with evidence and a deadline, in writing, and track it as a third-party dependency until it closes. A supplier, a parent company, an agency or a former partner holding the zone means you cannot make the change. What you can do is document the finding precisely enough that the holder cannot reasonably defer it, and record the date you raised it. Do not attempt to fix it yourself by claiming the vacant resource on their behalf. See the safe-confirmation section: good intentions are not authorisation.
Somebody is already serving content at the hostname Stop. This is an incident, not a maintenance ticket. Deleting the record is still step one, but it is not the whole job -- you now have a period during which a third party controlled a hostname on your domain, and you need to establish what was served and what trusted it. Do not delete the record and close the ticket. Capture evidence first, then work the incident. See the next section.

A note on sequencing when you are doing both. Where the hostname is still needed and you hold the account, reclaim first and change DNS second -- reclaiming is instant and removes the exposure, while working out what references a hostname takes days. Where the hostname is not needed, there is nothing to reclaim and the DNS deletion is the whole fix. And where you have decided to delete but are nervous about breaking something unknown, the honest intermediate step is to re-point at your own infrastructure serving a 410 with logging on it: you then find out within a week who was using it, from your own access logs, without leaving the name pointed at somebody else's namespace.

What if somebody has already taken it over?

Then this is an incident, and the instinct to delete the record and move on is the wrong one. Deleting it is still step one -- it stops further content being served -- but a third party controlled a hostname on your domain for a period, and the work is to establish what that cost you. In rough order:

  1. Capture evidence first, in minutes not hours. The DNS answers, the HTTP response and body, screenshots, headers, and the certificate history for the name. Once you change DNS this state is gone and you cannot recover it.
  2. Remove the record, then reclaim if you can. Delete or re-point at infrastructure you control. If the identifier is one you could hold yourself, taking it back also prevents the same party simply re-claiming it when they notice.
  3. Establish the exposure window. Work backwards: when was the resource deprovisioned, what does certificate transparency show for the name, and what do your own DNS change history and any monitoring records say. The window bounds every other question.
  4. Inventory what trusted the hostname. Cookie domain scope on the parent domain is the one that matters most -- anything scoped to the parent was readable and settable by whoever held the subdomain. Then content security policy and CORS allowlists, OAuth and SAML redirect URIs and callback allowlists, API and firewall allowlists, and SPF or other DNS references. Each one is a separate decision about whether to rotate or revoke.
  5. Assume sessions and tokens may be affected where scope allowed it. If cookies or tokens could have been read or set at the parent domain, treat rotation and forced re-authentication as the default rather than the escalation.
  6. Consider the phishing and brand consequence. Content served on your hostname may have collected credentials or payment details from your own customers or staff. That is a customer-notification and potentially a data-protection question, not only a technical one, and it needs someone who can make that call.
  7. Search for siblings before you close it. A takeover almost never arrives alone, because the process defect that produced it produced others. Audit the whole zone, including NS records and the email path, before the ticket is marked done.
  8. Write the post-incident note on the process, not the record. The useful output is not "we deleted a CNAME". It is which decommissioning step was missing, who owns DNS changes now, and what would have caught it. Otherwise you will read the same ticket next year with a different hostname.

Where the exposure is significant, treat the timeline as the deliverable. Your regulator, your insurer, your auditor and your largest customer will all ask the same three questions -- when did it start, what was served, and what trusted it -- and the answers are much easier to assemble in the first week than in the third month.

How do you verify the fix?

A DNS change that looks right in a console is not a verified fix. Caches lag, records hide in other record types, provisioning pipelines revert manual edits, and the trust the hostname was granted elsewhere outlives the record itself. Work the list.

Verification checks after remediating a dangling DNS record, how to perform each, and what passing looks like
Check How It passes when
Resolve authoritatively, not through a cache Query your zone's authoritative nameservers directly for the name and confirm the record is gone or changed as intended. Cached answers elsewhere will lag by up to the old TTL. The authoritative answer matches what you intended, for every record type at that name.
Check every record type at the name, not just the one you edited A, AAAA, CNAME, TXT, MX, NS, and anything else your zone carries. Names accumulate records from different projects and different people. No leftover record type at the name still references the decommissioned service.
Confirm the change in the source of truth, not only the console If your zones are managed as code or through a provisioning pipeline, a console edit will be reverted at the next apply. Make the change where the zone is actually defined. The committed zone definition no longer contains the record, and a dry run shows no drift.
Wait out the TTL, then re-check from several vantage points Re-resolve after the previous TTL has elapsed, from resolvers in more than one network. Long TTLs on a deleted record are a real window during which the old answer is still being handed out. Consistent answers everywhere, with no resolver still returning the old target.
Re-read the whole CNAME chain Where the record was one hop in a chain, confirm the remaining hops still resolve as expected and that you have not orphaned an intermediate vanity hostname that is now itself dangling. Every remaining hop resolves to something you own or intend.
Look for certificates issued for the name Search certificate transparency logs for the hostname. A certificate issued during the exposure window, to a name you did not request one for, is evidence that somebody completed validation while they controlled it. Every certificate covering the name is one you can account for. Anything you cannot account for turns this into an incident.
Hunt down everything that still trusts the hostname SPF includes and other DNS references; content security policy and CORS allowlists; cookie domain scope on the parent domain; OAuth and SAML redirect URIs and callback allowlists; firewall and API allowlists; hardcoded links in applications, emails and documents. Nothing grants the hostname trust it no longer needs. This is the step that converts a DNS fix into a security fix.
Re-check on a schedule, not once Put the name back through your monitoring and look again after a week and a month. Records get restored from backups, recreated by automation, and re-added by whoever needed them in the first place. Two clean checks separated by real time, with the name in continuous monitoring thereafter.

The check people skip is the second to last, and it is the one that matters most. Removing the record stops content being served; removing the trust the hostname was granted is what actually reduces risk. A hostname still sitting in a content security policy allowlist, an OAuth redirect list or an SPF include is a standing invitation for the next person who creates that name.

How do you stop the next one?

Every dangling record is the same organisational defect: DNS is managed separately from the resources it names, usually by different people, and only one of the two systems has a decommissioning step. The controls below are ordered by how much they pay back relative to effort, and the third one is nearly free.

Preventive controls for subdomain takeover, what each looks like in practice, and the failure it closes
Control What it looks like in practice The failure it closes
One authoritative DNS inventory with a named owner per record Every record in your zones has a recorded owner, a reason for existing, and ideally a review or expiry date. A record whose owner has left the business is itself a finding. The root cause of nearly every takeover: nobody knew the record existed, so nobody removed it when the thing it pointed at was removed.
DNS changes go through the same process as any other change Zones managed as code or through a reviewed pipeline, with history, peer review and the ability to see who changed what and why. Console access for emergencies, reconciled afterwards. Untracked one-off records created by whoever happened to have registrar access, which are precisely the records that outlive their purpose.
Decommissioning checklists that begin with DNS, not end with it A written teardown order: remove the DNS record first and confirm it has propagated, then delete the resource. Doing it in that order means the window in stage 3 never opens. The ordering defect that creates dangling records in the first place. This single change prevents more takeovers than any detection tool.
Supplier and agency offboarding that names DNS explicitly Contract termination checklists that list the hostnames delegated to that supplier, who removes them, and by when. Applies to marketing agencies, SaaS trials, and anyone given a subdomain. The single most common origin of SaaS-class dangling records: a relationship ended, and only the invoice was cancelled.
Domain-ownership verification wherever a platform offers it When binding a hostname to a third-party service, use the platform's verification token if it has one, and prefer platforms that require it. Keep the token record in place for as long as the binding exists. The binding half of the PaaS and CDN cases, where the attacker does not need to claim the app -- only to attach your hostname to theirs.
No wildcards without a documented reason Explicit records for the names you need. Where a wildcard is genuinely required, it is recorded as a deliberate decision with a review date and points only at infrastructure you control. Wildcards masking dangling records from your own tooling, and giving any invented label a working answer.
Recursive SPF and email-path review on a schedule Expand every SPF include, follow DKIM selector delegations, check MX targets, and confirm each referenced domain is still registered to the party you think it is. Annually at minimum. The email-path class, which no web-focused takeover scanner will find and which is invisible in day-to-day use.
Continuous external monitoring rather than a periodic audit Automated enumeration of your names, resolution of each target, and alerting on the transition from resolving-normally to resolving-at-nothing. Plus certificate transparency watching for names you did not request. The timing problem. A record is safe until the moment the resource is released, so an audit six months ago tells you nothing about today.

The ordering fix, in one sentence

Remove the DNS record, confirm it has propagated, then delete the resource. Done in that order the resource is never released while a record points at it, so the exploitable window in stage three of the lifecycle simply never opens. It costs one line in a teardown checklist and it prevents the entire class. The reason it is rare is that teardown is usually driven by whoever wants the resource gone, and DNS is not their console.

Who owns DNS changes

This is the question underneath all of it. In a business of any size DNS tends to be administered by whoever happened to register the domain, with edits made by several people over a decade, no history, and no record of why anything exists. That is the condition that produces dangling records, and it is also the condition that makes them hard to clean up safely, because nobody can say what a record is for. Getting to one authoritative zone definition, with review on changes and a named owner per record, is unglamorous work that closes more exposure than any scanner. Where DNS is held by a supplier or an agency, get a written route for change requests and a response time, because you will need both in an incident.

The names to audit first

If you are starting from nothing, start where these records concentrate. Campaign and event hostnames. Anything with a year, a product name or a season in it. Hostnames created for a supplier, an agency or a trial. Status, support, careers, docs, shop and help. Staging, test, dev, demo and uat -- see our note on forgotten subdomains and shadow IT for why these accumulate. And every NS record in every zone, because that class is both the worst and the least audited.

What should monitoring actually watch for?

Subdomain takeover is one of the few external findings where the case for continuous monitoring over periodic auditing is straightforward rather than a sales argument. The record does not change when it becomes exploitable. The change happens in somebody else's namespace, which means an audit tells you about the moment it ran and nothing about the moment that matters. Four signals are worth alerting on:

  • A known name whose target stops existing. The core signal: a hostname that resolved to a working target last cycle and now resolves to a target that does not exist, or returns an unclaimed-resource response. This is the transition from stage two to stage three, and it is the alert that matters.
  • New names appearing that nobody requested. Subdomain enumeration plus certificate transparency watching tells you when a name you do not recognise starts existing -- which is both how you find records created outside your process and how you notice somebody else obtaining a certificate for your name.
  • Changes to the answer, not just failures. A hostname whose target changes without a corresponding change request is worth a look whether or not anything is broken. Silent re-pointing is how an unmanaged record announces that somebody else is managing it.
  • The email path, on its own schedule. Recursive SPF expansion, DKIM selector resolution and MX target checks, because none of these show up in a web scan and all of them fail silently.

Whatever you use for this -- an in-house script on a cron, an open-source scanner, or a commercial platform -- the requirement is the same: it has to enumerate names you did not tell it about, resolve each target, and alert on the transition rather than mail you a full list each time. Our buyer's guide has the questions to ask about discovery and change alerting specifically, and applies to us as much as to anyone else.

Questions, answered

Something else? Email hello@surfaceloop.com and a person replies.

I have found a dangling DNS record. What should I do first?

Establish whether the hostname is still needed, because that single question decides everything else. If it is not, delete the DNS record -- that removes the problem rather than relocating it. If it is still needed and you still hold the provider account, recreate the resource in your own account first: that makes the identifier unavailable to anyone else immediately and buys you time to find out what still references the hostname. If the hostname is needed but the provider relationship has ended, re-point it at infrastructure you control serving a deliberate response, then retire the name once nothing depends on it. Dangling A records to released IP addresses and dangling NS delegations are both delete-only and both urgent.

How can I confirm a subdomain takeover without actually taking it over?

Everything you need is read-only. Resolve the full record chain from the authoritative nameservers and note where it ends. Check whether the final target resolves at all -- a target that no longer exists is a strong signal on its own. Then request the target over HTTP and read the response: unclaimed resources on most platforms return a characteristic provider-worded error saying the container, application or site does not exist. Record the timestamp, the DNS answers and the HTTP response as evidence. What you must not do is register or claim the vacated resource on a domain you do not control -- that is the exploitation step, and it is the line between an assessment and an offence.

Is it legal to test for subdomain takeover on a domain I do not own?

Passive checks -- resolving public DNS records and reading a public HTTP response -- are ordinary use of public infrastructure. Claiming the vacated resource is not, and intention does not fix it: under the Computer Misuse Act 1990 the section 1 offence turns on causing a computer to perform a function with intent to secure access you know to be unauthorised, and 'I was going to hand it back' is not an element of the defence. Claiming someone else's hostname also typically breaches the hosting provider's own terms. On your own domains you can and should claim the resource, because that is the fastest way to close the exposure. On anyone else's, report it and stop. This is general guidance, not legal advice.

How do I report a subdomain takeover I found on someone else's domain?

Look for a published route first: a security.txt file at the domain, a disclosure or bug bounty policy, or a security contact page. Failing that, a generic security mailbox, then the organisation's ordinary contact route asking to be put in touch with whoever handles security. Send the hostname, the record chain, the response you observed, the timestamp and the class of service involved -- enough for their engineer to reproduce a read-only check in a minute. Do not claim the resource to demonstrate impact, and do not set a deadline you are not prepared to justify. If the name belongs to a UK government online service and you cannot find a contact, the NCSC directs reporters to the Government Vulnerability Reporting Service; for private organisations there is no general backstop, so if the holder will not engage your realistic options are persistence and, where the exposure is being actively abused, the hosting provider's abuse route.

Which services are vulnerable to subdomain takeover?

The question is better asked by class than by brand, because provider behaviour changes and published lists go stale. The pattern appears wherever a hostname points at an identifier in a namespace shared with other customers, and that identifier can be released and re-taken: object storage containers, application slots and custom-domain bindings on app platforms, CDN distribution aliases, SaaS tenant names, released IP addresses, and deleted DNS zones behind an NS delegation. Community reference lists such as can-i-take-over-xyz are useful for fingerprints, but they are community-maintained, explicitly disclaim accuracy, and go out of date as providers change error pages and add domain-ownership verification.

How long is the exposure window?

From the moment the resource is released until the moment the DNS record is removed, and nothing about the record changes in between, which is why periodic auditing performs so badly here. The claimable-from-outside part can begin immediately on deletion depending on the provider's namespace rules. Automated scanning for dangling records and claiming what is free is a commodity activity, so treat the window as short and the discovery as likely. This is also the argument for the ordering fix in prevention: remove DNS first, then delete the resource, and the window never opens at all.

Does deleting the DNS record fix a takeover that has already happened?

It stops the bleeding; it does not close the incident. Once a third party has served content at a hostname on your domain you have to establish what was served and for how long, whether any certificate was issued for the name while they held it, and what trusted the subdomain -- cookie scope on the parent domain, content security policy and CORS allowlists, OAuth and SAML redirect URIs, API and firewall allowlists, SPF includes. Preserve evidence before you change DNS, check certificate transparency logs for the exposure window, and treat any cookie or session trust that extended to the subdomain as potentially compromised.

Can subdomain takeover affect email even when no website is involved?

Yes, and it is the variant teams miss because nothing visibly breaks. The same defect appears in the email path: an SPF record including a supplier domain that has since been abandoned and re-registered, an MX record pointing at a decommissioned gateway, or DKIM delegated by CNAME to a provider you no longer use. Whoever controls the referenced domain can influence whether mail claiming to come from you authenticates. The SubdoMailing campaign documented by Guardio Labs in February 2024 abused dangling records of both kinds across more than 8,000 domains. Expand every SPF include recursively and check who owns each referenced domain today.

Published 24 September 2026 · Last updated 24 September 2026 · Written by Nathan Hill-Haimes, co-founder of AMVIA and SurfaceLoop. The legal discussion is oriented to the Computer Misuse Act 1990, section 1 and is not legal advice: have your own testing procedures reviewed by a qualified adviser. The email-path abuse described is sourced to Guardio Labs' February 2024 SubdoMailing research. Fingerprint references are community-maintained and carry their own accuracy disclaimers; provider namespace rules and error responses change, which is why this guide describes patterns by class of service rather than naming vendors as vulnerable. This guide deliberately cites no first-party prevalence statistic for subdomain takeover, because our September 2026 research cohort covered apex domains and IP addresses rather than enumerated subdomains. This guide may be quoted with attribution to SurfaceLoop.

The hard part of this problem is timing: the record is safe until the moment somebody else deletes something. SurfaceLoop enumerates the names under your domains, resolves what each one points at, and alerts when a target stops existing -- alongside six other external risk categories. The trial runs on your own domains for 14 days without card details.

Start a free 14-day trial Read about subdomain discovery