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, …).
$ 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
└──────────────────────────────────────────────────┘
$ 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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Discovery & enumeration
28waf · core_version · plugins · themes…
Authentication & session
32login · login_throttle · csrf_nonce · app_passwords…
Transport & headers
33tls_headers · csp · cookies · http_methods…
File & directory exposure
32exposed_files · directory_listing · debug_leaks · robots_sitemap…
Injection & client-side
24xss_dom_sinks · crlf_location_injection · sqli · xss_reflected…
SSRF / RCE / open access
23woocommerce_storefront · open_redirect · ssrf · file_upload…
GraphQL & APIs
27wpgraphql · webhooks · xmlrpc_deep · websocket_audit…
DNS, email & infra
20dns_security · abuseipdb_lookup · s3_bucket_discovery · cloudflare_origin_leak…
WordPress core, plugins & themes
47multisite · redirect_chain · error_pages · wp_engine_misconfig…
Privacy, compliance & accessibility
16gdpr_dsr · a11y_lite · sitemap_cve_probe · gtm_inventory…
Other
12js_libraries · js_supply_chain · waf_lockout_guard · php_eol…
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.