Blog
Supply Chain AttackWordPressC2 DetectionAI Traffic Analysis

WordPress supply-chain backdoor: the ShapedPlugin update-channel attack

A backdoor reached 3 ShapedPlugin Pro plugins through the official licensed update channel, stole admin and 2FA secrets, and self-deleted its loader. Why patch dashboards stayed green.

Zero Hunt Research··7 min read

Nobody downloaded the wrong file. The administrators who got compromised did exactly what every security checklist tells them to do: they kept their paid plugins up to date, pulling signed releases from the vendor's own licensed update server. The update was the attack. Between 21 May and the public disclosure in mid-June 2026, three commercial ShapedPlugin products shipped a credential-stealing backdoor through the legitimate channel — and on every infected site, the patch dashboard stayed green the whole time.

This is the failure mode that supply-chain compromise was built to produce, and it is worth dwelling on because the WordPress ecosystem makes it unusually concrete. There was no CVE to scan for in the normal sense, no missing patch, no exposed port. The defender's entire preventive stack was working as designed and pointed in the wrong direction.

What happened in the ShapedPlugin supply-chain backdoor

ShapedPlugin is a WordPress plugin vendor whose free products carry more than 400,000 active installations. In June 2026, the Wordfence Threat Intelligence team (Defiant) confirmed that attackers had compromised the vendor's build and distribution pipeline and injected backdoor code into the Pro builds of three paid plugins, distributed through the official licensed update channel. The free WordPress.org versions were not affected.

The affected releases, per the BleepingComputer report:

  • Product Slider Pro for WooCommerce — before 3.5.4
  • Real Testimonials Pro — 3.2.5
  • Smart Post Show Pro — before 4.0.2

The timeline matters because it shows how long a poisoned-but-licensed update goes unnoticed. The backdoor was injected into the build pipeline on 21 May 2026. The first customer reports of suspicious behaviour surfaced on 10 June. Wordfence confirmed the infection on 12 June, and ShapedPlugin acknowledged the incident on 16 June (securityaffairs coverage). That is roughly three weeks during which administrators were installing the backdoor as an act of good hygiene. The incident is tracked as CVE-2026-10735, with the Product Slider Pro compromise carrying its own maximum-severity identifier, CVE-2026-49777, reported at CVSS 10.0.

Why a WordPress supply-chain backdoor beats your patch dashboard

Most of a defender's preventive budget is spent confirming that software is current and authentic. Patch scanners flag old versions. Update channels verify license tokens. WAFs trust traffic that originates from inside the admin panel. Integrity checks compare a plugin against the vendor's published release — which, here, is the malicious artefact.

Every one of those controls returned a clean result on an infected ShapedPlugin site. The version was the latest. The license was valid. The download came from the vendor. The code ran inside an authenticated admin session. There is no signature mismatch to detect when the signature is on the backdoor.

"We're fully patched. Wordfence is installed. The plugins are the newest versions, downloaded straight from the vendor — show me what's wrong."

Everything you just listed is true, and none of it is the question. The malicious code arrived because you were current. The only place the compromise is visible is the conversation your server started having with a host it had never contacted before.

That is the structural point. When the trusted-input assumption is violated at the source, host-side and identity-side controls don't fail loudly — they pass. The compromise becomes visible only as behaviour: a new outbound connection, an exfiltration burst, a rogue account login from an unfamiliar network. Behaviour is on the wire.

The kill chain, step by step

The mechanism, reconstructed from the Wordfence analysis and the threat-modeling.com breakdown, is a textbook loader-plus-stager built to leave the host as quiet as possible:

  1. Trigger on admin login. A malicious loader (LicenseLoader.php) inside the Pro plugin activates the next time a WordPress administrator opens the admin panel — not on a public request, so external scanners never see it.
  2. Call home. The loader reaches out to its command-and-control endpoint (cdn-stats-api[.]com or subdomains) — a name chosen to look like benign analytics traffic.
  3. Stage the real backdoor. It downloads a second stage and installs it as a fake plugin named woocommerce-subscription or woocommerce-notification, blending into a normal WooCommerce install.
  4. Erase the entry point. The loader then self-deletes. The dropper that did the work is gone; what remains is disguised as routine commerce tooling.
  5. Persist out of reach. The second-stage backdoor and a rogue administrator account (wp_support_sys) survive ordinary plugin deactivation and removal — uninstalling the offending plugin does not clean the site.
  6. Exfiltrate. It harvests WordPress admin credentials and 2FA secrets, database credentials (DB_NAME, DB_USER, DB_PASSWORD, DB_HOST) and wp-config.php salts, SMTP settings, and up to three months of WooCommerce order and payment-method data — all shipped to the C2.

