一名开发者故意搭建一台没有安装近期安全更新的 PHP 服务器,并把一个存有比特币的钱包私钥放在上面,公开发起「Steal My Bitcoin」挑战,测试外界是否真的能借助漏洞把资金转走。根据官方挑战网站记录,这台主机在挑战开始约 19.28 小时后被攻破,赏金 0.02511679 枚比特币被转走,按官网标示约为 2,021 美元。
开发者公开悬赏测试 PHP 漏洞是否能被实际利用
据官方挑战网站 Steal My Bitcoin,一名在 Hacker News 使用账号 cloudlandsdev 的开发者,于台湾时间 10 月 25 日清晨发起这项挑战。他故意部署一台未安装近期安全更新的 PHP 服务器,把装有比特币的钱包私钥放在其中,允许任何人尝试,只要能动用私钥并把钱包里的比特币转走,就可以拿走全部赏金。
开发者在原帖中表示,发起这项挑战的动机,是想确认外界是否真的有人能利用近期这个 PHP 远程代码执行漏洞,而不只是停留在理论层面的担忧。
日媒 GIGAZINE 报道称,赏金最初约为 500 美元,按 10 月 27 日汇率 1 美元约合 32.6 元新台币计算,约为 1.6 万元新台币。之后在外界捐款加码下,赏金增至约 2,021 美元,约合 6.6 万元新台币。
主办者也设定了攻击边界:攻击只能针对网页应用和 PHP 运行环境,禁止攻击底层主机或让服务瘫痪。
补上可执行页面后约 3 小时被攻破
根据官方网站记录,比特币在挑战开始约 19.28 小时后被转走,时间落在台湾时间 10 月 25 日晚间 11 点 47 分,不到一天。
挑战开始后的 17 个多小时里,没有人成功。一度有安全研究人员质疑,服务器设置是否让漏洞的触发路径根本无法到达。
安全研究人员 LiveOverflow 指出,最初的服务器并没有对外开放一个会执行 PHP 程序的页面。主办者随后在台湾时间 10 月 25 日晚间 9 点左右补上该页面,约 3 小时后,服务器就被攻破。
攻破者代号为 KillaBoi。他随后把重现流程公开在 GitHub 上。按文中描述,其方法是利用 PHP 在内存不足时的处理方式,逐步取得服务器内部信息,最终在服务器上执行指令并拿到私钥。
官方网站附上了奖金钱包链接。区块链浏览器 mempool.space 的数据显示,这个钱包累计收到的 0.02511679 枚比特币目前已全部转出,余额为零。
挑战主机运行 PHP 8.4.26,落在修补版本之前
这台挑战服务器运行的是 PHP 8.4.26,正好处于官方紧急修补版本之前。
PHP 在 10 月针对外界称为「PHP2Shell」的严重漏洞连续发出警示,并于台湾时间 10 月 21 日发布一批紧急更新,包括 8.5.12、8.4.27、8.3.36、8.2.35 四个版本。以 8.4 系列来看,升级到 8.4.27 即可覆盖这批修补;其他版本线则分别对应上述版本。这意味着挑战主机所运行的 8.4.26 还差一个版本才完成修补。
PHP 官方 10 月 24 日再披露新漏洞
PHP 官方在 10 月 24 日另外披露了一个与 session 上传进度有关的新漏洞 CVE-2026-115560,并将其描述为一种「不太可能发生」的远程执行路径,需要 3 个条件同时成立才会触发,默认配置并不符合这些条件,目前也还没有修补版本。
官方建议,尚未关闭 session 上传进度功能的站长,可以先关闭该功能作为预防措施。主办者则表示,之后可能还会推出新的挑战,也会另外公开这次办挑战的经验。
这次挑战指向什么版本
Steal My Bitcoin 挑战的核心,是一名开发者故意部署未安装近期安全更新的 PHP 8.4.26 服务器,并把比特币钱包私钥放上去公开悬赏,以测试这个被部分人认为难以利用的漏洞,在实际环境中能否真的被用来窃取私钥。
就版本而言,PHP 已于 10 月 21 日发布 8.5.12、8.4.27、8.3.36、8.2.35 紧急修补版。挑战主机运行的 8.4.26 位于修补之前;对 8.4 系列用户来说,升级到 8.4.27 即可覆盖这批修补。

