Open Source · · 243 days

Essential Plugin WordPress.org portfolio backdoor

After the Essential Plugin, formerly WP Online Support, portfolio was sold on Flippa, the new owner gained WordPress.org commit access and planted a dormant PHP backdoor across the plugin family.

On April 7, 2026, WordPress.org closed thirty-one plugins from a single publisher account called essentialplugin after researchers found a backdoor across the portfolio, planted eight months earlier and activated only days before. Twenty-two of the thirty-one shipped it in a tagged release. Combined active-install counts across the portfolio exceeded 20,000 sites.

The Essential Plugin portfolio, formerly published under the WP Online Support brand, was a long-running family of small WordPress utilities: sliders, accordions, FAQ widgets, post-grid layouts, WooCommerce add-ons. None of the plugins were individually high-profile, but together they had a long install tail of small business and hobby sites. According to a write-up published on anchor.host, the entire portfolio was sold through Flippa, the online marketplace for websites and digital assets, and the new owner inherited the WordPress.org commit access needed to ship updates through the official plugin directory.

The malicious code first landed in plugin updates beginning August 8, 2025, and sat dormant for nearly eight months. It activated between April 5 and April 6, 2026. Researchers at TechNadu, WPSpear, and mysites.guru, who independently analyzed the updates after the activation, described a code path under wpos-analytics/ that registered an unauthenticated REST endpoint with a __return_true permission callback. The endpoint accepted instructions over HTTPS from analytics.essentialplugin.com and could write arbitrary files into the WordPress install, including dropping wp-comments-posts.php and modifying wp-config.php. Two helper methods, fetch_ver_info and version_info_clean, handled the C2 polling and cleanup.

WordPress.org closed the essentialplugin account outright on April 7, then pushed neutralizing automatic updates across the affected plugins on April 8. The incident underscored a structural gap in WordPress's plugin governance: ownership transfer was the trust boundary, and once a buyer held commit access, the directory had no mechanism to re-verify the intentions of an account it had previously trusted.

Notes

  • Legacy version notes: backdoor planted by the essentialplugin account from 2025-08-08; payload activated 2026-04-05 to 04-06; WordPress.org closed all 31 plugins on 2026-04-07 and forced neutralizing updates on 04-08.
  • Affected and remediated versions were derived by reading every WordPress.org SVN tag of all 31 plugins and testing wpos-analytics/includes/class-anylc-admin.php for the backdoor.
  • 22 of the 31 shipped it. The other nine have no tag containing it, so no backdoored release of them reached the directory; they were closed on account ownership grounds.
  • The neutralizing update does not remove the backdoor. It inserts early returns and comments out the dynamic call, leaving the unauthenticated route and the C2 endpoint present but inert.

Appendix · Affected releases

accordion-and-accordion-slider wordpress fixed 1.4.6.1
1.4.4 sha256 2cebfacb…96f846c9 download unavailable
1.4.5 sha256 ac4e9fd0…2632d436 download unavailable
1.4.6 sha256 52c3eb6d…f4f03b5a download unavailable
audio-player-with-playlist-ultimate wordpress
  • Legacy version notes: backdoor planted by the essentialplugin account from 2025-08-08; payload activated 2026-04-05 to 04-06; WordPress.org closed all 31 plugins on 2026-04-07 and forced neutralizing updates on 04-08.
  • Affected and remediated versions were derived by reading every WordPress.org SVN tag of all 31 plugins and testing wpos-analytics/includes/class-anylc-admin.php for the backdoor.
  • 22 of the 31 shipped it. The other nine have no tag containing it, so no backdoored release of them reached the directory; they were closed on account ownership grounds.
  • The neutralizing update does not remove the backdoor. It inserts early returns and comments out the dynamic call, leaving the unauthenticated route and the C2 endpoint present but inert.
blog-designer-for-post-and-widget wordpress fixed 2.7.7.1
2.7.6 sha256 cbc9192a…716f7926 download unavailable
2.7.7 sha256 d800066b…6bc9192b download unavailable
countdown-timer-ultimate wordpress fixed 2.6.9.1
2.6.7 sha256 bf87c107…020a5642 download unavailable
2.6.8 sha256 65ebcb51…6d60a16a download unavailable
2.6.9 sha256 cabf4d1b…98d5c8c6 download unavailable
  • SHA-256 bf87c1077ef2588a76d7407509d0428951976289e7584c963c7aecf6020a5642 was measured from the complete 2.6.7 ZIP recovered from the official WordPress distribution endpoint.
featured-post-creative wordpress fixed 1.5.7.1
1.5.5 sha256 a54e8ee7…06752ebd download unavailable
1.5.6 sha256 b79292d5…6ea30cc1 download unavailable
1.5.7 sha256 a4be4d42…0d7ce892 download unavailable
hero-banner-ultimate wordpress
  • No release of this plugin carried the wpos-analytics backdoor. Every WordPress.org SVN tag was checked and none contains the unauthenticated REST endpoint or a live dynamic call.
  • It was closed alongside the rest of the essentialplugin portfolio on 2026-04-07 on account ownership grounds, not because a backdoored version shipped.
