Securonix named this attack TRUST#GRAFT. Nothing it does is a WordPress bug: every request is a normal WordPress action. That is why it works, and why one setting stops it.
What happens
- A fake check covers the page. A script on the page shows a full-screen frame dressed up as Cloudflare’s “verify you are human” screen. If you click it, it can put text on your clipboard (the trick behind “paste this command” scams), and it reads tokens the site keeps in your browser.
- It looks for an administrator session. If the person viewing the page is signed in to WordPress as an administrator, the script quietly opens the plugin upload page in the background and reads the security token WordPress puts there.
- It uploads a plugin as you. It downloads a file called
wm.zip, uploads it through the normal Plugins → Add New → Upload form, and activates it. To WordPress, it looks like you did it. - The backdoor settles in. The plugin calls itself Web Media Optimizer (version 2.1). It hides from the Plugins screen, adds a remote script to your pages, and copies itself to
wp-content/mu-plugins/wmedia-recovery.phpso it survives if the plugin folder is deleted. - The attacker can sign in at will. A secret address signs anyone who knows it in as your first administrator, and another one changes the script your visitors get.
Why passwords and two-factor login don’t stop it
Strong passwords and two-factor login protect the moment you sign in. TRUST#GRAFT starts later, inside a browser that is already signed in, and only asks WordPress to do things an administrator is allowed to do. The security token WordPress adds to forms (a “nonce”) doesn’t help either, because the script reads it from the page just as your browser would.
What does stop it is making plugin uploads impossible for everyone, administrators included, until you choose to allow them.
Check your site
- Must-use plugins: in your host’s file manager or over SFTP, open
wp-content/mu-plugins. Look forwmedia-recovery.phpor any file you don’t recognise. Many sites have no mu-plugins folder at all, which is fine. - Plugins folder: open
wp-content/pluginsdirectly, not just the Plugins screen, and look for Web Media Optimizer or a folder you didn’t install. Note any file calledads.phpinside an unfamiliar plugin. - Page source: open your home page in a private window, view the source and look for scripts loading from
gerlace[.]com,vtevens[.]icuorcaapman[.]me, or a full-screen frame you didn’t add. - Activity: if you keep an activity log, look for a plugin uploaded and activated within seconds by the same administrator, at a time nobody was working on the site.
- Users: check every administrator account. Our guide to unknown admin users covers hidden ones.
The free Moatline Malware Scanner 1.3.1 and newer flags wmedia-recovery.php and the TRUST#GRAFT domains when you run a scan.
If you find it
- Back up the site as it is, so you can look back later.
- Delete
wp-content/mu-plugins/wmedia-recovery.phpand the Web Media Optimizer plugin folder, using the file manager or SFTP. - Find the script that started it. Look in posts, widgets, the theme’s header and footer and any “custom code” or header-scripts plugin, and remove scripts you didn’t add. Our fake CAPTCHA guide lists the usual hiding places.
- Lock the door behind you: change every administrator password, log everyone out, and change the security keys in
wp-config.phpso stolen sessions stop working. - If you clicked the fake check and then pasted anything into your computer’s Run box or terminal, treat your computer as infected. See what to do if you ran the command.
- Scan the whole site for anything else left behind. See how to scan WordPress for malware.
Stop it happening
- Lock plugin installs. The free Moatline Malware Scanner has a Lock in the admin bar. While the site is locked, nobody can upload, install or activate new plugins, administrators included, so the upload step of TRUST#GRAFT fails. Unlock for 30 minutes when you need to install something. Automatic updates keep running.
- Browse as a lower role. Write and edit content with an Editor account, and use the administrator account only for site settings.
- Treat “verify you are human” pages with suspicion on your own site. If one appears there, don’t interact with it: sign out, and check the site from a private window.
- Keep plugins updated and remove ones you don’t use, since an outdated plugin is the usual way a script gets onto a site.
Source: GBHackers on Securonix’s TRUST#GRAFT research. Related: saw a fake CAPTCHA on a website?
Other plugins are being attacked right now too. See the live list of WordPress plugins under active attack.
Don’t want to do this yourself? Our team cleans hacked WordPress sites every week: WordPress malware removal service, from $45, usually done within 24 hours.
Frequently asked questions
I use two-factor login. Am I safe?
Is the Cloudflare check real?
I deleted the Web Media Optimizer plugin. Is that enough?
How does the script get onto a site in the first place?
Scan your site for free
Moatline checks files, the database and page-builder content. Nothing changes unless you click a button.
More guides
- The WordPress.org notice about Essential Plugin: how to clean what the update left behind
- PHP2Shell (CVE-2026-109618, CVE-2026-109619): fixed versions and what to do now
- Bricksforge vulnerability exploited: how to check your site and clean it
- Rank Math PRO 3.0.123 malware: who is affected and how to clean up
- UpdraftCentral key breach: check your site and remove the backdoor
- Fake CAPTCHA malware hidden in the WordPress database: a real cleanup