wpsecscan v2.9.1
☰
v2.9.1 294 checks 31 aggressive (opt-in) CVE feed · up to 8 sources · nightly Sigstore-signed assets AGPL-3.0

The open-source
WordPress security scanner

Open-source. 294 checks. Runs locally. The CVE feed is aggregated nightly from up to 8 public sources (NVD, MITRE, GHSA, OSV, Wordfence, WPVulnerability, Patchstack, CIRCL); per-source counts are published in the feed header. Threat-intel enrichment through 10 integrations (feeds, exports and push targets: CISA KEV, EPSS, Exploit-DB, Metasploit, MITRE ATT&CK, STIX, MISP, OpenCTI, OTX, GreyNoise). Release assets are Sigstore-signed and carry GitHub build-provenance attestations.

Beyond scanning, the CLI has 66 subcommands including wpsecscan emit (14 export formats — SBOM, CEF, LEEF, HIPAA, FedRAMP, …), wpsecscan push (16 integrations — GitLab CI, CircleCI, Sentry, DataDog, DefectDojo, …), and wpsecscan ai (7 LLM-backed helpers — remediation, WAF rule gen, drift, …).

user@laptop ~ — wpsecscan (illustrative output)
$ wpsecscan https://example.com --format json
waf                       ok   (Cloudflare detected)
core_version              warn (6.4.2 → 6.5.5 available)
plugins                   ok   (24 enumerated)
tls_headers               fail (HSTS missing)
csp                       warn (unsafe-inline in style-src)
interactivity_api_directive_xss ok   (no reflection)
plugin_slug_squat_check   ok   (52 plugins, no author drift)
…
multisite_network_option_idor ok

┌─ Summary ────────────────────────────────────────┐
│ Critical: 0   High: 2   Medium: 5   Low: 12
│ Risk score: 42/100   Grade: B
│ Scanned in 1m 47s · Report: report.json
└──────────────────────────────────────────────────┘

$ 
294
Distinct checks
8
CVE sources configured (nightly)
12
Compliance frameworks mapped
3.10–3.13
Python versions in the CI matrix (Ubuntu + Windows)

Compliance report covers: PCI-DSS 4.0 · NIST 800-53 · ISO 27001 · ISO 27001:2022 · NIST CSF 2.0 · CIS v8 · HITRUST · CMMC 2.0 · HIPAA · SOC 2 · FedRAMP · GDPR. (PCI-DSS, NIST 800-53 and ISO 27001 are also tagged per check.)

What makes WPSecScan different

WPSecScan runs on your own machine as a CLI or .exe: no hosted service sits between you and the target, and the CVE feed is merged from several public sources rather than a single one.

// SOVEREIGNTY

Runs locally, your data stays local

A single .exe (or pip install). No SaaS. Optional analytics is opt-in, local-first, and the per-event field allowlist prevents accidental PII leaks.

// FRESHNESS

Up to 8 CVE sources, merged nightly

NVD, MITRE, GHSA, OSV, Wordfence, WPVulnerability, Patchstack and CIRCL are configured as sources and deduped into one feed. Not every source returns entries every night; per-source counts are published in the feed header on the data-feed branch.

// TRUST

Sigstore-signed assets + attestations

Release assets ship with SHA256SUMS.txt, Sigstore keyless signatures (.sig + .pem), GitHub build-provenance attestations (gh attestation verify), and a CycloneDX SBOM. Binaries are not Authenticode-signed, so a SmartScreen warning is expected.

// SCOPE

294 checks across 11 categories

Discovery & enumeration; Authentication & session; Transport & headers; File & directory exposure; Injection & client-side; SSRF / RCE / open access; GraphQL & APIs; DNS, email & infra; WordPress core, plugins & themes; Privacy, compliance & accessibility; Other. OWASP and MITRE ATT&CK on nearly every check; CWE and D3FEND on about 189 of 294.

// THREAT INTEL

