Website Security Audit
Website Security & TLS Audit
Report IDCS-20260907-BFF20734
Report date2026-09-07
Targetvitalybook.com
Standards referencedOWASP Top 10, Mozilla Observatory header model, CVSS v3.1, CIS / NIST hardening guidance
ScopePrimary host, automated remote evaluation (no authenticated or internal access)
MethodologyRemote probes of TLS, HTTP security headers, public exposure, reputation and performance. Automated remote scanning can verify only externally observable signals; controls that require manual review are marked Not Tested rather than assumed to pass.
Prepared byCloviScan — automated audit engine

This is an automated security audit, not a penetration test or compliance certification. Findings reflect signals observable from outside the target at scan time. Absence of a finding is not proof of security.

🔐AI Security Verdict & Prioritized Next StepsHardening needed

Score 82/100 — hardening is needed. Security headers are the fastest wins; address them first.

Top 3 fixes by severity
1.
Resolved IP listed on 1 blocklist(s)
An IP listed on Spamhaus ZEN matters because ZEN is a combined DNSBL used for email filtering, so listed sending IPs can be rejected or degraded by receivers until the underlying abuse condition is fixed and the listing is cleared[1][2]. For this finding, the authoritative remediation is to identify the specific Spamhaus zone and follow Spamhaus’s own resolution steps, then request removal after correcting the root cause[1][2][4]. 1. Confirm the exact Spamhaus listing and scope using Spamhaus’s IP and Domain Reputation Checker or the IP removal flow, because ZEN is a combined list and the resolution depends on the specific sub-list and reason[1][2]. 2. Stop any mail or traffic that is causing the listing before requesting removal; Spamhaus explicitly directs you to fix the issue found in the checker and, for IP-based listings, to use the suggested resolution steps[1][4]. 3. Fix the mail-server identity and routing settings Spamhaus requires: the HELO domain must resolve to the sending IP, the sending IP must have valid reverse DNS, the reverse DNS must match the HELO domain, and forward-confirmed reverse DNS must resolve back to the sending IP[4]. 4. If the IP is shared or controlled by your hosting/provider, open an abuse/remediation ticket with that provider and ask them to correct the listing condition and submit delisting if needed; Spamhaus states that some listings require the ISP/provider to act[9]. 5. After the root cause is corrected, use Spamhaus’s removal
AI Recommended Fix · researched + cited
2.
malware_signature_advanced
Immediately take the site offline or into maintenance mode.
AI Recommended Fix · KB
3.
HTTP-alt port 8080 is internet-reachable
An internet-reachable HTTP-alt port 8080 violates the **principle of least privilege** and exposes your system to unauthorized access, exploitation of unpatched development services, and malware distribution, as this port is commonly used for HTTP proxies and development servers that often lack security controls[1][2]. ### 1. Why it Matters * **Unauthorized Access & Data Theft:** An open port provides a direct entry point for attackers to bypass firewalls, potentially leading to unauthorized access to sensitive information or system compromise[1][3]. * **Exploitation of Vulnerable Services:** Port 8080 is frequently used for **development, staging, or proxy servers** that often lack security patches, strong authentication, or web application firewalls (WAF), making them easy targets for SQL injection, XSS, and other attacks[1][2]. * **Malware & DDoS Launchpad:** If left unrestricted, attackers can exploit vulnerabilities to install malware, perform Distributed Denial of Service (DDoS) attacks, or use the server as a proxy to spread malware[1]. * **Service Discovery:** Open ports allow vulnerability scanners to identify HTTP services on non-standard ports, enabling attackers to perform reconnaissance and dictionary-style guessing to find hidden applications[6]. ### 2. Numbered Fix Steps 1. **Restrict Inbound Access via Firewall:** Configure your firewall (e.g., `iptables`, `ufw`, AWS Security Groups, or cloud firewall rules) to **block all inbound TCP traffic to por
AI Recommended Fix · researched + cited

Rankings derived from real scan findings · no LLM in this path · fix labels reflect provenance of each remediation source

2 critical/high finding(s) can be cleaned automatically
CloviShield quarantines & fixes through a gated, reversible, never-delete engine — one-time clean, $79.
Clean with CloviShield →
🔍Live Detonation AnalysisOptional

