WordPress Plugin Scripts Tampered

Overview A major supply‑chain attack has struck the WordPress ecosystem, with trusted JavaScript files from PushEngage, OptinMonster, and TrustPulse — all owned by Awesome Motive — being tampered to install hidden backdoors on websites. The malicious code targeted logged‑in administrators, silently creating attacker‑controlled accounts and installing a concealed plugin that opened a persistent remote access channel.

Attack Summary

Security firm Sansec discovered the campaign on June 13, 2026, identifying identical malicious code served through each plugin’s content‑delivery network (CDN).

PluginExposure WindowImpact
PushEngageSeveral hours (June 12 – June 14)Longest window of active infection
OptinMonster~25 minutes (June 12 22:17 – 22:42 UTC)Brief but high‑reach exposure
TrustPulse~25 minutes (June 12 22:17 – 22:42 UTC)Similar short window of risk

Together, these plugins reach over 1.2 million WordPress sites, making this one of the largest plugin‑level compromises in recent memory.

How the Attack Worked

The poisoned JavaScript files acted only when a logged‑in administrator loaded them. Ordinary visitors were unaffected.

Attack Chain:

  1. Tampered Script Loaded → Malicious code runs when admin is logged in.
  2. Admin Session Hijacked → Attacker creates a new admin account under their control.
  3. Hidden Plugin Installed → A concealed plugin opens a web shell for remote commands.
  4. Data Exfiltration → Credentials and site details sent to tidio[.]cc, a fake domain mimicking tidio.com.

The malware used the admin’s session to act with full permissions, installing a plugin that does not appear in the WordPress dashboard. From there, attackers could read or modify files, copy databases, inject card‑skimming code, or redirect visitors.

Entry Point and Dispute

The breach origin remains under debate.

  • PushEngage’s Account → Claims the attacker exploited a known flaw in the UpdraftPlus backup plugin, accessing a marketing server that held a CDN API key.
  • Sansec’s Analysis → Suggests the breach may have occurred on Awesome Motive’s own servers or CDN account, not the provider itself.

The fake domain tidio[.]cc was registered weeks before the attack, indicating a planned operation rather than a quick exploit.

What to Check and Do

Any site running PushEngage, OptinMonster, or TrustPulse during the window should be treated as compromised.

Immediate Actions:

  • Run Server‑Side Scans → Dashboard checks will miss payloads triggered only for admins.
  • Inspect Filesystem → Look for folders named content‑delivery‑helper or database‑optimizer.
  • Delete Unknown Admin Accounts → Especially developer_api1 or dev_xxxxxx.
  • Review Logs → Check for outbound connections to tidio.cc or IP 84.201.6.54.
  • Rotate Credentials → Reset admin passwords, API keys, database credentials, and WordPress salts.

If any indicator is found, assume the attacker has persistent access and rebuild the site from clean backups.

Indicators of Compromise (Selected)

TypeIndicatorDescription
Domaintidio[.]ccFake domain used for data exfiltration
IP Address84.201.6.54Attacker server observed in Sansec logs
File Namescontent‑delivery‑helper, database‑optimizerHidden plugin folders on infected sites
Admin Accountsdeveloper_api1, dev_xxxxxxUnauthorized accounts created by malware

(Indicators are defanged to prevent accidental resolution.)

Expert in the Cloud Insight

This incident is a textbook example of a supply‑chain attack through trusted plugins. When attackers tamper with CDN‑served scripts, they turn routine updates into infection vectors. The lesson for WordPress administrators is clear: trust must be verified continuously.

For defenders, the path forward is to combine server‑side integrity scans, plugin signature validation, and strict CDN key management. Even a brief window of tampering can cascade into mass compromise across millions of sites.

Be the first to comment

Leave a Reply

Your email address will not be published.


*


This site uses Akismet to reduce spam. Learn how your comment data is processed.