30个WordPress插件被收购:一场持续8个月的供应链潜伏战
你永远不知道,那个帮你统计网站流量的插件,什么时候会变成一把钥匙。
上周五,安恒信息的安全研究员Austin Ginder写下了这句话。他刚刚追踪完一起罕见的供应链攻击——规模不大,但手法之老练,足以让每个依赖WordPress插件的站长脊背发凉。
故事要从今年4月7日说起。
一个插件,一封警告邮件
厦门某企业的网站管理员打开WordPress后台,收到一条官方安全通知:Countdown Timer Ultimate,这个他们用了几年的计时器插件,被发现含有可疑代码,可能导致未授权第三方访问。
插件已经被WordPress.org强制更新到2.6.9.1版本,理论上应该安全了。但Austin Ginder做了一次完整的安全审计后发现——真正的麻烦根本不在插件本身。
恶意代码早就悄悄写进了wp-config.php。这个文件是WordPress的核心配置文件,位于网站根目录,通常不会被轻易怀疑。
代码是怎么进去的?
插件里有一个叫wpos-analytics的模块,听起来像正常的流量统计功能。它确实正常了很多年——直到2025年8月8日,插件发布了2.6.7版本。
这个版本的更新日志只写了一句话:”Check compatibility”(检查兼容性)。没有人注意。
但就是这个版本,悄悄添加了一行代码:连接到一个叫analytics.essentialplugin.com的域名,下载了一个名为wp-comments-posts.php的文件。这个文件名刻意模仿了WordPress核心文件wp-comments-post.php,只差一个连字符,极难发现。
下载完成后,它把一大段PHP代码注入进了wp-config.php。
注入的代码做了三件事:向C2服务器请求垃圾链接和重定向规则;只把这些内容展示给Googlebot,普通访客完全看不到;最重要的是——C2服务器的域名不是硬编码的,而是通过以太坊智能合约来解析的。
换句话说,就算安全研究人员封禁了这个域名,攻击者只需要更新一下智能合约,指向一个新域名,整个僵尸网络就能原地复活。传统手段对这种攻击几乎无效。
溯源:谁在背后操作?
Austin Ginder追踪了这个插件组合的Flippa(域名交易平台)交易记录。这是一个由31个插件组成的打包组合,售价六位数,在WordPress.org上有8个月的下架记录——这段时间里,插件一直在官方目录里正常存在,但后门一直处于休眠状态。
8个月。
这正是这起攻击最令人不安的地方。攻击者不是在抢时间,他们有足够的耐心等待。他们知道,等到插件积累了足够的用户量、等到网站管理员完全信任这个插件、等到某个合适的时机——然后一击致命。
怎么发现中招的?
Austin Ginder用了一种很聪明的方式:文件大小比对法。
他调取了CaptainCore备份系统里,wp-config.php在过去8个月中8个时间节点的快照,对比文件大小。大部分时间点都是3345或3346字节——几乎没有变化。
4月7日:9540字节。
整整三倍的膨胀。注入发生在那之前的一周内,具体时间被锁定在4月6日04:22到11:06 UTC之间,只有6小时44分钟的窗口。
这不是第一次
Austin Ginder在文章开头提到了另一件事:就在大约一个月前,Widget Logic插件也发生过类似的供应链攻击。同样是信任的老插件被新所有者接管,同样是恶意代码悄悄植入。
一个月之内,两起。
这说明这不是孤立事件,而是有人在系统性地收购有影响力的WordPress插件,等待积累足够用户后激活后门。
我们能做什么?
几个务实的建议:
别只依赖官方更新。WordPress.org的强制更新清除了插件里的恶意代码,但没有清理wp-config.php。定期对比备份快照的文件大小,是一个低成本的风控手段。
关注插件所有权变更。如果一个你用了多年的插件突然换了开发者,或者更新日志变得异常简短——保持警惕。
备份不只是备份。CaptainCore这类工具的价值不只是恢复数据,还有 forensics(数字取证)。这次攻击的发现,正是通过分析备份文件差异实现的。
最后
WordPress运行着全球约43%的网站,插件生态是其核心优势,也是最大的攻击面。当一个插件在官方目录里正常存在了8个月、积累了数万次安装、通过了WordPress的安全审核——然后在某个凌晨悄悄改动你的网站配置文件。
你信任的工具,什么时候变成了别人的武器?
这个问题,可能没有让人安心的答案。
引用链接
[1]Someone Bought 30 WordPress Plugins and Planted a Backdoor in All of Them:https://anchor.host/someone-bought-30-wordpress-plugins-and-planted-a-backdoor-in-all-of-them/
[2]Servo is now available on crates.io:https://servo.org/blog/2026/04/13/servo-0.1.0-release/
[3]GitHub Stacked PRs:https://github.github.io/gh-stack/
[4]Stanford report highlights growing disconnect between AI insiders and everyone else:https://techcrunch.com/2026/04/13/stanford-report-highlights-growing-disconnect-between-ai-insiders-and-everyone-else/
[5]I Just Want Simple S3:https://blog.feld.me/posts/2026/04/i-just-want-simple-s3/
[6]Nothing Ever Happens: Polymarket bot:https://github.com/sterlingcrispin/nothing-ever-happens
[7]How to make Firefox builds 17% faster:https://blog.farre.se/posts/2026/04/10/caching-webidl-codegen/
夜雨聆风