Open this URL inside a disposable, isolated browser container — it is never opened on a real machine. Captures the real rendered page, redirect chain, HTTP status, and a screenshot.

🔍 Run Live Detonation

The URL is opened only inside an isolated container with no access to our network. Container is destroyed immediately after capture.

Verify (Re-scan)Optional

Run a fresh scan right now to see what has changed since this report was generated. Shows score delta, resolved findings, and any new findings side-by-side.

Re-scan uses the same checks as the original scan. Results are cached after the verify run.

SECTION 2 · EXECUTIVE SUMMARY
82/ 100Hardening neededGrade B+
2 High2 Medium11 Low15findingsFindings by severity

Automated scanning surfaced 15 findings, including 2 of critical/high severity that should be addressed first.

17 / 21
Controls tested
2
Critical + High
83
Cert days left
🟢 Clean
Reputation
How this score was computed

Weighted 0–100 across: TLS certificate (25) · certificate validity (10) · HTTP security headers (30, weighted over HSTS, CSP, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy) · public exposure probes (20) · reputation (20) · performance (15). Controls marked Not Tested are never counted as passing.

Category Ratings
ATLSCHeadersBDNS/EmailFReputationCOverall
CHART · SECURITY POSTURE BY DOMAIN
THERP
Five-axis view of relative strength across TLS, Headers, Exposure, Reputation and Performance. Larger area is better. Axes derive from the real per-check results below.
SECTION 3 · SECURITY CONTROLS MATRIX
13 Pass4 Fail4 Not Tested

Controls marked Not Tested were not exercised by this automated remote scan and are shown for transparency — they are never counted as passing or failing.

TLS/Cert

ControlStatusSeverityOWASPSource
Valid TLS certificatePassA02 Cryptographic Failuresvia TLS probe — issuer Google Trust Services, expires 2026-11-29
Certificate long-term validityPassA02 Cryptographic Failuresvia cert expiry check — 83 days remaining
Cipher suite & TLS version gradePassA02 Cryptographic Failuresvia handshake — TLSv1.3 / TLS_AES_256_GCM_SHA384

Headers

ControlStatusSeverityOWASPSource
Strict-Transport-SecurityPassA05 Security Misconfigurationvia header probe
Content-Security-PolicyFailMediumA05 Security Misconfigurationvia header probe
X-Content-Type-OptionsPassA05 Security Misconfigurationvia header probe
X-Frame-OptionsPassA05 Security Misconfigurationvia header probe
Referrer-PolicyPassA01 Broken Access Controlvia header probe
Permissions-PolicyPassA05 Security Misconfigurationvia header probe
Cookie flags (HttpOnly / Secure / SameSite)Not TestedA05 Security Misconfigurationrequires deeper / manual review
CORS policy (ACAO with credentials)Not TestedA05 Security Misconfigurationrequires deeper / manual review

Exposure

ControlStatusSeverityOWASPSource
Public file/path exposureFailMediumA05 Security Misconfigurationvia 9 exposure probes
Mixed-content (HTTP subresources on HTTPS)PassA02 Cryptographic Failuresvia homepage HTML parse — none found
Dependency CVE / outdated component scanPassA06 Vulnerable & Outdated Componentsvia banner fingerprint — 0 component(s) identified

Reputation

ControlStatusSeverityOWASPSource
Malware / reputationPassA08 Software & Data Integrity Failuresvia safe-browsing lookup
DNS blocklist (DNSBL) reputationFailHighA08 Software & Data Integrity Failuresvia DNSBL — 1/3 listed
Sucuri blacklist checkNot TestedA08 Software & Data Integrity FailuresSucuri data not available
Malware signature scan (Sucuri)Not TestedA08 Software & Data Integrity FailuresSucuri data not available

DNS

ControlStatusSeverityOWASPSource
DNS records presentPassInfoA:2 MX:3 SPF:yes
DMARC / DKIM email-auth gradingPassA07 Identification & Authentication FailuresSPF:yes DMARC:yes DKIM:hint

Network

