What we check
Every check we run, what it looks for, and how serious it usually is. Severities shown are the automated starting point; Claude adjusts them to your site.
HTTPS and certificates
- Site served over plain HTTP high
- Everything visitors send, including passwords, travels unencrypted.
- HTTP doesn't redirect to HTTPS medium
- Visitors who type your domain without https:// stay on the insecure version.
- Untrusted, expired or soon-to-expire certificate critical high medium
- Browsers show a full-page warning for expired or untrusted certificates. We warn you 14 days before expiry.
- Outdated TLS version medium
- TLS 1.0 and 1.1 have known weaknesses and are disabled by modern browsers.
Security headers
- Missing Strict-Transport-Security (HSTS) medium
- Without it, a visitor's first request can be downgraded to HTTP. We also flag a max-age under six months.
- Missing or weak Content-Security-Policy medium
- CSP is the main browser defence against cross-site scripting. Policies that allow
'unsafe-inline','unsafe-eval'or wildcard script sources are flagged as weak. - Pages can be framed medium
- No
X-Frame-Optionsor CSPframe-ancestors, so another site can embed yours and trick visitors into clicking (clickjacking). - Missing nosniff, Referrer-Policy or Permissions-Policy low info
- Smaller hardening headers that close off content-type confusion, leaky referrers and unused browser features.
- Server version disclosed low
- Headers like
Server: Apache/2.4.29orX-Powered-Bytell attackers exactly which known vulnerabilities to try.
Cookies
- Session cookie missing Secure or HttpOnly medium
- Without
Securethe cookie can leak over HTTP; withoutHttpOnlyany injected script can steal it. Cookies whose names look like sessions or auth tokens are rated higher. - Missing SameSite low
- SameSite limits when the browser sends the cookie on cross-site requests, which blunts CSRF.
Forms and content
- Password form on an HTTP page, or posting to HTTP high
- Credentials are sent unencrypted.
- Password form submitted with GET medium
- The password ends up in the URL, and from there in logs, history and analytics.
- POST form without a visible CSRF token low
- A heuristic: the server may protect the form another way, so Claude usually marks this for a manual check.
- Mixed content high low
- An HTTPS page loading scripts or styles over HTTP (high) or images and media over HTTP (low).
- Directory listing enabled medium
- An "Index of /" page that lists files on the server.
- Revealing HTML comments or generator tags low info
- Comments mentioning passwords, keys, TODOs or internal details, and meta tags announcing your CMS version.
Compromised and outdated packages
We identify npm packages from CDN URLs such as unpkg, jsDelivr and cdnjs, version banners in downloaded and inline scripts, and exact framework metadata. Supported Drupal core versions are identified from generator metadata. We query OSV for the exact versions during each scan and retrieve advisory identifiers, CVE aliases, publication dates, source links and published fix versions.
Detection also inspects third-party scripts and styles, follows literal module imports and linked source maps, and reads exact package metadata embedded in bundles or source maps. This can identify dependencies hidden behind hashed asset names. We do not execute the site's JavaScript or treat a filename hash or an unversioned module name as an installed version.
- Known-malicious package version critical
- The version your site loads has been reported as hijacked or backdoored, for example in the OpenSSF malicious-packages database or a GitHub malware advisory.
- Package with known vulnerabilities high medium
- The detected version matches a published advisory. Fixed versions are shown when the source provides them; some issues have no published fix. Matches indicate potential exposure, not proof of exploitation.
- Indicators from recent incidents critical
- Domains and code patterns from recent supply-chain attacks, found anywhere in your pages or scripts. See the supply-chain watch for the current list and when it was last updated.
- CDN scripts without Subresource Integrity low
- Without an
integrityhash, a compromised CDN could serve you different code without you noticing.
Missing versions and incomplete lookups are coverage gaps. WordPress components are listed for manual verification because comprehensive live advisory matching is not available for them here. Server-only, build and CI dependencies need a dependency scanner in your codebase.
Leaked secrets
- Secret keys in page source or JavaScript critical high
- Private keys, Stripe live secret keys, AWS access keys, GitHub, Slack and AI-provider tokens, and hard-coded passwords. Values are masked in the report.
- Google API keys low
- Often meant to be public; we remind you to restrict them by referrer and API.
Exposed files
We request each of these paths once and only report it if the response really looks like that file.
- Source control and environment files critical
/.git/HEAD,/.git/config,/.env: enough to rebuild your source code or read your secrets.- Database dumps and config backups critical high
/backup.sql,/dump.sql,/wp-config.php.bak,/config.php.bak,/.htpasswd.- Diagnostic pages high medium
/phpinfo.php,/info.php, Apache/server-status, Spring Boot/actuatorand/actuator/env.- Other low info
/.DS_Store, permissive/crossdomain.xml, publicswagger.json/openapi.json, sensitive paths listed inrobots.txt, and a missing/.well-known/security.txt.
CORS, methods and errors
- CORS reflects any origin high medium
- Your server echoes back whatever site asks. With credentials allowed, any website can read your users' logged-in data.
- Verbose error pages medium
- Stack traces and database errors from Python, Java, .NET, PHP, Node.js and common frameworks.
- Risky HTTP methods advertised low
PUT,DELETE,PATCHorTRACElisted as allowed on your home page.