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.
Story
On April 7, 2026, WordPress.org closed thirty-one plugins from a single publisher account called essentialplugin after researchers found that every one of them contained a backdoor planted eight months earlier and activated only days before. 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.
Affected Artifacts
accordion-and-accordion-slider
- Observed
- 2025-08-08 to 2026-04-08
- Compromised Versions
- Unknown
- Fixed
- Not listed
album-and-image-gallery-plus-lightbox
- Observed
- 2025-08-08 to 2026-04-08
- Compromised Versions
- Unknown
- Fixed
- Not listed
audio-player-with-playlist-ultimate
- Observed
- 2025-08-08 to 2026-04-08
- Compromised Versions
- Unknown
- Fixed
- Not listed
blog-designer-for-post-and-widget
- Observed
- 2025-08-08 to 2026-04-08
- Compromised Versions
- Unknown
- Fixed
- Not listed
countdown-timer-ultimate
- Observed
- 2025-08-08 to 2026-04-08
- Compromised Versions
-
- 2.6.7
- Fixed
- 2.6.9.1
featured-post-creative
- Observed
- 2025-08-08 to 2026-04-08
- Compromised Versions
- Unknown
- Fixed
- Not listed
footer-mega-grid-columns
- Observed
- 2025-08-08 to 2026-04-08
- Compromised Versions
- Unknown
- Fixed
- Not listed
hero-banner-ultimate
- Observed
- 2025-08-08 to 2026-04-08
- Compromised Versions
- Unknown
- Fixed
- Not listed
html5-videogallery-plus-player
- Observed
- 2025-08-08 to 2026-04-08
- Compromised Versions
- Unknown
- Fixed
- Not listed
meta-slider-and-carousel-with-lightbox
- Observed
- 2025-08-08 to 2026-04-08
- Compromised Versions
- Unknown
- Fixed
- Not listed
popup-anything-on-click
- Observed
- 2025-08-08 to 2026-04-08
- Compromised Versions
- Unknown
- Fixed
- Not listed
portfolio-and-projects
- Observed
- 2025-08-08 to 2026-04-08
- Compromised Versions
- Unknown
- Fixed
- Not listed
post-category-image-with-grid-and-slider
- Observed
- 2025-08-08 to 2026-04-08
- Compromised Versions
- Unknown
- Fixed
- Not listed
post-grid-and-filter-ultimate
- Observed
- 2025-08-08 to 2026-04-08
- Compromised Versions
- Unknown
- Fixed
- Not listed
preloader-for-website
- Observed
- 2025-08-08 to 2026-04-08
- Compromised Versions
- Unknown
- Fixed
- Not listed
product-categories-designs-for-woocommerce
- Observed
- 2025-08-08 to 2026-04-08
- Compromised Versions
- Unknown
- Fixed
- Not listed
sp-faq
- Observed
- 2025-08-08 to 2026-04-08
- Compromised Versions
- Unknown
- Fixed
- Not listed
- Evidence
- mirror: wordpress.org/plugins/sp-faq
sliderspack-all-in-one-image-sliders
- Observed
- 2025-08-08 to 2026-04-08
- Compromised Versions
- Unknown
- Fixed
- Not listed
sp-news-and-widget
- Observed
- 2025-08-08 to 2026-04-08
- Compromised Versions
- Unknown
- Fixed
- Not listed
styles-for-wp-pagenavi-addon
- Observed
- 2025-08-08 to 2026-04-08
- Compromised Versions
- Unknown
- Fixed
- Not listed
ticker-ultimate
- Observed
- 2025-08-08 to 2026-04-08
- Compromised Versions
- Unknown
- Fixed
- Not listed
timeline-and-history-slider
- Observed
- 2025-08-08 to 2026-04-08
- Compromised Versions
- Unknown
- Fixed
- Not listed
woo-product-slider-and-carousel-with-category
- Observed
- 2025-08-08 to 2026-04-08
- Compromised Versions
- Unknown
- Fixed
- Not listed
wp-blog-and-widgets
- Observed
- 2025-08-08 to 2026-04-08
- Compromised Versions
- Unknown
- Fixed
- Not listed
wp-featured-content-and-slider
- Observed
- 2025-08-08 to 2026-04-08
- Compromised Versions
- Unknown
- Fixed
- Not listed
wp-logo-showcase-responsive-slider-slider
- Observed
- 2025-08-08 to 2026-04-08
- Compromised Versions
- Unknown
- Fixed
- Not listed
wp-responsive-recent-post-slider
- Observed
- 2025-08-08 to 2026-04-08
- Compromised Versions
- Unknown
- Fixed
- Not listed
wp-slick-slider-and-image-carousel
- Observed
- 2025-08-08 to 2026-04-08
- Compromised Versions
- Unknown
- Fixed
- Not listed
wp-team-showcase-and-slider
- Observed
- 2025-08-08 to 2026-04-08
- Compromised Versions
- Unknown
- Fixed
- Not listed
wp-testimonial-with-widget
- Observed
- 2025-08-08 to 2026-04-08
- Compromised Versions
- Unknown
- Fixed
- Not listed
wp-trending-post-slider-and-widget
- Observed
- 2025-08-08 to 2026-04-08
- Compromised Versions
- Unknown
- Fixed
- Not listed
Incident Context
- Motive
- Seo Spam Remote Access
- Attribution
- Maintainer
- Cause
- Maintainer Ownership Transfer
- Transitive
- No
- Actor
- New owner
- User Impact
- 20000
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
Notes
- Legacy version notes: Backdoor planted by essentialplugin account beginning 2025-08-08; Payload activated 2026-04-05 to 2026-04-06; WordPress.org closed all 31 plugins on 2026-04-07; WordPress.org forced neutralizing updates on 2026-04-08
External References
Source record: oss/attacks/essential-plugin/meta.yaml