ControlStatusSeverityOWASPSource
Open-port surface (common ports)FailMediumA05 Security Misconfigurationexternal-vantage TCP probe to 104.21.57.221 — 3/14 open
SECTION 4 · COMPLIANCE & EXPOSURE OVERVIEW
Overall exposure riskHigh

This mapping is for reference only and is not a certification of compliance with any framework.

SECTION 4b · DOMAIN INTELLIGENCE

Registration, DNS posture, email-authentication and network-surface intelligence gathered via standard remote lookups (WHOIS, DNS, TCP connect probe). External-safe — no intrusive scanning.

Registration (WHOIS)

DNS & email authentication

DNSBL reputation: IP 104.21.57.221 — listed on 1/3 (zen.spamhaus.org).

Open-port surface (3/14 common web ports reachable)

PortServiceRiskNote
80HTTPINFOPlain HTTP open (expected if it redirects to HTTPS).
443HTTPSINFOHTTPS open (expected).
8080HTTP-altMEDIUMPort 8080 open to the internet — often exposes an admin panel or internal app server. Should not be publicly reachable.

TLS handshake: TLSv1.3 · cipher TLS_AES_256_GCM_SHA384 · 256-bit key.

SECTION 5 · SEVERITY-PRIORITIZED REMEDIATION PLAN

Fixing the top 3 issue(s) resolves the highest-severity exposure detected. Items are ordered Critical → Info.

1

malware_signature_advanced

High7.0–8.9 · A05 Security Misconfiguration · CWE-200
DetectedConfirmed fix
Where / evidence: Unusually long base64 blob (>200 chars) detected — possible payload injection
Impact: Publicly reachable resource that should not be exposed.
Why it matters: These patterns are strongly associated with compromised servers. An attacker may have placed a backdoor allowing arbitrary command execution, data theft, or further propagation.
AI Recommended Fix:
  1. Immediately take the site offline or into maintenance mode.
  2. Compare all PHP files against a known-good backup or clean CMS download.
  3. Delete any unexpected files, especially in writable directories (uploads, tmp, cache).
  4. Rotate all credentials: database, FTP/SSH, CMS admin, API keys.
  5. Scan with a server-side malware scanner (e.g. Maldet, ClamAV, Wordfence CLI).
  6. Harden file permissions: web-accessible directories must not be world-writable.
  7. Report to your hosting provider and consider engaging an incident-response service.
# bash
find /var/www -name '*.php' -newer /tmp/ref_date -ls   # find recently modified PHP
find /var/www/uploads -name '*.php' -delete              # remove PHP from uploads
Urgent
2

Resolved IP listed on 1 blocklist(s)

High7.0–8.9 · A08 Software & Data Integrity Failures · CWE-506
DetectedResearched · cited
Where / evidence: IP 104.21.57.221 listed on: zen.spamhaus.org.
Impact: A blocklisted IP harms email deliverability and may indicate prior abuse/compromise.
Why it matters: An IP listed on Spamhaus ZEN matters because ZEN is a combined DNSBL used for email filtering, so listed sending IPs can be rejected or degraded by receivers until the underlying abuse condition is fixed and the listing is cleared[1][2]. For this finding, the authoritative remediation is to identify the specific Spamhaus zone and follow Spamhaus’s own resolution steps, then request removal after correcting the root cause[1][2][4]. 1. Confirm the exact Spamhaus listing and scope using Spamhaus’s IP and Domain Reputation Checker or the IP removal flow, because ZEN is a combined list and the res
AI Recommended Fix:
  1. An IP listed on Spamhaus ZEN matters because ZEN is a combined DNSBL used for email filtering, so listed sending IPs can be rejected or degraded by receivers until the underlying abuse condition is fixed and the listing is cleared[1][2]. For this finding, the authoritative remediation is to identify the specific Spamhaus zone and follow Spamhaus’s own resolution steps, then request removal after correcting the root cause[1][2][4]. 1. Confirm the exact Spamhaus listing and scope using Spamhaus’s IP and Domain Reputation Checker or the IP removal flow, because ZEN is a combined list and the resolution depends on the specific sub-list and reason[1][2]. 2. Stop any mail or traffic that is causing the listing before requesting removal; Spamhaus explicitly directs you to fix the issue found in the checker and, for IP-based listings, to use the suggested resolution steps[1][4]. 3. Fix the mail-server identity and routing settings Spamhaus requires: the HELO domain must resolve to the sending IP, the sending IP must have valid reverse DNS, the reverse DNS must match the HELO domain, and forward-confirmed reverse DNS must resolve back to the sending IP[4]. 4. If the IP is shared or controlled by your hosting/provider, open an abuse/remediation ticket with that provider and ask them to correct the listing condition and submit delisting if needed; Spamhaus states that some listings require the ISP/provider to act[9]. 5. After the root cause is corrected, use Spamhaus’s removal