The self-deleting loader is the tell. The attacker deliberately removed the most obvious host artefact while keeping the access. What they could not remove is the network footprint, because exfiltration requires egress and persistence requires a callback. Here is what that footprint looks like:

Indicator Where it lives Visible to host tools?
Outbound to cdn-stats-api[.]com Network egress Only if you inspect traffic
Fake woocommerce-* plugin Filesystem Survives plugin removal; looks legitimate
Rogue admin wp_support_sys wp_users table Yes, if you audit accounts
.htaccess RewriteRule to external domains Webroot Easily missed
wp_options keys _wp_sp_ / _tmp_sp Database Easily missed
Credential / order-data exfiltration burst Network egress Only if you inspect traffic

Two of the highest-signal indicators — the initial C2 call and the data exfiltration — exist only on the wire. The host-side ones either blend in or require an audit you have no reason to run, because nothing told you the site was compromised.

This is not a WordPress problem

It is tempting to file this under "WordPress is messy" and move on. That misreads the trend. Supply-chain compromise is now one of the fastest-growing categories of incident across every ecosystem, not a CMS quirk.

  • The ENISA Threat Landscape 2025 attributed 10.6% of 4,875 analysed incidents (July 2024–June 2025) to software supply-chain attacks, and named compromises of software vendors, cloud integrators, MSP/MSSP partners and CI/CD pipelines among the fastest-growing patterns.
  • Verizon's 2025 Data Breach Investigations Report doubled the third-party share of breaches from 15% to 30% — the largest single-year shift in the series.
  • Sonatype's 2026 supply-chain report counted more than 454,600 newly identified malicious open-source packages in 2025 alone, a roughly 75% year-over-year jump; ReversingLabs independently logged a comparable +73%.

The common thread is that the attacker is no longer trying to break a control you own. They are subverting an input you have already decided to trust — a vendor's build server, a package registry, an update channel. The ShapedPlugin case is the same pattern at the level of a single SME's commerce site: the trust boundary moved upstream, to a place your scanners cannot see, and the only thing that crossed back into your visibility was network behaviour.

What detection actually has to watch

If the preventive layer is structurally blind to poisoned-but-authentic updates, detection has to assume breach and watch for the consequences. For this class of attack those consequences are almost entirely network-shaped:

  • A web server that historically only served content suddenly opening outbound sessions to a never-before-seen domain on an unfamiliar ASN.
  • The timing tell of a beacon that fires on admin login rather than on a schedule.
  • A short, dense exfiltration burst — credentials, salts, three months of order data — leaving a host that normally sends almost nothing outbound.
  • Lateral or follow-on traffic from the rogue account once the attacker uses the stolen credentials.

None of that depends on knowing the CVE, owning a signature for LicenseLoader.php, or having been warned by the vendor. It depends on having watched the wire and learned what normal looks like for that host, so that the abnormal egress stands out the instant it happens — not three weeks later when a customer notices something is off.

Where Zero Hunt fits

This is the scenario Zero Hunt's AI Traffic Analysis was built for. When the host is compromised through a trusted update and the loader erases itself, the network is the only honest witness left. Zero Hunt runs a proprietary deep-learning model — trained on billions of PCAP sequences, with four parallel inference heads (suspicious traffic, malware classification, attack-type identification, application fingerprinting) — entirely on the appliance GPU at a 2.7+ Gbit/s baseline. It flags the anomalous outbound session to a never-seen endpoint and the exfiltration burst while they are happening, on a box that callbacks and self-deleting droppers cannot quietly disable. Because it runs on-prem with no cloud callback, the order-data and credential traffic it inspects never leaves the customer's perimeter to be analysed.

The offensive side closes the other half. A poisoned plugin is, in practice, an unknown asset behaving in a new way, and Zero Hunt's change-triggered campaigns treat a new plugin or version on the perimeter as a reason to re-test within the hour rather than waiting for the next quarterly review. The 10-agent generative swarm validates from an assumed-breach posture — the Credential agent checks whether harvested or default secrets still authenticate, the Post-Exploit and Pivot agents map what an attacker reaching that admin session could actually touch — and every finding is ECDSA-signed at write time, so the evidence of when the anomaly first appeared holds up against an incident timeline. The lesson of ShapedPlugin is not "audit your plugins harder." It is that trust placed upstream has to be verified downstream, on the wire, continuously — because that is the one place the attacker cannot follow you to clean up.