SAN FRANCISCO, 11 AUG 2026 — The attackers did not need to ship a malicious plugin update. The plugins were already installed, and they were already fetching a file from a server the attackers had write access to.

BdThemes makes premium WordPress plugins with more than 350,000 active installations across its portfolio, Element Pack alone accounting for over 100,000. Attackers reached the company's storage bucket, poisoned a JSON feed those plugins pull into the WordPress administrator dashboard, and used it to create hidden administrator accounts.

The chain

March 2026The vulnerable JSON-parsing code is introduced.
23 JuneEarliest date attacks could have begun.
7 AugustWordfence detects the attacks through its firewall.
8 AugustWordPress.org removes the affected plugins pending investigation.

The affected plugins are Element Pack, Prime Slider, Pixel Gallery, Ultimate Post Kit, Ultimate Store Kit, Live Copy Paste and Smart Admin Assistant. The poisoned stream fed Biggopti, an internal promotional-banner system shared across the range, and the mechanism was a cross-site scripting flaw in its JSON parsing: attacker-controlled content was rendered in an administrator's browser, executing JavaScript with an administrator's session.

The executed JavaScript was sophisticated: it created administrator accounts, installed webshells, and then manipulated the database queries behind the user list to hide those accounts from view. Wordfence, the team at Defiant that found this, describes the hiding as making the compromise materially harder to spot.

The webshell is as durable a threat as the rogue account. An administrator can be deleted, but the webshell is a file that persists, which is why remediation must go beyond the user table.

Their analysis also links the command-and-control infrastructure to the people behind the earlier OptinMonster and Advanced Responsive Video Embedder compromises. The two poisoned endpoints now return clean JSON. As of the reporting, BdThemes had published no statement.

Wordfence's own summary makes the sharpest point available: the sites were compromised without a single line of plugin code being changed. Nothing in the WordPress.org repository was altered, so every integrity check that looks at plugin files returns a pass.

Why this is not an ordinary plugin compromise

The usual WordPress supply-chain story involves a malicious update from a compromised developer account, where the defense is cautious updating and careful review of changes.

Neither defense helps here. The compromise did not arrive in a plugin update, but through a feature working as designed: a plugin fetching remote content from its vendor to display in the admin dashboard.

That pattern is close to universal in commercial WordPress plugins. They check for licence validity, they show promotional notices, they pull changelogs and news panels into the dashboard. Every one of those is a live channel from the vendor's infrastructure into an administrator's browser, open on the site's highest-privilege screen.

The vendor's storage bucket is therefore part of your site's attack surface, and nothing in the WordPress permission model expresses that.

The hidden-account trick is the expensive part

Creating a rogue administrator is routine; hiding it from the user list is what makes an incident persistent.

The standard response to a suspected WordPress compromise is to look at Users, check for accounts you do not recognise, remove them and rotate passwords. That procedure returns a clean result here even while the attacker holds access — and a clean bill of health is what prematurely ends an investigation.

So the practical advice for anyone running these plugins is that the administrator screen is not evidence. Query the database directly for accounts with administrator capability and compare that list against the one the dashboard shows. A discrepancy is the finding.

What site owners should do

If you ran any of the seven affected plugins between late June and 8 August, assume exposure. The time window, not the presence of symptoms, is what matters.

Check for administrator accounts at the database level rather than in the interface. Then rotate credentials for every legitimate administrator, invalidate sessions, and search the filesystem for recently modified or unexpected PHP files, because webshells were part of this payload and a webshell survives deleting the account that placed it. Review scheduled tasks for the same reason.

The plugins were pulled from WordPress.org pending investigation, which means they are not currently updating. Anyone waiting for a fixed version is waiting on a vendor that has not yet said anything publicly.

What to watch

Whether BdThemes publishes an account of what happened to its storage bucket. The write access is the origin of this and nothing about it has been explained.

Whether the same actors reappear. The infrastructure links to two previous plugin compromises suggest a group working this niche repeatedly, and the technique they used here transfers to any plugin that renders remote content in the dashboard.

And whether WordPress tightens what plugins may render in an administrator screen. Such a change would address this entire class of vulnerability, not just this instance, but would likely be unpopular with vendors.