Available on Free
Features · Detection

WordPress malware scanning that reads what's inside your files.

Guardian Gaze layers four detection methods: signature matching, file-integrity verification, heuristic analysis, and (on Pro) LLM-assisted reasoning, across every PHP file, theme, plugin, mu-plugin and database table on your site. Scans run server-side via WP-Cron, never blocking page loads.

Overview

Four detection methods, working together.

Most WordPress scanners rely on a single technique, signature matching. That works for known threats but falls apart against polymorphic malware, encoded payloads and threats that live in the database rather than on disk. Guardian Gaze runs four detection methods in parallel and cross-references findings, so a single finding can be verified against multiple signals before it surfaces in your dashboard.

Signature matching

Compares file hashes and code fragments against a maintained library of known malware patterns, web shells, dropper scripts, SEO-spam injectors, redirect malware, common backdoor patterns.

File integrity verification

Hashes every WordPress core file and compares against the official WordPress.org checksum manifest. Any byte-level deviation is flagged for review, even if the modification is benign.

Heuristic analysis

Detects suspicious code patterns common in malware: eval() on encoded input, base64_decode chains, gzinflate wrappers, dynamic include calls, and obfuscation layers, patterns that legitimate code rarely uses but malware leans on.

LLM reasoning Pro

For files that pass the first three layers but still look suspicious, our LLM-assisted scanner reads the code and reasons about intent, catching polymorphic, context-dependent and multi-stage threats that signature scanners miss.

How it works

Server-side execution. Zero blocking, zero noise.

Scans run asynchronously via WordPress cron, the heavy lifting is offloaded to our API. There's no signature database loaded on every request, no PHP worker held hostage during a scan, no impact on front-end page-load time. Benchmarked under 50ms overhead on shared hosting.

1

WP-Cron triggers the scan

The scan kicks off on schedule (daily on Free, hourly on Pro) or on demand. The first thing it does is queue a job, control returns to WordPress immediately so the site stays responsive.

2

Files are walked, hashed and inspected

The worker walks WordPress core, plugins (active and inactive), themes, mu-plugins, drop-ins, and uploads. Each file is hashed, signature-checked and heuristically scored.

3

Suspicious files escalated to LLM Pro

Files that score high on heuristics but don't match known signatures get sent to the LLM scanner for behavioural reasoning. Is this code's actual intent malicious?

4

Findings cross-referenced and ranked

File findings are cross-referenced against database findings (e.g. a suspicious file that's loaded by a wp_options row). Each issue gets a severity badge: Critical / High / Medium / Low / Info.

5

Dashboard updates, you decide

Results surface in the Guardian Gaze dashboard with plain-English explanations. Nothing is auto-deleted, review-before-action is the default. You quarantine or restore from the UI.

6

Risk Score recalculated

The A to D risk grade for your site is recomputed from the latest scan, Malware Status is one of four dimensions feeding the score, alongside Integrity, Login Security and AI-Based Security.

Threats caught

The patterns we see in actively compromised sites.

This isn't a hypothetical list, these are the specific malware categories Guardian Gaze surfaces on real customer sites, drawn from incident-response work and threat-intelligence feeds.

  • Obfuscated web shells. Base64-, ROT13-, gzinflate- and hex-encoded payloads wrapping a PHP shell. Often layered (base64 + rot13 + hex) to defeat single-pass signature scanners.
  • Trojanised plugin files. Otherwise legitimate plugin code with a malicious payload wedged into an update routine or activation hook, the code only runs at version bumps.
  • Multi-stage droppers. A stage-one file that looks innocent and downloads the real payload from an external server only when triggered.
  • Context-aware backdoors. Code that activates only when a specific cookie, user-agent or referrer header is present, invisible during ordinary scans.
  • mu-plugins backdoors. Must-use plugins live in wp-content/mu-plugins/and auto-load. A backdoor placed here survives plugin deactivation. Guardian Gaze scans mu-plugins by default.
  • Polymorphic backdoors. Code that rewrites its own structure on every infection, no two copies have the same hash, so signature scanners fail. The LLM layer catches these by intent.
  • Database-resident malware. Payloads stored in wp_options,wp_posts or transients that file scanners never see. Covered in detail on the database scanning page.
  • Hidden admin users. Accounts created post-compromise to give attackers persistent access. Cross-referenced against the wp_users table during scan.
Tier availability

What's included at each tier.

Malware scanning is part of every Guardian Gaze plan. The free tier is permanent, there's no trial expiration. Paid tiers unlock the LLM scanner, real-time monitoring, hourly cadence and database scans.

CapabilityFreeProAgency
Signature matching
File-integrity (core checksums)
Heuristic analysis
LLM-assisted reasoning
Scheduled scan cadenceDailyHourlyHourly
On-demand scans3 / dayUnlimitedUnlimited
Real-time file change monitoring
Database scanning
Bulk licence keys in one dashboard

Why server-side matters

Most WordPress security plugins (Wordfence, Solid Security, Jetpack Security) run their scanner inside the WordPress PHP process, the same process malware lives in. Once an attacker has shell access, they can disable or tamper with an in-process scanner. Guardian Gaze runs server-side, outside the PHP request lifecycle, so the scanner remains intact even after a compromise. See the full architecture breakdown on the Wordfence comparison.

Run your first scan in two minutes.

The free plugin installs from the WordPress directory, runs an initial assessment in 2 to 5 minutes, and shows you an A to D risk grade for your site. No card required.