June 12, 2026
Why Your Subdomain Takeover Reports Keep Getting Closed as N/A (And How to Fix It).
Subdomain Takeover is often described as one of the easiest vulnerabilities to find in Bug Bounty programs. Even today, hunters continue to…
Omar Mahmoud
7 min read
Subdomain Takeover is often described as one of the easiest vulnerabilities to find in Bug Bounty programs. Even today, hunters continue to discover abandoned services and dangling DNS records across many organizations.
Yet despite that, a large number of Subdomain Takeover reports are closed as N/A.
Why does this happen? Is the vulnerability no longer valid, or are researchers missing something important?
In this article, we'll break down the reality of Subdomain Takeover, walk through a complete real-world workflow, and explain why finding a vulnerable subdomain is not always enough to get your report accepted.
A Few Years Ago…
A few years ago, finding a dangling CNAME was often enough to get a report accepted.
Many bug bounty programs treated abandoned third-party services as a valid security issue, because an attacker could potentially claim the resource and gain control over the affected subdomain.
As a result, Subdomain Takeover quickly became known as one of the easiest vulnerabilities to find and report.
Today, Things Are Different
Today, the situation is very different.
Most programs no longer consider a dangling DNS record alone to be sufficient evidence of a security issue. Instead, they require proof that the takeover is actually possible and that it leads to real, meaningful impact.
This is why many reports that would have been accepted years ago are now closed as N/A.
The issue is not that Subdomain Takeover is dead — it's that validation and impact requirements have become much stricter.
In other words:
Finding a dangling record is easy. Proving impact is the hard part.
So, Is Subdomain Takeover Still a Thing?
Short answer: Yes… but not in the same way.
The Classic Hunting Method
Back in the day, the process was simple.
Most hunters would start by collecting as many subdomains as possible using tools like:
subfinder -d target.com -all -silent > subs.txtsubfinder -d target.com -all -silent > subs.txtThey would also combine results from multiple sources such as:
- Certificate Transparency logs
- Passive DNS databases
- Historical URLs
After building a large list, they would scan for takeover candidates using tools like:
subzy run --targets subs.txtsubzy run --targets subs.txtor
subjack -w subs.txt -t 100 -sslsubjack -w subs.txt -t 100 -sslIf a tool flagged a vulnerable subdomain, many programs would accept the report with minimal validation compared to today's standards.
But in reality, it was never as easy as it looked in screenshots.
Personally, I've managed to find two accepted Subdomain Takeovers using this method, but both required a huge amount of manual verification. For every valid finding, there were hundreds of false positives, dead services, and unclaimable resources.
That's why I like to call Subdomain Takeover the:
"easy but exhausting" bug
The method is simple, the tools are public, and the workflow is well known — but turning it into a valid, accepted report is a different story.
So Why Doesn't This Method Work Anymore?
The main reason is simple: everyone is doing the same thing.
Tools like subfinder, subzy, and subjack are widely available, and most hunters are running them on the same targets.
As a result, the output is usually noisy and full of false positives rather than real exploitable cases.
On top of that, modern bug bounty programs are much stricter. Even if a tool flags a potential takeover, it is not enough anymore. Most cases end up being:
- Already claimed services
- Non-exploitable configurations
- Purely informational issues
That's why even correct findings often get closed as:
N/A or Informative
…unless you can clearly demonstrate real, working impact.
So How Do People Find Them Today?
If the old method is noisy, what actually works now?
The answer is simple: better data + smarter validation + deeper investigation.
Instead of relying only on basic enumeration, hunters now expand their recon process. Tools like subfinder are still useful, but their real power comes when combined with additional data sources.
Using APIs in recon tools can significantly increase subdomain discovery by pulling from more passive sources. This helps build a more complete picture of the target instead of relying on a single dataset.
But discovery is just the beginning.
Some hunters also automate basic checks to filter noise, like identifying unreachable hosts or suspicious HTTP responses (for example, 404 pages or misconfigured services).
However, these signals are not proof — they are only indicators.
This is where external intelligence tools come in. Platforms like:
- Shodan
- FOFA
- ZoomEye
…help reveal exposed services, forgotten infrastructure, and historical footprints that traditional enumeration cannot detect.
The real shift is this:
Subdomain Takeover hunting is no longer about collecting subdomains. It's about correlating data from multiple sources and validating real exploitability.
Why Most Reports End Up as N/A
Even when you find something interesting, many reports still get rejected.
The main reason is simple: incomplete proof of concept.
In modern bug bounty programs, it is not enough to show that a subdomain points to a third-party service. You must prove:
- The service is truly unclaimed
- Takeover is actually possible
- Control can be demonstrated
A common mistake is stopping at DNS resolution without verifying the full chain.
To confirm where a subdomain is pointing, you can use:
dig subdomain.target.com CNAMEdig subdomain.target.com CNAMEor
nslookup subdomain.target.comnslookup subdomain.target.comThese commands help identify the actual target service behind the subdomain.
But DNS alone is not enough. You must also verify whether the external service is:
- Still active
- Already claimed
- Or actually available for takeover
Without this step, the report is usually rejected.
That's why many findings end up as N/A — not because they are wrong, but because the PoC is incomplete.
Subdomain Takeover Difficulty Levels
Not all services behave the same. They can generally be grouped into three categories:
Easy to claim
- GitHub Pages
- Heroku (legacy apps)
- Amazon S3 (misconfigured buckets)
- Bitbucket Pages
- WordPress.com (abandoned sites)
Moderate
- Azure App Services
- AWS Elastic Beanstalk
- Firebase Hosting
- Netlify
- Fastly
Hard / Rare cases
- Cloudflare Pages
- Google Cloud Platform services
- Modern Azure protected resources
- Enterprise SaaS platforms
- Strong CDN-managed services
The same CNAME misconfiguration can look identical across all three categories — but the real exploitability depends entirely on the service behind it. Some platforms allow easy takeover when unclaimed, while others make it nearly impossible due to strict ownership protections and verification layers.
A Complete Walkthrough: From Discovery to Valid Report
Theory is useful, but nothing makes the difference clearer than walking through an actual case step by step. Let's say you're hunting on target.com and you stumble across a subdomain pointing to GitHub Pages.
Step 1 — Discover the CNAME
You run a DNS lookup on the subdomain:
dig assets.target.com CNAMEdig assets.target.com CNAMEThe output shows something like:
assets.target.com. 3600 IN CNAME oldcompany-assets.github.io.assets.target.com. 3600 IN CNAME oldcompany-assets.github.io.This tells you the subdomain is pointing to a GitHub Pages repository that may or may not still exist.
Step 2 — Check the Service State
You open the GitHub Pages URL directly in the browser:
http://oldcompany-assets.github.iohttp://oldcompany-assets.github.ioIf the page returns something like:
There isn't a GitHub Pages site here.There isn't a GitHub Pages site here.…that's your first real signal. This message means the repository behind that GitHub Pages subdomain doesn't exist (or was deleted), and the username/repo name is potentially available for registration.
This is the equivalent check across other platforms:
- Amazon S3 → visiting the bucket URL returns
NoSuchBucket - Heroku → the app URL returns
No such app - Azure/Netlify/Fastly → similar "not found" or "domain not configured" responses
If instead the page loads normally or shows an active site, takeover is most likely not possible — stop here, this is your N/A signal.
Step 3 — Verify the Resource Is Actually Claimable
This is the step most hunters skip — and it's the one that decides whether your report becomes Valid or Informative.
Just because GitHub returns "there isn't a site here" doesn't automatically mean you can claim it. You need to confirm:
- Is the exact username/organization name (
oldcompany-assets) available for registration? - Is the repository name free, or does it belong to someone else who simply unpublished the page?
- Are there any naming restrictions, reserved namespaces, or platform-level protections preventing you from registering that exact name?
For S3 buckets specifically, this step is critical: bucket names are global, so even if a bucket returns NoSuchBucket, someone else might create it before you — or the name might be reserved/blocked due to a previous deletion.
Step 4 — Demonstrate Control (The Real PoC)
This is where the report transitions from "theoretical" to "proven."
For the GitHub Pages example:
- Create a GitHub account/organization with the exact name
oldcompany-assets. - Create a repository named to match the Pages configuration (e.g.,
oldcompany-assets.github.io). - Enable GitHub Pages on that repository.
- Add a simple
index.htmlwith identifying content — for example, a harmless page that says "This subdomain was successfully claimed as part of a security assessment — [your handle/date]". - Visit
assets.target.comagain. If it now resolves to your page instead of the GitHub error message, you have full, demonstrable control over the subdomain.
A screenshot of assets.target.com displaying your custom page — with the CNAME record still pointing to the original (now-claimed) destination — is the strongest possible evidence you can attach to a report.
Step 5 — Document the Impact
A valid report isn't just "I claimed the page." You need to explain what an attacker could actually do with this access:
- Host phishing pages under a trusted company subdomain (
assets.target.com) - Steal cookies or session tokens if the subdomain shares a parent domain with authenticated areas (cookie scoping issues)
- Bypass Content Security Policy (CSP) rules that whitelist
*.target.com - Damage brand trust by serving malicious or defaced content from an official-looking domain
Final Outcome
Based on what you found at each step, your report lands in one of three buckets:
Result Meaning No control possible N/A — DNS misconfiguration exists, but the resource is unclaimable Control possible, but limited/no real impact Informative — technically claimed, but no meaningful security consequence Full takeover + demonstrated impact Valid — accepted report, often with a bounty
Key Idea
The same CNAME misconfiguration can look like a vulnerability on the surface, but the real exploitability depends entirely on the service behind it.
Some platforms allow easy takeover when unclaimed, while others make it nearly impossible due to strict ownership protections, name reservations, and verification layers.
Final Thought
Subdomain Takeover is not a dead vulnerability. It's just no longer a "quick win" bug.
Today, success depends less on tools — and more on understanding, validation, and proof.
Finding it is easy. Proving it is what makes the difference.