3

Content-Security-Policy header not set

Medium4.0–6.9 · A05 Security Misconfiguration · CWE-1021
DetectedConfirmed fix
Where / evidence: HEAD response for the target omitted the Content-Security-Policy response header.
Impact: No CSP means injected scripts (XSS) run without a defence-in-depth backstop.
Why it matters: CSP is a key defence-in-depth control against XSS and data injection; without it, injected scripts run freely.
AI Recommended Fix:
  1. Start with a report-only policy to measure impact, then enforce.
  2. Define explicit default-src / script-src allow-lists; avoid 'unsafe-inline'.
  3. Use nonces or hashes for any required inline scripts.
# nginx
add_header Content-Security-Policy "default-src 'self'; object-src 'none'; base-uri 'self'" always;
Involved
4

HTTP-alt port 8080 is internet-reachable

Medium4.0–6.9 · A05 Security Misconfiguration · CWE-668
DetectedResearched · cited
Where / evidence: TCP connect to public IP 104.21.57.221:8080 succeeded from an external vantage — HTTP-alt reachable from the internet.
Impact: Port 8080 open to the internet — often exposes an admin panel or internal app server. Should not be publicly reachable.
Why it matters: An internet-reachable HTTP-alt port 8080 violates the **principle of least privilege** and exposes your system to unauthorized access, exploitation of unpatched development services, and malware distribution, as this port is commonly used for HTTP proxies and development servers that often lack security controls[1][2]. ### 1. Why it Matters * **Unauthorized Access & Data Theft:** An open port provides a direct entry point for attackers to bypass firewalls, potentially leading to unauthorized access to sensitive information or system compromise[1][3]. * **Exploitation of Vulnerable Service
AI Recommended Fix:
  1. An internet-reachable HTTP-alt port 8080 violates the **principle of least privilege** and exposes your system to unauthorized access, exploitation of unpatched development services, and malware distribution, as this port is commonly used for HTTP proxies and development servers that often lack security controls[1][2]. ### 1. Why it Matters * **Unauthorized Access & Data Theft:** An open port provides a direct entry point for attackers to bypass firewalls, potentially leading to unauthorized access to sensitive information or system compromise[1][3]. * **Exploitation of Vulnerable Services:** Port 8080 is frequently used for **development, staging, or proxy servers** that often lack security patches, strong authentication, or web application firewalls (WAF), making them easy targets for SQL injection, XSS, and other attacks[1][2]. * **Malware & DDoS Launchpad:** If left unrestricted, attackers can exploit vulnerabilities to install malware, perform Distributed Denial of Service (DDoS) attacks, or use the server as a proxy to spread malware[1]. * **Service Discovery:** Open ports allow vulnerability scanners to identify HTTP services on non-standard ports, enabling attackers to perform reconnaissance and dictionary-style guessing to find hidden applications[6]. ### 2. Numbered Fix Steps 1. **Restrict Inbound Access via Firewall:** Configure your firewall (e.g., `iptables`, `ufw`, AWS Security Groups, or cloud firewall rules) to **block all inbound TCP traffic to por
5

crawl_foreign_script

