
WordPress Malware Scanner & Malware Removal
DevDome Malware Scanner is a WordPress malware scanner for detecting malware, backdoors, malicious code, infected files and reinfection risks. Scan WordPress files and database content, quarantine threats, and safely repair trusted files from the dashboard.
It combines malware signatures, file integrity checks, code analysis and WordPress-specific security checks to find modified core files, suspicious PHP, database injections, hidden backdoors, rogue administrators, malicious cron jobs and other persistence mechanisms.
It does not only find infected files. It also looks for the things that bring the malware back after a cleanup, and it keeps uncertain findings separate from confirmed threats.
What It Finds
- Malware and malicious code
- Backdoors and web shells
- Modified WordPress core files
- Modified plugin and theme files
- Suspicious PHP files in uploads
- Database injections and hidden spam
- Rogue administrator accounts
- Malicious WP-Cron tasks
- Must-use plugins and drop-ins
- Configuration file changes (wp-config.php, .htaccess, .user.ini)
- Files that may reinfect the site after cleanup
Scan Files and Database
The malware scan covers WordPress core, every plugin and theme, the uploads folder, must-use plugins, drop-ins and the configuration files. The database scan looks for script and iframe injections, encoded payloads, SEO spam and hidden links across options, posts, revisions and meta. Administrator accounts are read from the capability values in usermeta, not just role labels, and every WP-Cron event is checked for tasks that can re-download a payload.
Every finding says what changed, why it is suspicious, how confident the scanner is, and what to do about it. Every row expands to a detail panel with the facts behind the decision: file size, modified time, plugin and hash for a file; username, email, role and registered date for an account; hook and next run for a scheduled task; the post or option for database content. For a modified core or plugin file, View what changed shows the lines that differ from the official copy.
Find Backdoors and Reinfection Risks
Removing infected files alone does not clean a site that keeps a rogue admin, a cron beacon or a planted must-use plugin behind. These are tracked on their own Reinfection risks tab with a Neutralize action: an unknown administrator loses its admin rights (the account stays and can be restored under Users), a planted must-use plugin or drop-in moves to quarantine, a suspicious scheduled task is removed. The tab also lists every must-use plugin and drop-in present on the site. A neutralized threat that comes back is reported again as reappeared.
Safe Malware Cleanup
One click fix closes every back door the plugin can fix safely and reversibly: known malware, executables hidden in uploads, unexpected files in core and high-confidence malicious code are moved to quarantine; modified core and WordPress.org plugin files are repaired by reinstalling the whole package from WordPress.org, with every file that reinstall would change copied to quarantine first. The scan then runs again so the clean verdict is verified, not assumed.
A quarantined file is removed from disk and its contents are kept as a compressed, non-executable copy in the plugin’s own database table, together with the original path, SHA-256, size and permissions. Nothing executable is ever written anywhere on disk. It can be restored at any time from the Quarantine tab, and the restored file is verified against the recorded hash. Deleting a quarantined file permanently is a separate, explicit action.
Threats that need a human stay under Needs your decision with a plain explanation and a link to the right place: theme files (replacing them changes your design), injected database content, new administrator accounts, suspicious cron tasks, configuration files, software with a known security hole. Files WordPress cannot boot without are never moved by the plugin.
File Integrity Checking
WordPress core files are verified against the official checksums from WordPress.org, including unknown files inside wp-admin and wp-includes. WordPress.org plugins are checked against their official checksums, and WordPress.org themes against the official zip of the installed version: modified, missing and foreign files. Premium and custom plugins and themes are checked against a baseline, with a file change timeline from the second scan on.
A modified core or WordPress.org plugin file is repaired by WordPress itself: the WordPress updater reinstalls the same installed version of the whole package (all of WordPress core, or the whole plugin) from WordPress.org, and the result is verified against the official checksum. Because a reinstall touches more than one file, the flagged file is moved to quarantine and every other file the reinstall would overwrite or delete (a file that differs from the official copy, an extra file in the plugin folder) is copied to quarantine first; each can be restored over the official copy from the Quarantine tab. The plugin never writes into core, plugin or theme folders and never edits files surgically; a failed reinstall puts the original back.
Severity and Confidence Are Separate
Severity is how bad a finding would be (Critical, High, Medium, Low, Info). Confidence is how likely it is malicious. A known-signature match has 100% confidence; a high-entropy blob on its own is only a contributing signal and is never called malware by itself. Low and Info rows are notes, not threats, and never trigger an alert. The Overview shows a protection ring that reflects the worst open finding, the verdict in plain words and how many threats can be fixed with one click. Areas the scan could not fully verify (excluded paths, oversized files, an unreachable checksum source) are listed as coverage gaps and never assumed clean.
Scheduled Malware Scans
Daily or weekly scans run around 02:00 site time. Scans run in short time-boxed batches (8 seconds by default, adjustable) driven by the open admin page, with a WP-Cron fallback that keeps a scan going after you close the tab. Scans can be paused, resumed and cancelled. One engine failing does not destroy the scan: the failed stage is recorded as a coverage gap and the scan moves on.
Works Without a DevDome Account
The local scan is complete without an account: integrity checks, code analysis, uploads, configuration, users, cron, database and persistence engines all run on your server. Nothing is sent to DevDome before you connect. A site that never connected runs on its built-in heuristics and says so in the coverage notes.
Optional DevDome Account
Connecting a free DevDome account adds:
- The known-malware signature set: 90,000+ signatures from the Linux Malware Detect project, curated and served by DevDome. Byte-pattern signatures are stored on this site; the hash signatures stay on DevDome’s servers, and the SHA-256 and MD5 hashes of every scanned file are checked against them during each scan. Only hashes are sent, never file contents.
- Security status for all your sites in one DevDome dashboard, and an email to your account address when a scan finds critical or high threats, at most once per scan. Clean scans and low-severity findings send nothing.
- Enhanced analysis (separate opt-in): short suspicious code fragments and a file-path hint are sent for a second opinion. The plugin attempts to redact common credential and secret patterns before transmission; no redactor can guarantee that every secret format is removed.
Not connected: the file hash check and signature updates stop. Byte-pattern signatures already downloaded to this site keep matching after a disconnect.
Advanced Detection Details
- PHP code is analysed with token-based static analysis: behavior chains such as request input to execution, decode to execution and remote download to disk write, not keyword matching.
- Obfuscation: encoded blobs, entropy, chr() chains, hex escapes, nested decoders.
- Uploads: executable files, disguised media (photo.jpg containing PHP), extension and content mismatches.
- Configuration files: auto-prepend directives, cloaking redirects, PHP handlers in uploads.
- Known-malware signatures: byte patterns matched on this site and file hashes checked through your DevDome account.
- Optionally, installed plugin, theme and WordPress versions against the WPVulnerability database, plus plugins closed on WordPress.org for a security issue.
- Every finding carries human-readable evidence: the signals that fired, the line, a short snippet with secrets removed. A file is reported as quarantined only after its database record is written; if the record fails, the file is put back.
Simple and Advanced Views
The Simple view shows the verdict, the one-click cleanup and Settings. The Advanced view adds Threats with severity filters, search and bulk actions (Quarantine, Replace with official file, Trust this exact content, Ignore, False positive, Reopen), File Changes (last 90 days), Reinfection risks (Neutralize), Quarantine (Restore, Delete permanently, Remove from list) and Scan History.
Multisite
On a network the scanner is a network administrator tool, because integrity checks, quarantine and repair touch shared core and plugin files. Each site keeps its own scan data; network deactivation clears scheduled scans on every site.
AI and Agent Support
On WordPress 6.9 and newer, DevDome Malware Scanner registers WordPress Abilities covering the whole plugin: the security verdict with the fix plan, findings with every filter, finding details with evidence, the diff against the official copy, scan start, pause, resume, cancel, progress and history, One click fix, every per-finding action (quarantine, repair, trust, false positive, ignore, acknowledge, reopen, neutralize a rogue administrator, cron task or planted file), restore, delete or forget quarantined copies, the file change and event logs, settings (read and update), the simple or advanced view and the signature download. Compatible AI agents and MCP clients can discover and use these abilities when the site exposes them, for example through the official WordPress MCP Adapter. Every ability runs the same code as the plugin screens under the same administrator capability; a finding action is refused unless it is one the screen offers for that finding, and One click fix, quarantine, repair, neutralize, restore and permanent deletion require an explicit confirm flag from the agent.
External services
The plugin talks to the following services:
-
WordPress.org APIs (api.wordpress.org, downloads.wordpress.org, core.svn.wordpress.org, plugins.svn.wordpress.org): used to fetch official core and plugin checksums, plugin directory status (whether an installed plugin was closed for a security issue), the official zip of each installed WordPress.org theme (downloaded during a scan to verify the theme’s files) and, on explicit repair or comparison actions, official file copies. Only your WordPress version, locale, plugin and theme slugs and their versions are sent. Terms: https://wordpress.org/about/privacy/ Privacy: https://wordpress.org/about/privacy/
-
DevDome Security API (analytics.devdome.com), only on a site connected to a DevDome account: (a) during each scan, the SHA-256 and MD5 hashes of every scanned file are checked against the DevDome database of 90,000+ known-malware signatures (hashes only, never file contents); (b) after every scan a summary (severity counts, the type, title, path and status of the top findings, the site’s wp-admin URL for the email button, the signature-set version and the plugin version) is sent so your DevDome dashboard shows the site’s security status and your account address gets an email when critical or high threats are found; (c) the byte-pattern signature set is delivered and updated through the account and stored on this site; the hash signatures stay on DevDome’s servers and are only ever queried by hash; (d) with the separate “Enhanced analysis” opt-in, short suspicious code fragments and a file-path hint are sent for a second opinion; the plugin attempts to redact common credential and secret patterns before transmission, but no redactor can guarantee that every secret format is removed. Authentication is the site token the DevDome Dashboard provisioned on connect. Nothing is sent before you connect. Terms: https://devdome.com/terms-of-service Privacy: https://devdome.com/privacy-policy
-
WPVulnerability API (www.wpvulnerability.net), only when you switch on the vulnerability check in Settings (off by default): during a scan, the slugs and versions of your installed plugins, themes and WordPress core are checked against this free public vulnerability database (EUPL v1.2). Only slugs and version numbers are sent. Terms: https://www.robotstxt.es/legal/ Privacy: https://www.wpvulnerability.com/privacy/
Signature data source (not a service the plugin contacts): the signature set is the Linux Malware Detect database (GPLv2, rfxn.com project), imported and served by DevDome; the plugin never contacts rfxn.com. Project page: https://www.rfxn.com/projects/linux-malware-detect/ License (GPLv2): https://www.gnu.org/licenses/old-licenses/gpl-2.0.html
-
Plugin catalog (devdome.com): the DevDome Dashboard inside wp-admin fetches the list of DevDome plugins (names, descriptions, logos, links, WordPress.org slugs) from
https://devdome.com/wp-plugins/catalog.jsonat most once every 12 hours, and only after you have connected the site to a DevDome account; a site that is not connected never contacts devdome.com for it. Only the bundled core version is sent in the request; no site or visitor data. Terms: https://devdome.com/terms-of-service Privacy: https://devdome.com/privacy-policy -
Connecting a DevDome account (optional): the DevDome Dashboard offers connecting a free DevDome account. Nothing is sent until you press the Connect button. If you do connect, the shared library sends your site address, a generated site ID and a generated secret site token to
analytics.devdome.com/api/plugin/connect/startand/api/plugin/connect/claimto link this site to your account; afterwards it confirms the connection withapi.devdome.com/plugin/accountat most once every fifteen minutes while you use the dashboard (once an hour after a refusal), and tellsapi.devdome.com/plugin/disconnectwhen you disconnect. Terms: https://devdome.com/terms-of-service Privacy: https://devdome.com/privacy-policy -
Detection telemetry (analytics.devdome.com), only when you tick “Help improve detection” in Settings (off by default) and only on a site that is NOT connected to a DevDome account (a connected site’s scan report, item 2, already carries the same list): after each completed scan the plugin sends the severity, type, title and site-relative path of each open finding of medium severity or higher, the scan number, and the plugin and signature versions, under an anonymous site id (a hash; your site address is never sent). Never file contents, e-mail addresses or absolute server paths. DevDome keeps these lists to tell files flagged on many unrelated sites (allowlist rules) from the same unknown file spreading across sites (new signatures), both delivered through the daily signature update. Terms: https://devdome.com/terms-of-service Privacy: https://devdome.com/privacy-policy
-
Scanner reports (devdome.com), only when you click “Report false alarm to DevDome” in the Actions menu of a finding list or “Send scan report to DevDome” on the Overview. The dialog shows the exact text before you send it: your site address, the plugin, WordPress and PHP versions, the signature version, and for each finding its severity, type, title, site-relative path, status, file hash, the plugin it belongs to and the stored evidence lines (secrets redacted, absolute paths removed), plus the note and reply e-mail you type (both optional). Never file contents. The report goes to DevDome support, who use it to fix false alarms and improve detection in the daily signature update. Terms: https://devdome.com/terms-of-service Privacy: https://devdome.com/privacy-policy
-
Error reports (devdome.com), only when you press “Report this error” on an error message: the plugin sends the error text, the plugin, WordPress and PHP versions, the screen you were on, the last 20 scanner log lines with secrets removed, your site address and your admin e-mail (so support can reply) to
https://devdome.com/api/plugin/error-report. Nothing is sent unless you press the button. Terms: https://devdome.com/terms-of-service Privacy: …
Screenshots

Malware Scan Overview: threat status, severity counts and safe cleanup actions.

Malware and Backdoor Findings: review suspicious files, malicious code and the evidence behind each finding.

File Changes: track created, modified, quarantined and repaired WordPress files over time.

Reinfection Risks: find rogue admins, malicious cron jobs, must-use plugins and drop-ins.

Malware Quarantine: safely quarantine suspicious files and restore them when needed.

Scan History: review previous malware scans and detected threats.

Settings: optional DevDome account features, vulnerability check, scan limits and excluded paths.