
2026 年 10 月 29 日,Polymarket 的网站提供了一段不属于自己的代码。Polymarket 页面加载的 DebugBear 页面测速脚本,本是用来衡量页面在访客端打开有多快,却被替换成了恶意代码。不到一小时内,约 264 万美元的加密货币就到了攻击者的钱包里。这次事件总共造成约 270 万美元损失,波及 726 个钱包。
它和同一周的币安、b14g 被盗案不一样:攻击者没有攻破 Polymarket 的金库,而是劫持了一条脚本供应链。DebugBear 说,它的 DNS 记录是通过域名注册商被攻破的,这次攻击针对的是某一位客户的网站。当天早些时候,正常脚本还是从 Google Cloud Storage 提供的;到 18:13 UTC,另一个服务器已经开始为 DebugBear 的网址应答了。因为每个客户加载的都是自己的副本,所以被换掉的只有 Polymarket 的那一份。
代码是怎么拿走钱的
Hudson Rock 的研究人员在没有运行这份恶意文件的情况下把它拆开了。代码利用的是已经登录、且页面还开着的交易员的会话权限。它读取 Polymarket 存在浏览器里的账户信息,包括一套交易 API 密钥。光有这些密钥还下不了单,因为下单还需要钱包签名。
于是代码去找 Polymarket 网站里负责下单的那部分,以及为账户交易签名的签名器。接着,它请账户自己的签名器为它的请求签名,再交给 Polymarket 的 relayer 执行。用自己的加密钱包登录的账户,仓位被直接转到了攻击者的钱包;用邮箱登录的账户,仓位先被以越来越差的价格卖出,钱再被转走。代码里写明的钱包在 17:10 UTC 收到第一笔钱,18:02 UTC 收到最后一笔:来自 33 个钱包的 2,860 万枚 POL,按 DefiLlama 18:19 UTC 的价格 0.0922 美元计算,约合 264 万美元。这个数字只算 POL,不包括一并被转走的仓位。
Hudson Rock 提醒了一个重要的细微之处:单凭一次签名请求,不能证明交易员是在没看到提示的情况下签的字。钱包服务商仍然可能要求确认、拒绝,或者按自己的会话规则处理。所以这不是钱包泄露助记词的故事。据 Hudson Rock 的发现,代码没有任何一部分会把密钥、密码、助记词或私钥发给攻击者的服务器。
应对与赔付
Polymarket 在 17:38 UTC 发布了第一条关于用户钱包出现未经授权活动的状态更新。18:05 UTC,交易所进入仅可撤单模式,relayer 操作被暂停。公司说,它在“一小时内”移除了这段脚本,清掉了所有缓存,重置了所有活跃登录会话,并暂停交易直到网站干净。案件已移交执法部门。
到 10 月 30 日,726 个受影响钱包中已有 689 个获得全额赔付,剩下 37 个在逐一核实后支付。Polymarket 还向约 5,500 个因交易暂停而亏损或仓位被动过的钱包支付 119 万美元。总计返还 390 万美元。交易员不需要提交索赔;Polymarket 的状态页上有一个表格链接,供认为金额有误或本应收到赔付的人使用。
事后的变化,以及给交易员的教训
Polymarket 说,第三方脚本会带着额外的检查措施重新上线:更强的内容安全策略(CSP)、固定版本和沙箱隔离。DebugBear 已要求其真实用户监测产品的客户移除嵌入代码;到 11 月 1 日,提供恶意文件的那个地址已经没有 DNS 记录。
Hudson Rock 给网站的建议是:不要在用户交易或签名的页面上放不必要的第三方代码;凡是能固定版本的文件,就用 Subresource Integrity,让浏览器拒绝内容被改过的文件。给交易员的建议更短:拒绝任何你没预料到的签名请求。同样的教训在测试网和主网都适用,我们也在测试网指南里加了相关的提醒。这一周的套路和 b14g 被盗案一致:假冒的退款和领取页面几小时内就会冒出来,所以 Polymarket 官方渠道之外的任何索赔说法都应按可疑处理,见我们关于 b14g 的文章。
来源:The Hacker News(2026 年 11 月 1 日)、Stocktwits/TradingView(11 月 1 日)、hacks.gr(11 月 1 日)、Newisty(11 月 1 日)。数字为撰稿时(2026 年 11 月 2 日凌晨,雅加达时间)的快照,可能变化。
← 全部文章