Low0.1–3.9 · A05 Security Misconfiguration · CWE-200
DetectedConfirmed fix
Where / evidence: Foreign script loaded from cloviable.com on https://vitalybook.com/
Impact: Publicly reachable resource that should not be exposed.
Why it matters: Third-party script injection (Magecart, skimmers) is one of the most common ways attacker code reaches end users. Every foreign script is an unaudited dependency that runs with full page privileges.
AI Recommended Fix:
  1. Audit all third-party scripts and remove or self-host those that aren't strictly necessary.
  2. For scripts you must keep, add a Subresource Integrity (SRI) hash: integrity='sha384-...' crossorigin='anonymous'.
  3. Implement a strict Content-Security-Policy script-src allowlist that blocks unapproved origins.
  4. Monitor for new foreign scripts using regular crawl scans.
# html
<script src="https://example.com/lib.js" integrity="sha384-<hash>" crossorigin="anonymous"></script>
# csp
Content-Security-Policy: script-src 'self' https://trusted-cdn.example.com;
Moderate
6

crawl_foreign_script

Low0.1–3.9 · A05 Security Misconfiguration · CWE-200
DetectedConfirmed fix
Where / evidence: Foreign script loaded from cloviable.com on https://vitalybook.com/about
Impact: Publicly reachable resource that should not be exposed.
Why it matters: Third-party script injection (Magecart, skimmers) is one of the most common ways attacker code reaches end users. Every foreign script is an unaudited dependency that runs with full page privileges.
AI Recommended Fix:
  1. Audit all third-party scripts and remove or self-host those that aren't strictly necessary.
  2. For scripts you must keep, add a Subresource Integrity (SRI) hash: integrity='sha384-...' crossorigin='anonymous'.
  3. Implement a strict Content-Security-Policy script-src allowlist that blocks unapproved origins.
  4. Monitor for new foreign scripts using regular crawl scans.
# html
<script src="https://example.com/lib.js" integrity="sha384-<hash>" crossorigin="anonymous"></script>
# csp
Content-Security-Policy: script-src 'self' https://trusted-cdn.example.com;
Moderate
7

crawl_foreign_script

Low0.1–3.9 · A05 Security Misconfiguration · CWE-200
DetectedConfirmed fix
Where / evidence: Foreign script loaded from cloviable.com on https://vitalybook.com/authors-blog
Impact: Publicly reachable resource that should not be exposed.
Why it matters: Third-party script injection (Magecart, skimmers) is one of the most common ways attacker code reaches end users. Every foreign script is an unaudited dependency that runs with full page privileges.
AI Recommended Fix:
  1. Audit all third-party scripts and remove or self-host those that aren't strictly necessary.
  2. For scripts you must keep, add a Subresource Integrity (SRI) hash: integrity='sha384-...' crossorigin='anonymous'.
  3. Implement a strict Content-Security-Policy script-src allowlist that blocks unapproved origins.
  4. Monitor for new foreign scripts using regular crawl scans.
# html
<script src="https://example.com/lib.js" integrity="sha384-<hash>" crossorigin="anonymous"></script>
# csp
Content-Security-Policy: script-src 'self' https://trusted-cdn.example.com;
Moderate
8

crawl_foreign_script

Low0.1–3.9 · A05 Security Misconfiguration · CWE-200
DetectedConfirmed fix
Where / evidence: Foreign script loaded from cloviable.com on https://vitalybook.com/contact-author
Impact: Publicly reachable resource that should not be exposed.
Why it matters: Third-party script injection (Magecart, skimmers) is one of the most common ways attacker code reaches end users. Every foreign script is an unaudited dependency that runs with full page privileges.
AI Recommended Fix:
  1. Audit all third-party scripts and remove or self-host those that aren't strictly necessary.
  2. For scripts you must keep, add a Subresource Integrity (SRI) hash: integrity='sha384-...' crossorigin='anonymous'.
  3. Implement a strict Content-Security-Policy script-src allowlist that blocks unapproved origins.
  4. Monitor for new foreign scripts using regular crawl scans.
# html
<script src="https://example.com/lib.js" integrity="sha384-<hash>" crossorigin="anonymous"></script>
# csp
Content-Security-Policy: script-src 'self' https://trusted-cdn.example.com;
Moderate
9

crawl_foreign_script

