Skip to main content
mySites.guru
New features added last monthRelease RadarFile ManagerImpostor FilesUpdate QueueRogue AdminsMCP & APIJoomla VELCVE Index

Impostor Plugin Identities

Impostor Plugin Identities

One malware family invents a plugin, an author and a vendor domain per site it breaks into, and the three agree in a way a real vendor identity rarely does.

What this check and mySites.guru tool looks at on your site

This is the one check in this group that never contacts your site. Everything it uses was collected on an ordinary snapshot: the name, version, author and vendor address every plugin declares about itself in its own file header.

It asks one question. Is the declared author a plain two-word human name whose surname is also the vendor domain, someone called “Jack Walker” publishing at walker.dev? One malware family generates a fake plugin per site it breaks into, and it invents the author and the domain from the same pool, so the two agree in a way a real vendor identity rarely does.

The shape of the rule matters as much as the idea. The author has to be two capitalised words, which is why “Team Yoast” and company names never reach the test at all, and the host has to be exactly the surname followed by .dev rather than merely containing it, because a case-insensitive match on .dev would also catch perfectly real vendors whose domains happen to end that way.

Suspect, never confirmed

The last time this rule ran across every WordPress site mySites.guru holds, most of what it matched was this malware, and one match was a real independent developer publishing under his own name, exactly as he is entitled to. Tightening the rule to exclude him would mean writing his personal web address into our code, which is fitting a rule to a single example. So this tool asks you to look, and it never marks a site as hacked.

Why a planted plugin looks exactly like a real one

Everything WordPress knows about a plugin is self-declared. The name, the version, the author and the vendor URL all come from a comment block at the top of the plugin’s main file, and nothing anywhere verifies any of it. A planted plugin writes whatever header it likes and then appears in your Plugins screen looking like software you chose.

On the compromise this came from, the declared names were things like Lunar Analyzer Lab and Keen Librarian Go, with invented authors at invented .dev domains. Several of them installed into a folder whose name did not match the plugin name they declared, which is a tell in itself and not something a legitimate plugin does.

The reason this check exists is that the evidence was already held and no one was looking at it. Going back through the extension records for this identity pattern turned up the matches immediately, and every one of the affected sites was reading as clean at the time, because the malware behind them lives in the database rather than in files a scanner can compare.

What a clean result does not prove

The first is that it reads what the plugin claims. This is a check on a self-declared identity, so a plugin that invents a more convincing one passes it.

The second is that it catches something newly planted rather than a takeover. A plugin’s details are recorded the first time it is seen, and the record is keyed on a hash of its description, path, version and name. A plugin already installed that later changes only its author address keeps the record already held, so the new address is never stored and never tested. For that shape of problem, a plugin you trusted being sold to an attacker is the fuller story.

This check is WordPress only, and that follows from where it came from. The rule was shaped against real infections on WordPress sites, and the field it reads is a plugin’s Plugin URI header, which on Joomla holds the author URL instead. Running it across both would be comparing two different things.

Every plugin identity accounted for

Every plugin on the site has an author you can find, a vendor address that resolves to something real, and a listing somewhere with a changelog and other users. The folder each one installs into matches the name it declares.

How to fix it

Checking one of these takes about a minute.

  1. Search for the plugin by name. A real plugin has a listing, a support forum, a changelog, other people complaining about it. A planted one has none of that anywhere.
  2. Search for the author. Same test. A developer publishing under their own name has a history you can find.
  3. Ask whether anyone installed it. If no one with access to the site recognises it, that is the answer, and the plugin is not the whole problem. Find out how it got there.
  4. Do not just delete it and move on. A planted plugin normally comes with a scheduled event or a must-use plugin that puts it back. Check both before you decide the site is clean.
  5. Tell us if it is real. If it turns out to be a real plugin by a real person, nothing needs doing and we will note it.

What mySites.guru does about it

On every snapshot mySites.guru re-reads the identity every plugin on your site declares, and flags any that match the pattern above. It colours a warning, never a danger, and it does not contribute to the hacked flag.

Each flagged plugin links into the web file manager at its own directory, so you can read the header for yourself and see what else is in there.

Separately, every WordPress site mySites.guru monitors is swept for newly appearing identities of this shape, and only new ones are reported, so the same planted plugin is not announced again every time its version number changes.

Impostor Plugin Identities

mySites.guru checks every connected site for this automatically and flags it the moment it appears. These run twice a day on every connected site.

Further Reading

Frequently Asked Questions

How can a plugin be an impostor if WordPress lists it normally?
Because everything WordPress lists about a plugin is self-declared. The name, version, author and vendor address all come from a comment block at the top of the plugin's own main file, and nothing verifies any of it. A planted plugin writes whatever header it likes, so it appears in your Plugins screen looking exactly like software you installed on purpose.
What is the actual rule?
It asks whether the declared author is a plain two-word human name whose surname is also the vendor domain, someone called Jack Walker publishing at walker.dev. One family generates a fake plugin per site it breaks into and invents the author and the domain from the same pool, so the two agree. Team names and company names never reach the test.
Does this check ever mark a site as hacked?
No, and it may never do so. The last time the rule ran across every WordPress site mySites.guru holds it matched six plugin records. Five were this malware. The sixth was a real independent developer publishing under his own name at his own domain, exactly as he is entitled to. Narrowing the rule to exclude him would mean writing one person's web address into our code, so the check asks you to look instead.
Will this catch a legitimate plugin that gets backdoored later?
No. A plugin's details are recorded the first time it is seen, keyed on a hash of its description, path, version and name. A plugin already installed on your site that later changes only its vendor address keeps the record already held, so the new address is never stored and never tested. This catches something newly planted, not a takeover of something you already had.
EU icon: AI MODIFIEDWritten and edited by a human, with AI assistance. Our approach to AI

What our users say

Accredited Design LLC
Accredited Design LLCManaging Member
★★★★★

I've been with mySites.guru for years now, and it's a central function of my business. Managing multiple site updates at once has saved me untold hours of work to have otherwise needed to login to many sites individually. The other tools to remove unnecessary files, automate backups of websites and scan for malicious code are also extremely helpful. On many occasions, timely warnings from Phil Taylor about security holes in components, plugins and core CMS updates have saved me a lot of grief before bad things happened to my websites. When bad updates have already broken my websites, Phil was always two steps ahead and has surgically accurate information readily available to fix them. Sure, there are other similar services and self-hosted solutions out there, but having all of the things I've mentioned in one place and on one control panel are worth the price of admission in my book. Thank you Phil for all your hard work and for the service you provide to the Joomla and Wordpress communities!

Read more reviews
Richard Hughes
Richard HughesDirector, Gingerweb Ltd
★★★★★

I just looked we have been a customer since 2013 - 13 years now and we will always be as long as we host a website and we have well over 100. Phil has saved my bacon more than once and on a daily basis makes the management of multiple websites much less complicated and the time saved by multiple file updates is incalculable. Thanks Phil - customer for life ;-)

Read more reviews

Read all 282 reviews →

See where your own sites stand

This check, and every other one, run automatically on a free audit. No credit card required.

Get Your Free Site Audit