{"id":380697,"date":"2026-10-11T18:51:18","date_gmt":"2026-10-11T18:51:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/n-security\/"},"modified":"2026-10-16T02:02:49","modified_gmt":"2026-10-16T02:02:49","slug":"moatline-malware-scanner","status":"publish","type":"plugin","link":"https:\/\/ary.wordpress.org\/plugins\/moatline-malware-scanner\/","author":23580937,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.1.0","stable_tag":"1.1.0","tested":"7.1.3","requires":"5.0","requires_php":"7.0","requires_plugins":null,"header_name":"Moatline Malware Scanner","header_author":"Next Nova Technologies","header_description":"Malware scanner with WordPress.org integrity checks, file lockdown, login hardening, database cron cleaner and activity log.","assets_banners_color":"14223d","last_updated":"2026-10-16 02:02:49","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/moatline.io","header_author_uri":"https:\/\/nextnova.tech","rating":5,"author_block_rating":0,"active_installs":10,"downloads":219,"num_ratings":1,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.1":{"tag":"1.0.1","author":"n2securityio","date":"2026-10-11 18:51:07","revision":3739980},"1.0.2":{"tag":"1.0.2","author":"n2securityio","date":"2026-10-11 20:45:08","revision":3740107},"1.0.3":{"tag":"1.0.3","author":"n2securityio","date":"2026-10-14 06:08:28","revision":3745434},"1.0.5":{"tag":"1.0.5","author":"n2securityio","date":"2026-10-15 00:22:47","revision":3747378},"1.0.6":{"tag":"1.0.6","author":"n2securityio","date":"2026-10-15 07:19:47","revision":3747766},"1.1.0":{"tag":"1.1.0","author":"n2securityio","date":"2026-10-16 02:02:49","revision":3749552}},"upgrade_notice":{"1.1.0":"<p>Warns about plugins under active attack, adds weekly automatic scans, file change monitoring and WP-CLI, and detects 2026&#039;s self-healing malware (core, wp-config.php and prepend-file changes, hidden admins, database triggers).<\/p>","1.0.6":"<p>Finds and blocks PHP webshells disguised as .phtml, .php5, .php8 and similar in uploads, as used in the Bricksforge attacks.<\/p>","1.0.5":"<p>Names fake CAPTCHA loaders hidden in the database, cleaner admin screens and several fixes.<\/p>","1.0.4":"<p>Fixes the logo not showing in the admin header.<\/p>","1.0.3":"<p>New dashboard, a live home-page check for fake CAPTCHA malware, new fake-plugin detections and a database cleaner backup.<\/p>","1.0.2":"<p>Detects new fake security plugins and malware injections seen on hacked sites this month.<\/p>","1.0.1":"<p>Fixes the database cleaner and custom login URL, and adds Pause, Resume and Stop for scans.<\/p>","1.0.0":"<p>Initial release.<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":1},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3739992,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3739992,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3739992,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3739992,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3739992,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.1","1.0.2","1.0.3","1.0.5","1.0.6","1.1.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3747375,"resolution":"1","location":"assets","locale":"","width":1280,"height":860},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3747375,"resolution":"2","location":"assets","locale":"","width":1280,"height":900},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3747375,"resolution":"3","location":"assets","locale":"","width":1280,"height":791},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3747375,"resolution":"4","location":"assets","locale":"","width":1280,"height":860},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3747375,"resolution":"5","location":"assets","locale":"","width":1280,"height":900},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3747375,"resolution":"6","location":"assets","locale":"","width":1280,"height":900},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3747375,"resolution":"7","location":"assets","locale":"","width":1280,"height":589}},"screenshots":{"1":"Dashboard: security score, what was found and what to fix next.","2":"A scan in progress: 13 short steps covering files, the database and the live home page.","3":"Scan results name each threat: a fake plugin, a webshell in uploads and fake CAPTCHA loaders hidden in the database.","4":"The dashboard after cleanup: no threats and a strong security score.","5":"Lockdown: stop plugin and theme changes and block PHP in the uploads folder.","6":"Hardening: XML-RPC protection, login limits, hidden usernames and a 7-day summary of blocked attacks.","7":"Two-step login with any authenticator app, set up from your profile."}},"plugin_section":[],"plugin_tags":[31093,1229,55021,600,9217],"plugin_category":[54],"plugin_contributors":[285890,285889],"plugin_business_model":[],"class_list":["post-380697","plugin","type-plugin","status-publish","hentry","plugin_tags-hardening","plugin_tags-login-security","plugin_tags-malware-scanner","plugin_tags-security","plugin_tags-two-factor","plugin_category-security-and-spam-protection","plugin_contributors-ibrahimshah2144","plugin_contributors-nextnova","plugin_committers-n2securityio","plugin_committers-nextnova"],"banners":{"banner":"https:\/\/ps.w.org\/moatline-malware-scanner\/assets\/banner-772x250.png?rev=3739992","banner_2x":"https:\/\/ps.w.org\/moatline-malware-scanner\/assets\/banner-1544x500.png?rev=3739992","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/moatline-malware-scanner\/assets\/icon.svg?rev=3739992","icon":"https:\/\/ps.w.org\/moatline-malware-scanner\/assets\/icon.svg?rev=3739992","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/moatline-malware-scanner\/assets\/screenshot-1.png?rev=3747375","caption":"Dashboard: security score, what was found and what to fix next."},{"src":"https:\/\/ps.w.org\/moatline-malware-scanner\/assets\/screenshot-2.png?rev=3747375","caption":"A scan in progress: 13 short steps covering files, the database and the live home page."},{"src":"https:\/\/ps.w.org\/moatline-malware-scanner\/assets\/screenshot-3.png?rev=3747375","caption":"Scan results name each threat: a fake plugin, a webshell in uploads and fake CAPTCHA loaders hidden in the database."},{"src":"https:\/\/ps.w.org\/moatline-malware-scanner\/assets\/screenshot-4.png?rev=3747375","caption":"The dashboard after cleanup: no threats and a strong security score."},{"src":"https:\/\/ps.w.org\/moatline-malware-scanner\/assets\/screenshot-5.png?rev=3747375","caption":"Lockdown: stop plugin and theme changes and block PHP in the uploads folder."},{"src":"https:\/\/ps.w.org\/moatline-malware-scanner\/assets\/screenshot-6.png?rev=3747375","caption":"Hardening: XML-RPC protection, login limits, hidden usernames and a 7-day summary of blocked attacks."},{"src":"https:\/\/ps.w.org\/moatline-malware-scanner\/assets\/screenshot-7.png?rev=3747375","caption":"Two-step login with any authenticator app, set up from your profile."}],"raw_content":"<!--section=description-->\n<p>Moatline Malware Scanner is built by a team that cleans up hacked WordPress sites for a living. It looks for the techniques modern infections use to hide and come back: code injected into legitimate plugin files, fake \"verify you're human\" pop-ups (ClickFix), blockchain-hosted loaders (EtherHiding), webshells in the uploads folder and hidden reinfection tasks in the database.<\/p>\n\n<h4>Malware scanner<\/h4>\n\n<ul>\n<li>Scans plugins, mu-plugins, the active theme, drop-ins, wp-login.php and the uploads folder.<\/li>\n<li>Signature detection for known WordPress malware families, plus heuristic checks for obfuscated code and webshells.<\/li>\n<li>Finds PHP webshells in uploads, fake image files used to store stolen credentials, decoy plugins and payload files.<\/li>\n<li>Checks the database for malicious options, cron hooks, rogue administrator accounts and scripts injected into posts and pages.<\/li>\n<li>Results name the malware family that matched, so you know what you're dealing with.<\/li>\n<li>Checks WordPress core files against WordPress.org and finds files that don't belong in wp-admin and wp-includes.<\/li>\n<li>Warns you when a plugin or theme on your site is under active attack, with an email the first time it happens.<\/li>\n<li>Automatic weekly scans in the background, with an email when something is found.<\/li>\n<li>File change monitoring: reports PHP and JavaScript files that are new or changed since the last scan, even when malware backdates them.<\/li>\n<li>Find the source: when a malicious script is found, names the file or database entry that keeps adding it back.<\/li>\n<li>WP-CLI commands for scans, results and database cleanup.<\/li>\n<\/ul>\n\n<h4>Content scan<\/h4>\n\n<p>Some infections never touch a file. Attackers who get into an account, or abuse a vulnerable plugin, hide their script inside the database instead.<\/p>\n\n<ul>\n<li>Checks posts, pages, revisions, page-builder data (such as Elementor) and widgets for injected scripts.<\/li>\n<li>Detects DNS-based script loaders, blockchain-hosted loaders, heavily obfuscated JavaScript and known malware domains.<\/li>\n<li>Ordinary scripts such as analytics or form embeds are not flagged.<\/li>\n<li>Each finding links straight to the post or widget so you can remove the injected code.<\/li>\n<\/ul>\n\n<h4>Integrity check against WordPress.org<\/h4>\n\n<p>Every file in a plugin from the WordPress.org directory is compared with the official release of that exact version.<\/p>\n\n<ul>\n<li>Files identical to the official release are verified clean and skipped, which keeps false positives low.<\/li>\n<li>Files that differ are flagged as modified. That is exactly where injected malware hides.<\/li>\n<\/ul>\n\n<h4>Two-factor login<\/h4>\n\n<ul>\n<li>Works with any authenticator app: Google Authenticator, Microsoft Authenticator, Authy, 1Password and others.<\/li>\n<li>Each user scans a QR code on their profile. The QR code is drawn on your site; the secret never leaves it.<\/li>\n<li>10 single-use backup codes, and administrators can reset two-factor login for a user who lost their phone.<\/li>\n<li>Password logins over XML-RPC are refused for two-factor users, so the code screen can't be bypassed. Apps use application passwords.<\/li>\n<\/ul>\n\n<h4>XML-RPC protection<\/h4>\n\n<ul>\n<li>Three modes: allow, Jetpack-safe (only Jetpack's signed requests are accepted) or block completely.<\/li>\n<li>Refuse password logins over XML-RPC and disable <code>system.multicall<\/code>, which attackers use to try hundreds of passwords in one request.<\/li>\n<li>Jetpack is detected automatically. If it is activated while XML-RPC is blocked, the plugin switches to Jetpack-safe mode and tells you.<\/li>\n<li>Optional server rule for Apache and LiteSpeed (added to .htaccess only when you click the button, removed on deactivation). Nginx users get the rule to copy.<\/li>\n<\/ul>\n\n<h4>Login protection and access<\/h4>\n\n<ul>\n<li>Limit login attempts on the login page, XML-RPC and the REST API, with an IP allowlist.<\/li>\n<li>Hide usernames from the REST API and block <code>?author=<\/code> username scans.<\/li>\n<li>See every active login session with IP address and browser, including sessions left by deleted users.<\/li>\n<li>One-click buttons: log everyone out, force a password reset for other administrators, regenerate the security keys and salts in wp-config.php.<\/li>\n<li>Audit and revoke application passwords, or turn them off.<\/li>\n<\/ul>\n\n<p>Every option that blocks something is off until you turn it on, and each one explains what it might affect.<\/p>\n\n<h4>Live monitoring<\/h4>\n\n<ul>\n<li>Records who saves a malicious script into a post, page or Elementor data, with the user, IP address and method (dashboard, XML-RPC or REST API).<\/li>\n<li>Records logins and XML-RPC write calls such as wp.editPost, so an incident can be traced without server logs.<\/li>\n<\/ul>\n\n<h4>Lockdown<\/h4>\n\n<ul>\n<li>One-click file modification lock (<code>DISALLOW_FILE_EDIT<\/code> \/ <code>DISALLOW_FILE_MODS<\/code>) so attackers can't install or edit plugins and themes through the dashboard.<\/li>\n<li>Block PHP execution in the uploads folder (Apache rule written for you; Nginx rule provided).<\/li>\n<\/ul>\n\n<h4>Login security<\/h4>\n\n<ul>\n<li>Move the login page to a custom URL and hide wp-login.php.<\/li>\n<li>Send bots probing the default login page to a 404.<\/li>\n<\/ul>\n\n<h4>Database cron cleaner<\/h4>\n\n<ul>\n<li>Removes known malicious cron hooks and option keys that reinstall malware after a cleanup. Runs only when you click \"Clean database\", and backs up everything it removes so you can restore it.<\/li>\n<\/ul>\n\n<h4>Activity log<\/h4>\n\n<ul>\n<li>Records security-relevant events such as suspicious cron registrations, with export to JSON.<\/li>\n<\/ul>\n\n<h4>Security score<\/h4>\n\n<ul>\n<li>A dashboard score and checklist that shows what to fix next.<\/li>\n<\/ul>\n\n<h4>Pro add-on<\/h4>\n\n<p>The free plugin finds and reports threats. The <a href=\"https:\/\/moatline.io\/pro\">Pro add-on<\/a> is a separate, optional plugin for people who want them fixed automatically: one-click malware removal, restoring modified plugin files from WordPress.org, one-click fixes for core files, server settings and database triggers, AI verification of findings, blocking of malware call-home connections (including blockchain gateways), daily scans, the full vulnerability database from Wordfence Intelligence, and a white-label security report for clients. Pro is never required to use the features above.<\/p>\n\n<h4>Links<\/h4>\n\n<ul>\n<li><a href=\"https:\/\/moatline.io\">Website<\/a><\/li>\n<li><a href=\"https:\/\/moatline.io\/docs\">Documentation<\/a><\/li>\n<li><a href=\"https:\/\/moatline.io\/changelog\">Changelog<\/a><\/li>\n<li><a href=\"https:\/\/moatline.io\/security\">Report a security issue<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.org\/support\/plugin\/moatline-malware-scanner\/\">Support forum<\/a><\/li>\n<li>Email: support@moatline.io<\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to WordPress.org to verify plugin and core files, and to moatline.io for a list of plugins under attack.<\/p>\n\n<p><strong>WordPress.org plugin checksums<\/strong> (<code>https:\/\/downloads.wordpress.org\/plugin-checksums\/<\/code>)<\/p>\n\n<ul>\n<li>What it's used for: comparing the files of your installed WordPress.org plugins with the official release, so unmodified files can be marked clean and modified files can be flagged.<\/li>\n<li>What is sent: the slug and version number of each installed plugin (for example <code>contact-form-7<\/code> and <code>5.9<\/code>), when you run a scan. No personal data, site content or file contents are sent.<\/li>\n<li>Provided by WordPress.org: <a href=\"https:\/\/wordpress.org\/about\/terms-of-service\/\">Terms of Service<\/a> and <a href=\"https:\/\/wordpress.org\/about\/privacy\/\">Privacy Policy<\/a>.<\/li>\n<\/ul>\n\n<p><strong>WordPress.org core checksums<\/strong> (<code>https:\/\/api.wordpress.org\/core\/checksums\/1.0\/<\/code>)<\/p>\n\n<ul>\n<li>What it's used for: comparing your WordPress core files with the official release, so files changed by malware are found.<\/li>\n<li>What is sent: your WordPress version number and language (for example <code>6.8.3<\/code> and <code>en_US<\/code>), when you run a scan.<\/li>\n<li>Provided by WordPress.org: <a href=\"https:\/\/wordpress.org\/about\/terms-of-service\/\">Terms of Service<\/a> and <a href=\"https:\/\/wordpress.org\/about\/privacy\/\">Privacy Policy<\/a>.<\/li>\n<\/ul>\n\n<p>If your server cannot reach WordPress.org, the scan continues without the integrity check.<\/p>\n\n<p><strong>Moatline list of plugins under attack<\/strong> (<code>https:\/\/moatline.io\/feeds\/exploited.json<\/code>)<\/p>\n\n<ul>\n<li>What it's used for: warning you when a plugin or theme installed on your site has a security hole that attackers are exploiting right now.<\/li>\n<li>What is sent: nothing about your site. The whole list (a small file) is downloaded about twice a day and compared on your own site. Like any web request, it reveals your server's IP address to moatline.io.<\/li>\n<li>Provided by Next Nova Technologies, the makers of this plugin: <a href=\"https:\/\/moatline.io\/terms\">Terms of Service<\/a> and <a href=\"https:\/\/moatline.io\/privacy\">Privacy Policy<\/a>.<\/li>\n<\/ul>\n\n<p>If your server cannot reach moatline.io, the copy of the list included with the plugin is used.<\/p>\n\n<h3>Credits<\/h3>\n\n<p>QR codes for two-factor login are drawn with <a href=\"https:\/\/www.npmjs.com\/package\/qrcode-generator\">qrcode-generator<\/a> by Kazuhiko Arase (MIT licence), bundled in <code>assets\/js\/vendor\/qrcode.js<\/code>.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>In your dashboard go to Plugins \u2192 Add New and search for \"Moatline Malware Scanner\", or upload the <code>moatline-malware-scanner<\/code> folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate the plugin.<\/li>\n<li>Open Malware Scanner \u2192 Scanner and run your first scan.<\/li>\n<li>Work through the checklist on the Malware Scanner \u2192 Dashboard page (Lockdown, Login Security, Settings).<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"will%20the%20scanner%20delete%20anything%20automatically%3F\"><h3>Will the scanner delete anything automatically?<\/h3><\/dt>\n<dd><p>No. The free plugin never deletes or changes files on its own. Scans only report findings. The database cleaner runs only when you click \"Clean database\".<\/p><\/dd>\n<dt id=\"what%20happens%20when%20a%20file%20is%20flagged%3F\"><h3>What happens when a file is flagged?<\/h3><\/dt>\n<dd><p>You can review it, dismiss it, or exclude the path in Settings. Files that belong to WordPress.org plugins can be fixed by reinstalling that plugin. The Pro add-on adds one-click removal and restore.<\/p><\/dd>\n<dt id=\"i%20lost%20my%20phone%20and%20can%27t%20log%20in.%20what%20do%20i%20do%3F\"><h3>I lost my phone and can't log in. What do I do?<\/h3><\/dt>\n<dd><p>Use one of your backup codes. If you don't have them, another administrator can reset your two-factor login from your user profile. As a last resort, add <code>define( 'NNMS_DISABLE_2FA', true );<\/code> to wp-config.php, log in, and remove the line again.<\/p><\/dd>\n<dt id=\"will%20blocking%20xml-rpc%20break%20jetpack%20or%20the%20mobile%20app%3F\"><h3>Will blocking XML-RPC break Jetpack or the mobile app?<\/h3><\/dt>\n<dd><p>All XML-RPC options are off by default. If you use Jetpack, choose Jetpack-safe mode: Jetpack keeps working while password logins and multicall stay blocked. The WordPress mobile app can sign in with an application password.<\/p><\/dd>\n<dt id=\"can%20i%20use%20it%20alongside%20another%20security%20plugin%3F\"><h3>Can I use it alongside another security plugin?<\/h3><\/dt>\n<dd><p>Yes. Moatline Malware Scanner is a scanner and hardening tool, not a firewall, so it runs alongside Wordfence, Sucuri, Solid Security, All-In-One Security and Jetpack. Your firewall blocks attacks; Moatline finds what got through and how it keeps coming back. Run one malware scan at a time if your hosting has limited resources.<\/p><\/dd>\n<dt id=\"i%20set%20a%20custom%20login%20url%20and%20i%27m%20locked%20out.%20what%20do%20i%20do%3F\"><h3>I set a custom login URL and I'm locked out. What do I do?<\/h3><\/dt>\n<dd><p>Rename the <code>wp-content\/plugins\/moatline-malware-scanner<\/code> folder over FTP or your host's file manager. This disables the plugin and restores the normal login page.<\/p><\/dd>\n<dt id=\"does%20it%20work%20on%20nginx%3F\"><h3>Does it work on Nginx?<\/h3><\/dt>\n<dd><p>Yes. Everything works on Nginx. For blocking PHP in uploads, the plugin shows the Nginx rule to add to your server configuration, because Nginx doesn't read .htaccess files.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20send%20any%20data%20off%20my%20site%3F\"><h3>Does the plugin send any data off my site?<\/h3><\/dt>\n<dd><p>Only to check files against WordPress.org and to download the list of plugins under attack from moatline.io, as described under \"External services\" below. No personal data is sent and there is no tracking.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>New: warns you when an installed plugin or theme is under active attack. A short list kept by the Moatline team is checked twice a day, and you get an email the first time a plugin on your site appears on it. The dashboard shows a red warning until you update.<\/li>\n<li>New: automatic weekly scans in the background (Settings \u2192 Automatic scans), with an email when threats are found. Long scans run in short slices, so they work on any host.<\/li>\n<li>New: file change monitoring. Each scan remembers a fingerprint of every PHP and JavaScript file and reports files that are new or changed since the last scan, unless that software was updated. This catches self-healing malware that rewrites files and backdates them.<\/li>\n<li>New: \"find the source\". When the scan finds a malicious script, it also looks for the file or database entry that keeps adding it, and names it.<\/li>\n<li>New: WP-CLI commands: <code>wp moatline scan<\/code>, <code>wp moatline threats<\/code>, <code>wp moatline status<\/code> and <code>wp moatline clean-db<\/code>. <code>wp moatline scan --fail-on-threats<\/code> exits with an error for monitoring scripts.<\/li>\n<li>New: checks WordPress core files against the official checksums from WordPress.org, and finds PHP files in wp-admin and wp-includes that WordPress doesn't ship.<\/li>\n<li>New: checks wp-config.php for injected code, PHP files in the site root and directly in wp-content, and hidden PHP files whose names start with a dot.<\/li>\n<li>New: finds auto_prepend_file lines in .user.ini, php.ini and .htaccess that run a file before every page (the first stage of 2026's self-healing \"SC\" malware).<\/li>\n<li>New: scans every installed theme, not only the active one.<\/li>\n<li>New: finds administrators hidden from the Users screen, admin names matching 2026 malware patterns, registration set to give new users the Administrator role, and database triggers.<\/li>\n<li>New: finds compressed PHP code stored in the database.<\/li>\n<li>Changed: findings that must be fixed by hand (core files, wp-config.php, server settings, triggers) say exactly how, and are never offered for deletion.<\/li>\n<li>Changed: \"Clean database\" now removes every database entry the scan reports as a known malware key, and both use one list of malware cron jobs.<\/li>\n<li>Changed: fewer false alarms: plugins' own test folders and short chr() byte sequences (such as CSV byte-order marks) no longer trigger warnings.<\/li>\n<li>Changed: deleting the plugin now removes the plugin-install lock (DISALLOW_FILE_MODS) that Moatline added to wp-config.php, so the site can install and update plugins again. A lock added by you or your host is left alone.<\/li>\n<li>Fixed: the custom login address can no longer be switched on when the server can't reach it (Plain permalinks or missing rewrite rules), which could lock you out. If permalinks are later set to Plain, the normal login page is used.<\/li>\n<li>Fixed: when the live home page check can't load your site, the results now say so instead of looking clean.<\/li>\n<\/ul>\n\n<h4>1.0.6<\/h4>\n\n<ul>\n<li>Fixed: the uploads scan now finds PHP files renamed to .phtml, .php5, .php7, .php8, .pht, .phtm, .phar or .phps, and upper-case names such as .PHP. Attackers exploiting the Bricksforge file upload flaw (CVE-2026-85097) use these names.<\/li>\n<li>Fixed: the \"Block PHP in uploads\" rule now covers the same extensions and ignores letter case. Sites that already had the block turned on are upgraded automatically.<\/li>\n<li>Changed: the Nginx rule shown for manual setup covers the same extensions.<\/li>\n<\/ul>\n\n<h4>1.0.5<\/h4>\n\n<ul>\n<li>Fixed: on sites without a mu-plugins folder (most sites), the checks for fake plugins and hidden binary payload files were skipped. They now always run.<\/li>\n<li>New: database entries used by the fake CAPTCHA (ClickFix) loader that reads its address from the Polygon blockchain are named as such in scan results.<\/li>\n<li>Changed: cleaner admin screens: no emoji on buttons, a two-column scan progress list, and a red \"Threats found\" headline on the dashboard while threats remain.<\/li>\n<li>Changed: each database entry is reported once, even when several checks match it.<\/li>\n<li>Fixed: Lockdown now shows \"Locked\" when DISALLOW_FILE_MODS was added to wp-config.php by hand or by your host.<\/li>\n<li>Fixed: when the plugin folder is a symlink, the scanner now checks every plugin and still skips its own files.<\/li>\n<li>Fixed: finished scan steps no longer keep saying \"Scanning...\".<\/li>\n<li>Fixed: XML-RPC Jetpack-safe mode now also recognises WooPayments and the standalone Jetpack plugins, which use the same WordPress.com connection.<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>Fixed: the Moatline logo in the admin header did not show on some installs.<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>New: redesigned admin screens, with a header and tabs on every page and a new dashboard showing your security score, what to fix next, recent activity and the database cleaner.<\/li>\n<li>New: checks your live home page the way visitors see it, to catch fake CAPTCHA (ClickFix) scripts injected at page load.<\/li>\n<li>New: detects the \"X Global Data Flow\" \/ \"Traffic Monitor\" fake plugins and new White Label CMS loader variants, including malware that empties other security plugins' files.<\/li>\n<li>New: the database cleaner backs up everything it removes, and a \"Restore last backup\" button puts it back.<\/li>\n<li>New: warns you if Moatline's own files have been emptied by malware, instead of failing silently.<\/li>\n<li>Changed: the Documentation and Support links were removed from the Plugins screen row (they are on the plugin's own pages).<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>New: detects the fake \"WordPress Defender\", \"WordPress Security\" and \"White Label\" plugins found on hacked sites in 2026, plus plugins whose author is just \"WordPress\".<\/li>\n<li>New: flags empty plugin files left behind by host malware cleaners, which can crash a site.<\/li>\n<li>New: detects malware plugins that hide themselves from the Plugins list.<\/li>\n<li>New: signatures for the mlroweb, latoem and renotad script injections.<\/li>\n<li>New: Settings, Docs and Support links on the Plugins screen.<\/li>\n<li>Changed: links now point to the new home of the plugin, moatline.io.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Fixed: \"Clean DB Now\" stayed on \"Cleaning...\" and never finished.<\/li>\n<li>Fixed: signing in from a custom login URL sent you back to the login page.<\/li>\n<li>Changed: with a custom login URL, logged-out visitors to \/wp-login.php and \/wp-admin now see \"page not found\" instead of being sent to the new address.<\/li>\n<li>Fixed: unlocking Full Lockdown no longer turns the file editor back on if you had turned it off separately.<\/li>\n<li>New: Pause, Resume and Stop buttons while a scan is running. A paused scan can be resumed within 24 hours.<\/li>\n<li>Changed: deleting the plugin keeps settings and two-step login setups unless you choose \"Delete all plugin data\" in Settings.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Malware scanner, two-factor login, XML-RPC protection and hardening, with WordPress.org integrity checks and an activity log.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ary.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/380697","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ary.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/ary.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/ary.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=380697"}],"author":[{"embeddable":true,"href":"https:\/\/ary.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/nextnova"}],"wp:attachment":[{"href":"https:\/\/ary.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=380697"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/ary.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=380697"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/ary.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=380697"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/ary.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=380697"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/ary.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=380697"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/ary.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=380697"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}