10 threat-intel integrations

CISA KEV · EPSS · Exploit-DB · Metasploit · MITRE ATT&CK Navigator · STIX 2.1 · MISP · OpenCTI · AlienVault OTX · GreyNoise — with on-disk TTL cache so you're not hammering provider APIs. These are feeds, export formats (ATT&CK Navigator, STIX), push targets (MISP, OpenCTI) and a local Metasploit lookup, not ten live feeds.

// ETHICAL

Consent-gated aggressive checks

Aggressive checks run only against targets you have marked as owned — --owned, WPSECSCAN_OWNED_TARGETS, or wpsecscan owned add <host>; otherwise the scan runs passive and records why. 5 read-only proof helpers are available via --prove.

// VIGILANCE

Continuous monitoring

A continuous file-change monitor (via the companion plugin) and a new-CVE alert watcher for the components a scan detects. Further watcher modules ship in the codebase but are not yet wired to a scheduler. Scheduled scans via wpsecscan schedule install.

// MULTI-SITE & AUTOMATION

Sites registry · batch · daemon · REST API

Keep a sites list, scan a file of URLs in one run, or run --daemon CONFIG.yml on a schedule. A token-protected REST API (--api-server) with an optional target allowlist. Credential vault and marketplace actions are written to an HMAC-chained audit log.

// INTEGRATIONS

9 report formats + 14 emit formats · 16 push integrations

--format: json / html / csv / md / xlsx / sarif / burp / docx / exec-pdf, plus wpsecscan emit (SPDX SBOM, in-toto, CEF, LEEF, HIPAA map, FedRAMP, Cyber Essentials Plus, Essential 8, risk register, …). wpsecscan push to GitLab CI · CircleCI · Azure DevOps · Buildkite · Shortcut · Plane · Wiz · Sentry · DataDog · DefectDojo · chat webhooks · hosting events · automation hubs.

// AI HELPERS

7 LLM-backed helpers (BYO key)

wpsecscan ai surfaces agentic remediation, self-improving scan plan, visual-diff, prompt-injection detection, anomaly drift, control-map (HIPAA/PCI), and per-finding WAF-rule generation (Cloudflare or ModSecurity). Cheaper-model fallback under a cents budget. Disk-cached.

All 294 checks, grouped

Across 11 categories. OWASP and MITRE ATT&CK on every check; CWE and D3FEND on about 189 of 294. Most checks carry PCI-DSS 4.0, NIST 800-53 and ISO 27001 mappings.

Browse full catalog →

Don't trust us. Verify.

Release assets ship with a checksum file, Sigstore signatures, and GitHub build-provenance attestations. Three layers — pick how paranoid you want to be.

Layer 1 — SHA256

Byte-for-byte integrity.

sha256sum -c SHA256SUMS.txt

Layer 2 — Sigstore

Keyless signature, proves provenance.

cosign verify-blob wpsecscan.exe \
  --signature wpsecscan.exe.sig \
  --certificate wpsecscan.exe.pem \
  --certificate-identity-regexp \
  'github.com/bryanflowers/wpsecscan' \
  --certificate-oidc-issuer \
  https://token.actions.\
githubusercontent.com

Layer 3 — Attestation

GitHub build-provenance attestation.

gh attestation verify \
  wpsecscan.exe \
  --owner bryanflowers

→ Full guide: verify a release.

Always free. AGPLv3. No paid tier.

WPSecScan is funded by the maintainer. There's no SaaS up-sell, no premium plugin, no "enterprise" locked feature. The daemon, REST API and audit log are in the same open-source codebase as everything else. If you find value here, the best thanks is a GitHub star, a feature suggestion, or contributing a check.

Authorised use only. WPSecScan is a defensive tool. Use it only on sites you own or sites whose owner has given you written permission to test. Unauthorised scanning is illegal in most jurisdictions (US CFAA, UK CMA 1990, EU NIS). The maintainers accept no liability for misuse.