=== Aardwolf Security Scanner === Contributors: aardwolfsec Tags: security, hardening, penetration testing, scanner, vulnerability Requires at least: 5.6 Tested up to: 7.0 Requires PHP: 7.2 Stable tag: 1.2.5 License: GPLv2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html Scan your WordPress site for the common attack vectors a penetration tester would probe, and get plain-English configuration fixes. == Description == **Aardwolf Security Scanner** runs a battery of passive, read-only checks against your own WordPress site — the same low-hanging fruit a penetration tester looks for first — and gives you a prioritised, plain-English list of what to fix and how. It does **not** attack your server, exploit anything, or send any data off-site. Every check runs locally on your own install. = What it checks = * **Software updates** — outdated WordPress core, plugins and themes, plus dormant/inactive extensions that widen your attack surface. * **Accounts & authentication** — the default `admin` username, username enumeration via author archives and the REST API, insecure registration defaults, and missing login brute-force protection. * **Configuration hardening** — the dashboard file editor, exposed debug output, missing/placeholder security keys and salts, the default `wp_` table prefix, and forcing HTTPS on the admin area. * **Information exposure** — a reachable XML-RPC endpoint, the version-leaking `readme.html`, the generator meta tag, directory browsing, and sensitive files (debug logs, `.git`, `.env`, config backups) left in the web root. * **HTTP security headers** — missing `X-Frame-Options`, `X-Content-Type-Options`, `Referrer-Policy`, `Content-Security-Policy` and HSTS. * **Transport & environment** — sites still on plain HTTP and end-of-life PHP versions. * **File permissions** — world-readable/writable `wp-config.php` and root directory. * **Known vulnerabilities** — installed plugins that have been removed from the WordPress.org directory (often a sign a plugin was pulled for an unresolved security issue). Each finding comes with a severity rating and a specific, actionable remediation. = Scheduled scans & email alerts = Run scans automatically in the background (daily or weekly via WP-Cron) and get an email when your security posture regresses — the score drops, problems increase, or a high-risk issue appears. You can also choose to be emailed after every scheduled scan. = Export reports = Export the latest scan as a **CSV** file, or open a clean, print-styled **PDF report** that you can save or share (uses your browser's "Save as PDF"). = About Aardwolf Security = This plugin is provided by [Aardwolf Security](https://aardwolfsecurity.com/). Automated checks are a great first line of defence, but they are not a substitute for a manual penetration test by a qualified assessor. == External services == This plugin connects to one external service, the official **WordPress.org Plugin API** (`https://api.wordpress.org/plugins/info/1.0/`). * **What it is used for:** the "Known Vulnerabilities" check queries this API to find out whether any of your installed plugins have been removed/closed on the WordPress.org directory (which often indicates a plugin was pulled for an unresolved security issue). * **What data is sent, and when:** the directory *slug* of each installed plugin (e.g. `akismet`) is sent when a scan runs. No personal data, site content, or credentials are transmitted. Responses are cached for 24 hours to minimise requests. * **Terms & privacy:** this is a WordPress.org service, governed by the [WordPress.org Terms](https://wordpress.org/about/) and [Privacy Policy](https://wordpress.org/about/privacy/). The plugin also makes loopback HTTP requests to *your own site* (its own URL) to inspect response headers and check for publicly exposed files. These stay on your own server and are not sent to any third party. == Installation == 1. Upload the `aardwolf-security-scanner` folder to `/wp-content/plugins/`, or install the ZIP via Plugins → Add New → Upload Plugin. 2. Activate the plugin through the Plugins screen. 3. Go to **Security Scanner** in the admin menu and click **Run Security Scan**. == Frequently Asked Questions == = Is it safe to run on a production site? = Yes. All checks are passive and read-only. The plugin makes a few loopback HTTP requests to your own site to inspect headers and exposed files, which is harmless. Always keep a current backup before changing configuration, as a matter of good practice. = Does it fix things automatically? = No. The scanner reports findings and gives you clear, specific remediation steps for each one, but the changes themselves (editing `wp-config.php`, permissions, web-server rules, settings) are yours to make. = Why does a check say "could not complete"? = Some checks make a loopback request to your own site. If your host blocks loopback connections, those checks are skipped rather than failed. The result will explain what to verify manually. == Changelog == = 1.2.5 = * Printable report stylesheet is now registered and enqueued via wp_enqueue_style()/wp_print_styles() instead of a hard-coded tag. = 1.2.4 = * Moved the printable report's CSS to a bundled stylesheet (no inline