87
This article details a large-scale supply chain attack targeting the WordPress plugin ecosystem, where the attacker acquired over 30 plugins and implanted backdoors, using Ethereum smart contracts to bypass traditional security blocks, and executed SEO hijacking and remote intrusion after lying dormant for 8 months. C CSDN
Today 4445 words (about 18 min) View Source →
CSDN 2026-04-14 18:06 江苏
有人一次性收购了 30 个 WordPress 插件,并在全部插件中植入了后门。
作者 |Austin Ginder 编译 | 苏宓
出品 | CSDN(ID:CSDNnews)
30 余款插件被批量植入后门、斥资六位数、长达 8 个月未被察觉、甚至借助以太坊智能合约绕过传统安全拦截,一场隐蔽的 SEO 劫持与远程入侵事件于近日被安全研究员 Austin Ginder 披露出来。
而就在一周前,他才 曝光过一起针对一款名为 Widget Logic 的 WordPress 插件的供应链攻击事件:一款原本口碑可靠的插件,在被新收购方接手后,遭植入恶意代码。
如今同类事件再度上演,且本次波及规模要大得多,最终导致 WordPress.org 紧急下架并封禁 31 款插件。
起因:一名客户发现了一条安全通知
发现这个后门也属偶然,一切源于 WordPress 后台的 一条 安全预警。Austin Ginder 在博客上写道,他们的一位客户给他 发了一条消息反馈,称其客户站点的 WordPress 仪表盘弹出了风险提示。该通知由 WordPress.org 插件官方团队推送,警告一款名为 Countdown Timer Ultimate 的插件存在高危代码,可能导致未授权第三方非法入侵网站。
随后,Austin Ginder 介入并展开了更深入的安全审计,逐步揭开了这起攻击的完整链条。
他指出,事发后,WordPress.org 已强制将这款插件升级至 2.6.9.1 版本,官方更新本应清除恶意程序,但实际损害早已形成。
恶意程序藏匿核心配置文件
调查发现,恶意代码被秘密植入站点核心配置文件 wp-config.php 中。
问题源头来自插件内置的 wpos-analytics 模块,该模块会主动向 analytics.essentialplugin.com 发起远程联网请求,下载名为 wp-comments-post s.php 的后门文件。
该文件刻意仿冒 WordPress 系统核心文件 wp-comments-post.php,极具迷惑性,随后利用其后门能力,向 wp-config.php 注入一大段恶意 PHP 代码。
此次注入的恶意程序设计极为精巧:它会从远程命令与控制服务器(C2 服务器)拉取垃圾外链、跳转劫持规则以及虚假页面内容;并且采用定向投放机制,仅向谷歌爬虫展示垃圾内容,网站管理员日常访问完全无法察觉异常。
整件事最离谱的细节在于——攻击者通过以太坊智能合约解析 C2 域名,调用区块链公共 RPC 节点完成域名解析。传统的域名关停、解析拦截手段对此完全失效,攻击者只需更新智能合约地址,就能随时切换新的控制域名,持久化维持入侵通道。
官方强制更新治标不治本
WordPress.org 推送的 2.6.9.1 版本,仅封禁了插件远程联网的外联机制,彻底切断恶意模块的通信通道,却完全没有清理已经写入 wp-config.php 的注入代码。
这也意味着,网站的 SEO 垃圾注入漏洞依旧存续,隐藏违规内容仍在持续投放给谷歌爬虫。
通过备份溯源取证,精准锁定了恶意代码的注入时间窗口
Austin Ginder 表示,其 平台 CaptainCore 会采用 restic 工具每日自动备份站点数据,他从八份不同时间的备份中提取 wp-config.php,以文件大小为参照,用二分比对的方式逐一排查异常。
经核实,恶意注入行为发生在 2026 年 4 月 6 日 04:22 至 11:06 之间,整个漏洞暴露窗口期为 6 小时 44 分钟。
后门潜伏八月,长期静默蛰伏
追溯插件完整迭代记录(共计939次快速保存快照)可以发现,这款插件自2019年1月就部署在该网站中。多年以来,wpos-analytics 模块仅作为合规的数据分析授权功能正常运行,无任何异常。
Austin Ginder 指出,转折点出现在2025年8月8日发布的 2.6.7 版本。该版本更新日志仅标注“适配 WordPress 6.8.2 版本兼容性”,实则暗中新增191行恶意代码,其中包含一处 PHP 反序列化后门。对应文件 class-anylc-admin.php 代码行数,直接从473行扩增至664行。
新增恶意代码主要包含三项高危功能:
- 新增
fetch_ver_info()方法,通过远程读取攻击者服务器数据,并将返回内容交由反序列化函数处理;
- 新增
version_info_clean()方法,可执行任意动态函数调用,调用参数、函数名称全部由远程恶意数据控制;
- 开放无需身份验证的 REST API 接口,关闭权限校验。
插件打包出售,收购方蓄意投毒
这起安全事件的核心诱因,是整套插件资产的低价转手交易。
该系列插件最初由印度开发团队打造,核心成员包括 Minesh Shah、Anoop Ranawat 与 Pratik Jain。团队约2015年以 WP Online Support 为品牌开发 WordPress 插件,后续更名为 Essential Plugin,逐步打造出30余款免费插件,并配套推出付费增值版本,形成完整产品矩阵。
2024 年末,该团队营收下滑 35%~45%,创始人 Minesh 随即在 Flippa 平台挂牌,打包出售整套插件业务与品牌资产。
最终,一位化名「Kris」的买家以六位数美元价格完成收购。公开资料显示,该买家长期涉足 SEO 灰产、加密货币以及网络博彩营销领域。Flippa 平台还曾在 2025 年 7 月,将这笔交易作为经典商业收购案例公开报道。
完整时间线梳理
2015 年 2 月
wponlinesupport.com 域名注册,团队正式开启 WordPress 插件开发业务。
2016 年 10 月
核心插件 Countdown Timer Ultimate 由开发者 anoopranawat 正式上架 WordPress.org 插件商城。
2021 年 8 月
essentialplugin.com 域名注册,团队品牌从 WP Online Support 全面升级为 Essential Plugin。
2024 年末
业务营收大幅缩水,创始人挂牌打包出售全部插件资产。
2025 年初
灰产背景买家 Kris 通过 Flippa 完成收购,全盘接手 Essential Plugin 所有产品。
2025 年 5 月 12 日
注册全新的 WordPress.org 开发者账号,用于后续插件版本提交。
2025 年 5 月 14 日-16 日
原官方开发账号完成最后一次代码提交,代码作者标识被批量篡改。
2025 年 8 月 8 日
新账号首次提交版本更新,发布暗藏反序列化远程执行后门的 2.6.7 版本,更新日志刻意造假隐瞒恶意修改。
2025 年 8 月 30 日
essentialplugin.com 域名 WHOIS 信息被篡改,注册人改为苏黎世的 Kim Schmidt,绑定 ProtonMail 隐私邮箱,隐匿真实身份。
2026 年 4 月 5 日- 6 日
后门被批量植入,恶意控制端域名开始向所有搭载该系列插件的网站推送恶意载荷。
2026 年 4 月 7 日
WordPress.org 官方一日之内,永久下架封禁 Essential Plugin 旗下全部 31 款插件。
2026 年 4 月 8 日
官方全网强制推送插件自动更新至 2.6.9.1,通过添加终止代码、注释屏蔽高危后门函数,临时封堵漏洞。
值得注意的是,收购方接手后的第一次代码提交,就直接植入了高危后门,全程蓄谋已久。
三十余款插件集体下架
2026 年 4 月 7 日,WordPress 官方插件团队采取硬核处置措施,永久下架 Essential Plugin 开发者名下所有产品,当日封禁插 件数量超 30 款。
以下为已确认受影响的插件列表:
* Accordion and Accordion Slider — accordion-and-accordion-slider
* Album and Image Gallery Plus Lightbox — album-and-image-gallery-plus-lightbox
* Audio Player with Playlist Ultimate — audio-player-with-playlist-ultimate
* Blog Designer for Post and Widget — blog-designer-for-post-and-widget
* Countdown Timer Ultimate — countdown-timer-ultimate
* Featured Post Creative — featured-post-creative
* Footer Mega Grid Columns — footer-mega-grid-columns
* Hero Banner Ultimate — hero-banner-ultimate
* HTML5 VideoGallery Plus Player — html5-videogallery-plus-player
* Meta Slider and Carousel with Lightbox — meta-slider-and-carousel-with-lightbox
* Popup Anything on Click — popup-anything-on-click
* Portfolio and Projects — portfolio-and-projects
* Post Category Image with Grid and Slider — post-category-image-with-grid-and-slider
* Post Grid and Filter Ultimate — post-grid-and-filter-ultimate
* Preloader for Website — preloader-for-website
* Product Categories Designs for WooCommerce — product-categories-designs-for-woocommerce
* Responsive WP FAQ with Category — sp-faq
* SlidersPack – All in One Image Sliders — sliderspack-all-in-one-image-sliders
* SP News And Widget — sp-news-and-widget
* Styles for WP PageNavi – Addon — styles-for-wp-pagenavi-addon
* Ticker Ultimate — ticker-ultimate
* Timeline and History Slider — timeline-and-history-slider
* Woo Product Slider and Carousel with Category — woo-product-slider-and-carousel-with-category
* WP Blog and Widgets — wp-blog-and-widgets
* WP Featured Content and Slider — wp-featured-content-and-slider
* WP Logo Showcase Responsive Slider and Carousel — wp-logo-showcase-responsive-slider-slider
* WP Responsive Recent Post Slider — wp-responsive-recent-post-slider
* WP Slick Slider and Image Carousel — wp-slick-slider-and-image-carousel
* WP Team Showcase and Slider — wp-team-showcase-and-slider
* WP Testimonial with Widget — wp-testimonial-with-widget
* WP Trending Post Slider and Widget — wp-trending-post-slider-and-widget
所有相关插件已被永久下架。当前在 WordPress.org 上搜索该作者名称已无任何结果,插件页面完全消失。与此同时,analytics.essentialplugin.com 接口也已失效,返回内容仅为:{“message”:“closed”}。
类似的攻击其实早已发生过
2017 年,一名使用化名 “Daley Tias” 的买家以 1.5 万美元收购了 Display Widgets 插件(约 20 万次安装),随后在代码中植入了网贷垃圾广告。此后,该攻击者又以相同手法陆续入侵了至少 9 个插件。
本次 Essential Plugin 事件,本质上只是同一套攻击剧本的放大版:超过 30 个插件、数十万活跃安装量,以及一个通过公开市场完成收购、但在数月内被武器化的八年历史项目。
在实际处置中,相关环境中的插件已经全部完成修复。WordPress.org 的强制更新虽然加入了 return; 语句,用于阻断插件的“回连”功能,但本质上只是临时性修补措施,并未移除 wpos-analytics 模块本体及其全部代码逻辑。
因此,进一步的处理方式是直接重构插件版本,将整个后门模块彻底剥离,并重新打包生成干净版本。
在实际排查中,Austin Ginder 在 22 个客户站点的 26 个 Essential Plugin 插件中,确认有 12 个被使用,其中 10 个已完成修复。其余部分要么本身不包含后门模块,要么属于原作者的“pro”分支版本。对应的加固版本已统一托管至 B2 存储,可用于持续分发与替换更新。
# Countdown Timer Ultimate
wp plugin install https://plugins.captaincore.io/countdown-timer-ultimate-2.6.9.1-patched.zip --force
# Popup Anything on Click
wp plugin install https://plugins.captaincore.io/popup-anything-on-click-2.9.1.1-patched.zip --force
# WP Testimonial with Widget
wp plugin install https://plugins.captaincore.io/wp-testimonial-with-widget-3.5.1-patched.zip --force
# WP Team Showcase and Slider
wp plugin install https://plugins.captaincore.io/wp-team-showcase-and-slider-2.8.6.1-patched.zip --force
# WP FAQ (sp-faq)
wp plugin install https://plugins.captaincore.io/sp-faq-3.9.5.1-patched.zip --force
# Timeline and History Slider
wp plugin install https://plugins.captaincore.io/timeline-and-history-slider-2.4.5.1-patched.zip --force
# Album and Image Gallery plus Lightbox
wp plugin install https://plugins.captaincore.io/album-and-image-gallery-plus-lightbox-2.1.8.1-patched.zip --force
# SP News and Widget
wp plugin install https://plugins.captaincore.io/sp-news-and-widget-5.0.6-patched.zip --force
# WP Blog and Widgets
wp plugin install https://plugins.captaincore.io/wp-blog-and-widgets-2.6.6.1-patched.zip --force
# Featured Post Creative
wp plugin install https://plugins.captaincore.io/featured-post-creative-1.5.7-patched.zip --force
# Post Grid and Filter Ultimate
wp plugin install https://plugins.captaincore.io/post-grid-and-filter-ultimate-1.7.4-patched.zip --force
每个修复版本都会彻底移除 wpos-analytics 目录,从主插件文件中删除对应的加载函数,并将版本号更新为 -patched 标识。插件本身的功能在此过程中依然可以正常运行。
通过 Claude Code 可以相对快速地完成修复流程。只需提供本文作为上下文,并指定需要处理的插件,它即可按相同方式移除 wpos-analytics 模块,这一模式在 Essential Plugin 系列中基本完全一致。
具体处理步骤如下:
- 从插件目录中删除 wpos-analytics/ 文件夹;
- 在主插件 PHP 文件中移除加载函数代码块(可通过搜索 “Plugin Wpos Analytics Data Starts” 或 wpos_analytics_anl 定位);
- 将插件的 Version 头信息更新,添加 -patched 标识以区分修复版本;
- 最后重新打包压缩,并通过命令强制覆盖安装(wp plugin install your-plugin-patched.zip –force)。
> 恶意代码通常会追加在 require_once ABSPATH . wp-settings.php; 同一行末尾,因此很容易在快速浏览时被忽略。如果该文件体积明显异常增大(注入内容通常会增加约 6KB),基本可以判断站点已经遭到实际入侵,此时仅修复插件是不够的,还需要进行全站级别的彻底清理。
WordPress 插件生态的信任危机
短短两周内,连续两起大规模插件供应链攻击接连爆发,手法如出一辙:收购一款拥有稳定用户群的知名插件,获取其在 WordPress.org 的提交权限,然后注入恶意代码。
Essential Plugin 这笔收购全程完全公开,买家的灰产从业背景清晰可查。然而,这笔收购却几乎没有经过任何来自 WordPress.org 的审查就顺利完成。
目前,WordPress.org 并没有针对插件所有权转移的标记或审核机制:当控制权发生变更时,用户不会收到任何“所有权变更”的通知;开发者账号更换后,也不会触发额外的代码审查流程。尽管插件团队在攻击被发现后反应迅速,但从后门植入到最终被察觉,中间已经过去了整整 8 个月。
对于正在运营 WordPress 站点的用户而言,建议尽快对所有站点进行排查,确认是否使用了上述提到的 26 个插件。一旦发现,应立即进行修复或直接移除。同时,务必检查核心配置文件 wp-config.php,确认是否存在异常代码。
来源:https://anchor.host/someone-bought-30-wordpress-plugins-and-planted-a-backdoor-in-all-of-them/
推荐阅读: