Supply Chain Attack on OptinMonster & Co.: 1.2M WordPress Sites Hit

Step by step
How the attack unfolded
Click a phase for details – or let the animation play through.
PHASE 1/7 · Initial Access

Attackers exploited a critical UpdraftPlus vulnerability to gain access to Awesome Motive's marketing server.

T1190 – Exploit Public-Facing Application
  • CVE-2026-10795 (CVSS 9.8) in the UpdraftPlus backup plugin
  • Affected: UpdraftPlus <= 1.26.4 (free) / <= 2.26.5 (premium)
  • Access to a separate marketing server (not the application server)
PHASE 2/7 · Credential Access

On the compromised server, attackers found an API key for the BunnyNet CDN.

T1552 – Unsecured Credentials
  • Stolen API key for the BunnyNet Content Delivery Network
  • Master key enabling manipulation of delivered files
  • No access to the application origin required
PHASE 3/7 · Supply-Chain Compromise

Using the stolen key, attackers tampered with the CDN JavaScript files of the three plugins.

T1195.002 – Compromise Software Supply Chain T1059.007 – JavaScript
  • Affected: OptinMonster, TrustPulse, PushEngage by Awesome Motive
  • Tampered: a.omappapi.com/app/js/api.min.js, a.trstplse.com/app/js/api.min.js, clientcdn.pushengage.com/sdks/pushengage-web-sdk.js
  • Malicious code appended to the legitimate file; plugins kept working normally
  • Around 1.2 million websites potentially exposed
PHASE 4/7 · Execution in Admin Browser

The code activated only for logged-in administrators and stole their security tokens.

T1059.007 – JavaScript T1185 – Browser Session Hijacking
  • Inactive for normal visitors; detection via wp-admin paths, admin bar, login cookie
  • Theft of WordPress nonces (one-time security codes)
  • Requests carry the admin's legitimate session and nonce – WAF ineffective
  • ~60% of traffic from mobile devices (real admin browsers)
PHASE 5/7 · Privilege Escalation & Persistence

The script created a hidden administrator and installed a disguised backdoor.

T1136.001 – Create Account: Local Account T1505.003 – Server Software Component: Web Shell
  • Shadow admin: developer_api1 (customer1usx@gmail.com) or dev_xxxxxx (e.g. dev_3m6nyp)
  • Four fallback methods for account creation
  • Backdoor plugin disguised as 'Content Delivery Helper' (v2.7.1) or 'Database Optimizer' (v2.9.4)
  • Web shell via ?developer_api1_fm and code execution via developer_api1_eval, hidden from dashboard lists
PHASE 6/7 · Exfiltration

The stolen credentials were sent encrypted to a lookalike C2 server.

T1041 – Exfiltration Over C2 Channel T1132.001 – Data Encoding: Standard Encoding
  • XOR encryption with key jX9kM2nP4qR6sT8v
  • C2 domain tidio.cc (IP 84.201.6.54), mimicking tidio.com
  • Domain registered as early as 28 April 2026 – premeditated operation
PHASE 7/7 · Impact

The attacker gained full, persistent control over compromised WordPress websites.

T1078 – Valid Accounts
  • Two unauthenticated access points (web shell + code execution)
  • Exposure window: OptinMonster/TrustPulse ~25 min (12 Jun, 22:17–22:42 UTC), PushEngage several hours until 14 Jun, 08:44 UTC
  • Patchstack blocked 271 exploit attempts on 13 sites from 81 IPs
Short & clear answers
Frequently asked questions about this incident
Am I affected by the attack on OptinMonster, TrustPulse and PushEngage?
Potentially affected are all websites that actively used one of the three plugins between June 12 and 14, 2026, and loaded the tampered CDN scripts. However, only sites where an administrator was logged in during the exposure window were actually compromised. For OptinMonster/TrustPulse the window was only about 25 minutes (June 12, 22:17–22:42 UTC), while for PushEngage it lasted several hours until cleanup on June 14 at 08:44 UTC.
How do I check whether my WordPress site was compromised?
Under Users > All Users, look for the account developer_api1 (email: customer1usx@gmail.com) or accounts matching the pattern dev_xxxxxx. Also check the wp-content/plugins/ directory via FTP/SSH for the folders content-delivery-helper and database-optimizer, since the backdoor actively hides in the dashboard. Trust the file system, not the admin display, and run a server-side malware scan (e.g. Sansec eComscan, Wordfence, or Imunify360).
What should I do right now?
Immediately update UpdraftPlus to version 1.26.5 (free) or 2.26.5 (premium) to close the entry vulnerability CVE-2026-10795. Delete any rogue accounts found (developer_api1, dev_xxxxxx) and remove the backdoor folders content-delivery-helper and database-optimizer directly in the file system – not via the dashboard. If compromise is confirmed, change all admin passwords, regenerate the security keys/salts in wp-config.php, and rotate the database password and all API keys.
I kept my plugins up to date – why am I still at risk?
The vulnerability was not in the plugin code itself but in the JavaScript files delivered via the vendor's CDN (Content Delivery Network). Attackers stole an API key and modified the CDN scripts directly, so even a fully updated WordPress system could be affected. For this reason, the plugins' version numbers are not decisive.
Why couldn't a firewall prevent the attack?
The malicious code was executed by the logged-in administrator's own browser, using their legitimate session and valid security tokens (nonces). According to Patchstack, the administrator is the victim, not the attacker – so the malicious requests appear legitimate. A web application firewall cannot stop a browser from loading a compromised CDN script.
More security news
You might also be interested in
Critical Elementor Pro Flaw: Attackers Can Fully Take Over WordPress Sites
A file upload bug in Elementor Pro up to 4.2.1 allows RCE without login. Version 4.2.2 fixes the flaw – update now!
Pods Plugin: Critical Flaw Enables Admin Takeover, No Login
A critical flaw in the WordPress plugin Pods lets attackers overwrite admin passwords without login. Over 100,000 sites are affected.
miniOrange SAML SSO: Critical Bypass Turns Attackers Into Admins
Two critical auth bypasses in the miniOrange SAML SSO plugin allow forged SAML assertions—up to full WordPress admin access.