WordPress 供应链攻击通过 Flippa 销售感染 30 余款插件
一名恶意买家利用 Flippa 市场收购了一家插件开发商,向安装量达数十万的 30 多款 WordPress 插件中注入后门,以部署隐藏的 SEO 垃圾内容。

Indicators of Compromise (1)
| Type ↑ | Value | Description | Conf | |
|---|---|---|---|---|
| IP | 2.6.9.1 | Extracted from source material | high |
一起重大的 WordPress 供应链攻击已波及超过 30 款插件,涉及数十万活跃安装量。此次事件源于攻击者通过 Flippa 市场收购了一家合法的开发者业务。新所有者仅被称为“Kris”,其注入了一个复杂的后门,该后门潜伏八个月后激活,发起了一场向网站注入 SEO 垃圾内容的攻击活动,这些内容对网站所有者隐藏,但对搜索引擎可见。WordPress.org 因此在一天内永久关闭了所有受影响的插件。该事件凸显了开源插件生态系统中的一个关键漏洞:所有权变更可能引入恶意代码,却不会触发安全审查。
核心插件后门与攻击链剖析
此次攻击始于 2025 年 8 月 核心插件 的出售,该实体原名为 WP Online Support,后进行了品牌重塑。买家对插件仓库的首次提交,伪装成针对 WordPress 6.8.2 的兼容性更新,实则引入了一个远程代码执行后门。根据取证分析,像 Countdown Timer Ultimate 这类插件的 2.6.7 版本,向一个名为 class-anylc-admin.php 的文件中添加了 191 行恶意代码。
该后门通过一个名为 wpos-analytics 的模块运作,该模块此前曾作为合法的分析数据选择加入系统。新代码建立了三个关键组件:
- 一个
fetch_ver_info()方法,使用file_get_contents()从攻击者控制的域名analytics.essentialplugin.com获取数据,并将响应传递给@unserialize()。 - 一个
version_info_clean()方法,旨在执行结构为@$clean($this->version_cache, $this->changelog)的函数调用,其中函数名和参数完全由反序列化的远程数据控制。 - 一个未经身份验证的 REST API 端点,注册时使用
permission_callback: __return_true,为远程触发提供了直接途径。
这种设置形成了一个典型的任意函数调用漏洞。该后门一直处于非活动状态,直到 2026 年 4 月 5 日至 6 日,命令与控制服务器开始分发恶意载荷。该载荷是一个名为 wp-comments-posts.php 的文件——故意拼错核心 WordPress 文件 wp-comments-post.php——该文件被下载并执行。其主要操作是将一大段经过混淆的 PHP 代码直接注入网站的 wp-config.php 文件。这种持久化机制确保了入侵在插件更新后依然存在。
影响及利用以太坊智能合约的新型 C2 技术
注入到 wp-config.php 中的代码促成了大规模的 SEO 垃圾内容操作。它从 C2 服务器获取链接、重定向和虚假页面内容,并仅将这些内容展示给被识别为 Googlebot 的用户代理,使得普通网站访问者和管理员无法察觉此次入侵。这种被称为“伪装”的技术,旨在操纵搜索引擎排名而不惊动网站所有者。
该活动在技术层面最显著的特点是其对关停的抵御能力。研究人员发现,恶意软件通过公共区块链 RPC 端点查询以太坊智能合约来解析其 C2 域名。这种方法意味着攻击者可以随时更新智能合约以指向新的域名,从而使传统的域名扣押或关停请求失效。该基础设施的灵活性给防御者带来了重大挑战。
入侵规模巨大。WordPress.org 插件团队于 2026 4 月 7 日永久关闭了来自 核心插件 作者的至少 30 款免费插件。这些插件功能涵盖滑块、倒计时器、图库和常见问题解答等,总计代表着数十万的活跃安装量。任何在 2026 年 4 月之前未更新这些插件的网站都可能受到初始感染。关键的是,尽管 WordPress.org 在 4 月 8 日强制自动更新到 2.6.9.1 版本以中和插件的“回连”功能,但此更新并没有移除 wp-config.php 中的恶意注入。受感染的网站在插件更新后仍然处于活跃感染状态,需要手动修复。
检测指标与手动修复步骤
防御者应立即清点其 WordPress 安装中是否包含来自受影响的核心插件产品组合的任何插件。已关闭的插件包括但不限于:
accordion-and-accordion-slideralbum-and-image-gallery-plus-lightboxcountdown-timer-ultimatepopup-anything-on-clicksp-faqsp-news-and-widgettimeline-and-history-sliderwp-blog-and-widgetswp-testimonial-with-widget
WordPress.org 的强制更新添加了 return; 语句来短路恶意函数,但 wpos-analytics 模块仍然存在。彻底的清理需要完全移除该模块。管理员可以通过以下方式创建修补版本:
- 从插件文件夹中删除
/wpos-analytics/目录。 - 移除主插件 PHP 文件中的加载器函数块(通常可通过类似“Plugin Wpos Analytics Data Starts”的注释或名为
wpos_analytics_anl的函数来识别)。 - 递增插件头中的版本号。
最关键的检测步骤是检查 wp-config.php 文件。恶意软件在 require_once ABSPATH . 'wp-settings.php'; 所在行的同一行追加了大约 6KB 的混淆代码。简单的文件大小检查即可发现问题;干净的 wp-config.php 通常约为 3-4KB,而受感染的文件会膨胀到超过 9KB。如果存在此注入,网站需要进行全面的安全审计,因为该后门可能已被用于部署额外的载荷。历史上的 C2 域名 analytics.essentialplugin.com 现在返回 {"message":"closed"},但日志中任何指向该主机的出站连接都是明确的入侵指标。
WordPress 生态系统防御的关键要点
- 立即审计受影响插件并检查
wp-config.php。 系统管理员必须扫描所有托管的 WordPress 站点,查找列出的核心插件标识符。仅更新插件是不够的;必须手动检查wp-config.php文件是否被追加了恶意代码,任何感染都需要进行全面的清理。 - 将插件所有权变更视为安全风险。 此次攻击与[2017 年的事件]([wordpress plugin supply chain attack])类似,当时一个被购买的插件被武器化。WordPress.org 生态系统目前缺乏标记或审查插件所有权变更的机制。组织应监控关键插件的提交历史和作者变更,因为维护者的突然变更可能预示着供应链攻击。
- 实施强健的备份和文件完整性监控。 此次攻击是通过详细的备份取证发现的,通过比较每日快照中
wp-config.php文件的大小来识别。保持频繁、不可变的备份,并对wp-config.php等核心文件实施文件完整性监控,对于检测未经授权的修改和实现精确恢复至关重要。 - 发现感染即假设已失陷并进行全面调查。
wp-config.php注入的存在表明后门曾经活跃。防御者应假设攻击者拥有不受限制的访问权限,并搜索在入侵窗口期内可能安装的额外后门、未经授权的管理员用户或其他恶意脚本。
订阅更新
将最新的网络安全资讯直接发送到您的邮箱。
