CBWATCH
← CBWatch

How CBWatch works

Every check reads publicly available information — nothing here logs in, guesses passwords, or probes for vulnerabilities. This page explains exactly what's checked, how the score is calculated, and where the real limitations are.

What gets checked

A scan runs nine categories of checks in parallel and combines them into a single 0–100 score. Each category has a fixed weight:

WEIGHT 20
Email authentication

SPF, DMARC, and DKIM records — whether mail claiming to be from your domain can be forged.

WEIGHT 16
TLS / SSL

Certificate validity and expiry, obsolete protocol support, whether HTTP redirects to HTTPS.

WEIGHT 16
Breach exposure

Whether common role addresses on your domain appear in known data breaches.

WEIGHT 12
HTTP headers

Security headers (HSTS, CSP, X-Frame-Options, and similar) and cookie flags.

WEIGHT 10
Exposed services

Open ports and known vulnerabilities on the server's public IP address.

WEIGHT 10
Exposed sensitive files

Whether files like .git/, .env, or database backups are directly downloadable from the webroot.

WEIGHT 8
Domain registration expiry

Whether the domain's registration is current, expiring soon, or has already lapsed.

WEIGHT 4
Software / CMS currency

Whether server software or CMS version is publicly disclosed, and whether a detected WordPress install is a major release behind current.

WEIGHT 4
security.txt

Whether the domain publishes a security contact file (RFC 9116) so researchers know how to report a vulnerability.

When a category can't be assessed (an API is down, a check times out), its weight is removed from the total and the score is rescaled across whatever did complete, so a partial scan is still comparable to a full one rather than being unfairly penalised for something outside your control.

Grading

A75–100Strong
B60–74Good, minor gaps
C45–59Needs attention
D25–44Significant gaps
F0–24Urgent action needed

Why passive only

Every check reads DNS records, the TLS certificate the server presents, HTTP response headers, and public breach records — checked by common role-based email address, not by proving domain ownership. Nothing probes for vulnerabilities, submits input, guesses credentials, or authenticates against anything. That's what makes it possible to scan any domain instantly, without needing the owner's permission first — the same boundary that separates "reading what's already public" from "testing a system," which is a meaningfully different (and more legally sensitive) activity.

A few categories involve a lookup against a third party, and it's worth being precise about what's actually sent:

Breach exposure

Checks two constructed addresses — info@ and admin@ your domain — against Have I Been Pwned's public breach database. These are guessed role addresses, not real mailboxes we've discovered; if either happens to exist and has appeared in a breach, that's what gets flagged.

Exposed services

Resolves your domain to its public IP address and checks that IP against Shodan's InternetDB, a free lookup of previously observed open ports and known vulnerabilities.

Software currency

Only when a WordPress install is detected, checks the version found against WordPress.org's own public update-check API (the same one WordPress uses to know when to prompt site owners to update) to see if it's a major release behind.

Domain registration expiry

Looks up your domain's registration record via RDAP (the modern, structured replacement for WHOIS), using a public bootstrap lookup that finds the right registry to ask — the same kind of record any registrar or WHOIS tool would return.

Everything else — email authentication, TLS, headers, exposed sensitive files, security.txt, and software/CMS version disclosure itself — is read directly from your own DNS records and web server's response, the same way any browser or mail server reading your site already does.

Known limitations

Worth understanding before treating a result as complete:

Cookie checks only see server-set cookies

Many modern sites set cookies via client-side JavaScript after page load (consent banners, analytics tools), which a single passive HTTP request can't observe.

Exposed-services data is a weekly snapshot, not live

A flagged port may have since been closed; a newly opened one may not show up yet.

Only one resolved IP is checked

A domain behind a CDN or load balancer shows that edge's open ports, not necessarily every backend server behind it.

DKIM detection is positive-only

A handful of common selector names are probed; a miss proves nothing; an uncommon selector can be correctly configured and still not show up here.

Software currency judges "behind a major release" for WordPress only

Other CMS/platforms only get checked for whether a version is disclosed at all, not whether it's current — and any site can hide the signal entirely by removing its generator meta tag.

Domain expiry depends on what the registry publishes via RDAP