Low0.1–3.9 · A05 Security Misconfiguration · CWE-200
DetectedConfirmed fix
Where / evidence: Foreign script loaded from cloviable.com on https://vitalybook.com/books/
Impact: Publicly reachable resource that should not be exposed.
Why it matters: Third-party script injection (Magecart, skimmers) is one of the most common ways attacker code reaches end users. Every foreign script is an unaudited dependency that runs with full page privileges.
AI Recommended Fix:
  1. Audit all third-party scripts and remove or self-host those that aren't strictly necessary.
  2. For scripts you must keep, add a Subresource Integrity (SRI) hash: integrity='sha384-...' crossorigin='anonymous'.
  3. Implement a strict Content-Security-Policy script-src allowlist that blocks unapproved origins.
  4. Monitor for new foreign scripts using regular crawl scans.
# html
<script src="https://example.com/lib.js" integrity="sha384-<hash>" crossorigin="anonymous"></script>
# csp
Content-Security-Policy: script-src 'self' https://trusted-cdn.example.com;
Moderate
10

crawl_foreign_script

Low0.1–3.9 · A05 Security Misconfiguration · CWE-200
DetectedConfirmed fix
Where / evidence: Foreign script loaded from cloviable.com on https://vitalybook.com/write-books
Impact: Publicly reachable resource that should not be exposed.
Why it matters: Third-party script injection (Magecart, skimmers) is one of the most common ways attacker code reaches end users. Every foreign script is an unaudited dependency that runs with full page privileges.
AI Recommended Fix:
  1. Audit all third-party scripts and remove or self-host those that aren't strictly necessary.
  2. For scripts you must keep, add a Subresource Integrity (SRI) hash: integrity='sha384-...' crossorigin='anonymous'.
  3. Implement a strict Content-Security-Policy script-src allowlist that blocks unapproved origins.
  4. Monitor for new foreign scripts using regular crawl scans.
# html
<script src="https://example.com/lib.js" integrity="sha384-<hash>" crossorigin="anonymous"></script>
# csp
Content-Security-Policy: script-src 'self' https://trusted-cdn.example.com;
Moderate
11

crawl_foreign_script

Low0.1–3.9 · A05 Security Misconfiguration · CWE-200
DetectedConfirmed fix
Where / evidence: Foreign script loaded from cloviable.com on https://vitalybook.com/books/green-card-gold-ring
Impact: Publicly reachable resource that should not be exposed.
Why it matters: Third-party script injection (Magecart, skimmers) is one of the most common ways attacker code reaches end users. Every foreign script is an unaudited dependency that runs with full page privileges.
AI Recommended Fix:
  1. Audit all third-party scripts and remove or self-host those that aren't strictly necessary.
  2. For scripts you must keep, add a Subresource Integrity (SRI) hash: integrity='sha384-...' crossorigin='anonymous'.
  3. Implement a strict Content-Security-Policy script-src allowlist that blocks unapproved origins.
  4. Monitor for new foreign scripts using regular crawl scans.
# html
<script src="https://example.com/lib.js" integrity="sha384-<hash>" crossorigin="anonymous"></script>
# csp
Content-Security-Policy: script-src 'self' https://trusted-cdn.example.com;
Moderate
12

crawl_foreign_script

Low0.1–3.9 · A05 Security Misconfiguration · CWE-200
DetectedConfirmed fix
Where / evidence: Foreign script loaded from cloviable.com on https://vitalybook.com/book-misadventures.html
Impact: Publicly reachable resource that should not be exposed.
Why it matters: Third-party script injection (Magecart, skimmers) is one of the most common ways attacker code reaches end users. Every foreign script is an unaudited dependency that runs with full page privileges.
AI Recommended Fix:
  1. Audit all third-party scripts and remove or self-host those that aren't strictly necessary.
  2. For scripts you must keep, add a Subresource Integrity (SRI) hash: integrity='sha384-...' crossorigin='anonymous'.
  3. Implement a strict Content-Security-Policy script-src allowlist that blocks unapproved origins.
  4. Monitor for new foreign scripts using regular crawl scans.
# html
<script src="https://example.com/lib.js" integrity="sha384-<hash>" crossorigin="anonymous"></script>
# csp
Content-Security-Policy: script-src 'self' https://trusted-cdn.example.com;
Moderate
13