html5-videogallery-plus-player wordpress fixed 2.8.7.1
2.8.6 sha256 b6591313…e007d26a download unavailable
2.8.7 sha256 d1edd50c…2e244a91 download unavailable
popup-anything-on-click wordpress fixed 2.9.1.1
2.8.9 sha256 0528b5de…0e326546 download unavailable
2.9.0 sha256 e10d6641…a5b77ccd download unavailable
2.9.1 sha256 7cb1f072…745fc515 download unavailable
portfolio-and-projects wordpress fixed 1.5.6.1
1.5.5 sha256 01048972…3249619e download unavailable
1.5.6 sha256 3f96ed00…20418ba1 download unavailable
post-category-image-with-grid-and-slider wordpress
  • No release of this plugin carried the wpos-analytics backdoor. Every WordPress.org SVN tag was checked and none contains the unauthenticated REST endpoint or a live dynamic call.
  • It was closed alongside the rest of the essentialplugin portfolio on 2026-04-07 on account ownership grounds, not because a backdoored version shipped.
post-grid-and-filter-ultimate wordpress fixed 1.7.4.1
1.7.3 sha256 0e13cae7…754b91f2 download unavailable
1.7.4 sha256 e183c134…599bdf0a download unavailable
preloader-for-website wordpress
  • No release of this plugin carried the wpos-analytics backdoor. Every WordPress.org SVN tag was checked and none contains the unauthenticated REST endpoint or a live dynamic call.
  • It was closed alongside the rest of the essentialplugin portfolio on 2026-04-07 on account ownership grounds, not because a backdoored version shipped.
product-categories-designs-for-woocommerce wordpress
  • No release of this plugin carried the wpos-analytics backdoor. Every WordPress.org SVN tag was checked and none contains the unauthenticated REST endpoint or a live dynamic call.
  • It was closed alongside the rest of the essentialplugin portfolio on 2026-04-07 on account ownership grounds, not because a backdoored version shipped.
sp-faq wordpress fixed 3.9.5.1
3.9.4 sha256 8caa4919…a5d38bc2 download unavailable
3.9.5 sha256 1591bd85…6458f836 download unavailable
sliderspack-all-in-one-image-sliders wordpress
  • No release of this plugin carried the wpos-analytics backdoor. Every WordPress.org SVN tag was checked and none contains the unauthenticated REST endpoint or a live dynamic call.
  • It was closed alongside the rest of the essentialplugin portfolio on 2026-04-07 on account ownership grounds, not because a backdoored version shipped.
sp-news-and-widget wordpress fixed 5.0.6.1
5.0.5 sha256 1ed920e9…86d1382e download unavailable
5.0.6 sha256 495a69b0…6718f5c2 download unavailable
styles-for-wp-pagenavi-addon wordpress
  • No release of this plugin carried the wpos-analytics backdoor. Every WordPress.org SVN tag was checked and none contains the unauthenticated REST endpoint or a live dynamic call.
  • It was closed alongside the rest of the essentialplugin portfolio on 2026-04-07 on account ownership grounds, not because a backdoored version shipped.
ticker-ultimate wordpress fixed 1.7.6.1
1.7.5 sha256 fe2b8c0b…40a7cedd download unavailable
1.7.6 sha256 116902ff…eacb68d6 download unavailable
timeline-and-history-slider wordpress fixed 2.4.5.1
2.4.4 sha256 a974414c…35d7bc76 download unavailable
2.4.5 sha256 6cd2fd54…f2d39f8a download unavailable
wp-blog-and-widgets wordpress fixed 2.6.6.1
2.6.5 sha256 6b1ddd2d…ee3b2a2f download unavailable
2.6.6 sha256 aa30c655…d7760eb7 download unavailable
wp-logo-showcase-responsive-slider-slider wordpress fixed 3.8.7.1
3.8.5 sha256 6b4d81b2…93d7bdb0 download unavailable
3.8.6 sha256 1fdabd37…0a5a93d2 download unavailable
3.8.7 sha256 49b0b508…51dde981 download unavailable
wp-responsive-recent-post-slider wordpress fixed 3.7.1.1
3.6.6 sha256 eeaab271…0f976662 download unavailable
3.7.1 sha256 3fcc4c1e…00ccb52d download unavailable
wp-team-showcase-and-slider wordpress fixed 2.8.6.1
2.8.5 sha256 b38b80ca…1a3a16eb download unavailable
2.8.6 sha256 1bb552cf…0e63bc42 download unavailable
wp-testimonial-with-widget wordpress fixed 3.5.6.1
3.5.5 sha256 55a9d1e7…df2202ab download unavailable
3.5.6 sha256 4965f0fc…d09ca0b1 download unavailable
wp-trending-post-slider-and-widget wordpress fixed 1.8.6.1
1.8.5 sha256 c5bf81e4…02734b81 download unavailable
1.8.6 sha256 ce71b4d7…f3184d27 download unavailable

Indicators

  • domainanalytics.essentialplugin.com
  • filewpos-analytics/
  • filewp-comments-posts.php
  • filewp-config.php
  • fileclass-anylc-admin.php
  • methodfetch_ver_info
  • methodversion_info_clean
  • indicatorunauthenticated REST endpoint with __return_true permission callback

References

  1. Someone bought 30 WordPress plugins and planted a backdoor in all of themanchor.host
  2. WordPress Essential Plugin backdoor disseminated to over 20,000 active installationstechnadu.com
  3. EssentialPlugin Flippa backdoorwpspear.com
  4. Essential Plugin WordPress backdoormysites.guru

Source record: oss/attacks/essential-plugin/meta.yaml