A small number of TLDs or privacy-proxied registrations don't expose an expiration date at all — when that happens, this check is marked as unavailable rather than guessed at, and its weight is excluded from your score rather than counted against you.

Exposed sensitive files checks a fixed list of common paths

It confirms a real find by checking the file's contents look right (not just that the URL returns 200), but it can't discover a sensitive file at a path outside that list.

Additional reports for monitored, verified domains

Two more reports are available from the dashboard once a domain is added and its ownership verified (a DNS TXT record you publish yourself). Neither feeds into the 0–100 score above — they're separate, standalone reports.

Paid

Cyber Essentials readiness

Reframes the same findings the scan above already produces against the UK NCSC/IASME Cyber Essentials scheme's five technical control themes — Firewalls, Secure configuration, Security update management, User access control, and Malware protection — so each maps to exactly one theme. Malware protection always reads "can't assess externally," never clean or needs-attention: it's the one control that's genuinely about what's installed on individual devices, not anything a domain exposes publicly, so there's no honest external signal for it either way.

This is a readiness indicator, not a certification. Passing every control CBWatch can check from the outside isn't equivalent to actually holding Cyber Essentials or Cyber Essentials Plus, which require an independent assessor and on-device/internal-network testing no passive external scanner can replicate.

Paid

AI-agent exposure

Checks how a domain presents itself to AI crawlers and agents specifically, separate from how it presents itself to search engines:

  • robots.txt — distinguishes bulk training crawlers (which scrape content to train a model) from live, on-demand agent fetchers (triggered when someone asks their own AI assistant to look something up right now). Blocking the latter is flagged as a more customer-facing problem than opting out of training.
  • llms.txt — whether the domain publishes this newer, optional convention for guiding AI crawlers. Its absence is informational only, never a mark against the domain.
  • Web Bot Auth signal — whether the server sends the Accept-Signature response header defined by the emerging Web Bot Auth standard. Too new to penalise for absence; presence is noted as a positive signal.
  • Hidden/invisible content scan (optional, button-triggered) — the one check on this page that isn't purely a passive read of DNS/HTTP responses: it renders the domain's own page through a third-party rendering service (Browserless.io) and looks for text that's invisible to a person (zero size, zero opacity, positioned off-screen) but readable by a machine, specifically when that hidden text reads as instructions aimed at an AI agent — the prompt-injection-via-hidden-text pattern. It only runs when you click for it on a domain you've verified you own, never automatically, and is rate-limited separately from everything else on the site given it calls a metered third-party API. See the Privacy Policy for exactly what gets sent to Browserless.

The three signals above always return a result; full detail on either report (the specific findings, not just a count) requires the domain to have completed CBWatch's ownership verification first — the same "you actually control this domain" precondition both reports reasonably assume before showing what needs fixing.

This is a point-in-time, automated, passive check — not a penetration test, not a compliance audit, and not a substitute for professional security advice. See the Terms for the full disclaimer.

Read more about each check

What are SPF, DMARC, and DKIM?

Three DNS records that determine whether someone else can send email that looks like it came from your domain.

What does a TLS/SSL certificate check look at?

Certificate validity and expiry, obsolete protocol support, and whether HTTP redirects to HTTPS — and why each matters.

What are HTTP security headers?

What headers like HSTS, Content-Security-Policy, and X-Frame-Options actually do, and what a site risks without them.

How to check if your domain's been in a data breach

How breach exposure checks work — checking common role addresses like info@ and admin@ against known breaches.

What do open ports and exposed services reveal?

What an open-ports check on your server's public IP actually shows, and the limits of this kind of scan.

Is your WordPress site behind on security updates?

Why running an outdated WordPress version matters, and how to check if your site is behind a major release.

Why an exposed .git folder or .env file is a critical risk

How files like .git/, .env, and database backups end up publicly downloadable, and why it's one of the most damaging mistakes a site can make.

Why domain expiry is a bigger risk than most people realise

What happens when a domain registration lapses, why it's worse than a certificate expiring, and how to make sure it never happens by accident.

What is security.txt, and why does it matter?

A standardised file that tells security researchers exactly how to report a vulnerability — and how CBWatch can generate one for you.