dns_dmarc_weak

Low0.1–3.9 · A05 Security Misconfiguration · CWE-200
DetectedConfirmed fix
Where / evidence: DMARC policy is p=none — spoofed mail is monitored but not rejected. Upgrade to p=quarantine or p=reject to block spoofed mail
Impact: Publicly reachable resource that should not be exposed.
Why it matters: p=none provides monitoring data but no enforcement — spoofed messages from your domain still land in inboxes.
AI Recommended Fix:
  1. Review rua/ruf aggregate reports to ensure all legitimate senders pass SPF and DKIM.
  2. Escalate policy to p=quarantine, then p=reject once confident legitimate mail is covered.
# dns
_dmarc.example.com TXT "v=DMARC1; p=reject; rua=mailto:[email protected]"
Moderate
References: DMARC.org
14

dns_spf_softfail

Low0.1–3.9 · A05 Security Misconfiguration · CWE-200
DetectedResearched · cited
Where / evidence: SPF record uses ~all (softfail) — mail from unauthorized senders is accepted but tagged. Use -all (hardfail) to reject spoofed mail outright
Impact: Publicly reachable resource that should not be exposed.
Why it matters: Why it matters: `~all` is a softfail policy, which means messages from unauthorized senders are not rejected outright and may still be accepted for delivery, typically with a warning or spam marking; `-all` is the stricter hardfail policy that tells receivers to reject unauthorized mail.[1][2] 1. Audit every legitimate email sender for the domain, including mail servers, SaaS senders, and third-party services, so the SPF record authorizes all real sending sources before enforcement is tightened.[2][3] 2. Replace the terminal `~all` mechanism with `-all` in the SPF record once the authorized s
AI Recommended Fix:
  1. Why it matters: `~all` is a softfail policy, which means messages from unauthorized senders are not rejected outright and may still be accepted for delivery, typically with a warning or spam marking; `-all` is the stricter hardfail policy that tells receivers to reject unauthorized mail.[1][2] 1. Audit every legitimate email sender for the domain, including mail servers, SaaS senders, and third-party services, so the SPF record authorizes all real sending sources before enforcement is tightened.[2][3] 2. Replace the terminal `~all` mechanism with `-all` in the SPF record once the authorized sender inventory is complete, because `-all` indicates unauthorized senders are not permitted.[1][2][3] 3. Verify the updated SPF record is syntactically valid and published in DNS, then test that all legitimate mail still passes SPF after the change.[2][3] 4. If the domain is still in transition and cannot safely reject unknown senders yet, keep `~all` only temporarily; do not leave it in place once the sender set is known and stable.[1][3] Config fix snippet: ```dns v=spf1 ip4:203.0.113.10 include:_spf.example.net -all ``` Authoritative reference URLs: - https://www.cisa.gov/eviction-strategies-tool/info-countermeasures/CM0055 - https://www.cisa.gov/news-events/directives/bod-18-01-enhance-email-and-web-security
15

hsts_short_maxage

Low0.1–3.9 · A05 Security Misconfiguration · CWE-200
DetectedConfirmed fix
Where / evidence: HSTS max-age is less than 1 year (31536000s). Increase to at least 1 year for full protection.
Impact: Publicly reachable resource that should not be exposed.
Why it matters: An active network attacker can downgrade before the HTTPS redirect, intercepting cookies/credentials.
AI Recommended Fix:
  1. Serve Strict-Transport-Security: max-age=31536000; includeSubDomains on all HTTPS responses.
  2. Only enable includeSubDomains after every subdomain serves HTTPS (it is sticky).
  3. Consider adding preload and submitting to the HSTS preload list once stable.
# nginx
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
# apache
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
Quick

Manual review recommended

Remote automated scanning cannot verify the following — they require authenticated or manual testing:

Check Accessibility with CloviAble
CloviScan checks security. CloviAble checks WCAG accessibility — a legally required dimension your security score doesn't cover.
Free Accessibility Report →

Export this report

Report ID CS-20260907-BFF20734Generated 2026-09-07T00:47:34.999ZStandards: OWASP Top 10, CVSS v3.1, Mozilla Observatory modelPrepared by CloviScan