10 月 21 日,Polkadot 官方论坛上一个名为 pcf_network 的账号发了篇安全公告。第一句话就写得很重:只要你从 2025 年 2 月起用过 Fearless 浏览器插件,就把里面每个账户都当作已经泄露处理。
先把两件事说清楚。第一,Fearless 由 Soramitsu 团队开发,从来不是 Polkadot 官方钱包——公告特意强调了两遍。第二,这次出事的只是浏览器插件:3.0.1、3.0.3、3.0.4、3.0.5 四个版本里都藏了一段代码,会在你解锁钱包时把私钥发给攻击者的服务器。
目前已有 8 名用户报告了可归因于这次事件的无授权转账,合计 17,286 DOT,按近期价格大约 2 万美元。受害者报告在公开文档里逐条登记。
后门到底做了什么
配合公告发布的技术分析逐行拆了插件的公开源码。整条链路比一般的盗号木马讲究得多:
触发:每次成功解锁钱包,后台一个叫 fetchJettonInfo() 的函数就会运行。名字看着是拉取 TON 代币(jetton)信息,实际干的完全是另一回事。
远程开关:这个函数先从另一个公开 GitHub 仓库(soramitsu/shared-features-utils 的 eth-enabled 分支)下载一个配置文件。配置里 ton 字段为空就什么都不发生;有值,这个值就是外传服务器的地址。相当于攻击者握着一个随开随关的总闸——平时关着降低暴露,想收网时再打开。20 个月里它显然不是一直开着的,否则受害规模远不止 8 人。
收钥匙:代码把钱包里所有主账户的私钥收集起来——要么直接拿助记词,要么拿 keystore 文件加你的钱包密码。
假加密:私钥用一个「空密码」加密。空密码加密等于没加密,任何人都能解开。这一步纯粹是让代码看起来像正常密钥处理流程。
外传:加密后的私钥拼在一个网页请求的 URL 里,发往 tonscanner.org——域名包装成 TON 区块浏览器的样子。就算有人瞄一眼网络日志,看到的也只是一次代币信息查询。
3.0.1 版略有不同:服务器地址直接写死在代码里,还加了个日期判断,把启动时间推迟到 2025 年 2 月 26 日——代码上线一周后才「上岗」。2026 年 6 月 25 日,这段代码从公开仓库里被删除;10 月 10 日远程开关被关掉。但注意:还装在浏览器里的 3.0.3 到 3.0.5 副本依然带着这段代码,每次解锁仍在检查开关。
最让人后背发凉的部分:所有环节都是「正规」的
这不是构建服务器被黑,也不是签名密钥被盗。恶意代码是 2025 年 2 月 19 日以一个名为「TON ecosystem」的大功能提交(PR #1022)正常合并进插件的公开 GitHub 仓库的,然后走正规发布流程、带正规签名、从 Chrome 官方商店上架分发——技术分析核实了商店里的包和仓库代码完全一致。Firefox 版同源,目前已下架。
也就是说,用户被教育要信任的每一层都「尽职」了:代码公开可查、包有签名、渠道是官方商店。被攻破的是「开源但没人看」这个空档。伪装全靠命名和语境——外传逻辑藏在「jetton 信息服务」里,目标域名做成 TON 浏览器,开关配置放在开发方自己的基础设施仓库。开源只有在有人真的去读 diff 时才有意义,而在一个数千人使用的钱包里,整整 20 个月,实际上没有人读。
这和今年 npm 生态那批供应链投毒是同一族攻击的浏览器插件版本:攻击面不在包管理器,而在源码仓库本身。
用户现在该做什么
公告给的处置清单比一般的「建议改密码」具体得多,按顺序来:
- 换钱包生成全新密钥对——公告点名建议 Nova Wallet,别再用 Fearless。
- 逐条链转移资产。旧账户用过的每条链都要查,能转的全部转走。操作时尽量通过别的钱包 App 导入私钥来完成,别再解锁 Fearless 插件——有用户报告资产就是在他解锁的那一刻被转走的。
- 手机用户也要迁移:手机版本身干净,但助记词只要进过插件一次就废了,在哪用都一样。
- 质押中的资产没法立刻转,Polkadot 解押要 1-2 天。解押前可以先找 polkadot-api 团队做的 PAPI Rescue,专门帮人从已泄露账户里捞资产。对任何人都不要交出私钥,包括他们。
- 资产安全后再卸载插件。
再强调一次公告的原话:改密码、重装插件都没有用。账户属于助记词,不属于哪个 App;私钥一旦离开过你的设备,账户就随时可能不是你的。
账户正在被处理的信号
看到以下任何一条、且不是你自己操作的,立即转走能转的并联系 PAPI Rescue:
- 质押自己停了,或开始解押
- 收益地址被改
- 账户自己退出提名池、治理投票消失
- 小额测试转账转出——全面清扫前的试探
这个案子的行业启示
这是不到一年内第二起同款剧本的浏览器钱包插件事故:正规厂商、公开仓库、恶意代码搭着正常功能更新的车、远程开关控制激活。跟我们记录过的篡改硬件钱包事件放在一起看,结论很一致——最危险的时刻不是什么零日漏洞,而是更新通道本身。
对自托管用户,三条习惯性的结论:插件钱包天然是热钱包,放着会心疼的余额就不该待在一个会自动更新代码的浏览器里;盯链上的「静默信号」(解押、收益地址变更、小额转出)而不只是盯余额——攻击者清扫前要踩点,踩点动作在链上是可见的,这正是被盗后的应急响应的起点;以及,对一切主动私信你的「资产找回服务」保持警惕——公告用加粗写了,我们也照抄一遍:没有正经的人会主动私信你要帮你找回资产,任何人都不需要你的私钥来「帮你」。
如果你已经受损:保留证据(地址、交易哈希、日期、金额),向 SEAL 911 报告,并报警备案——资金流向中心化交易所时,报案记录通常会用到。
常见问题
Fearless 钱包手机 App 也中招了吗?
按公告口径,经审查的 Android 和 iOS 版本不含恶意代码。但助记词泄露与否跟装在哪个 App 无关:只要这串助记词曾经导入过浏览器插件(比如把 Google Drive 备份恢复进插件),由它派生的所有账户都应视为已泄露,无论你现在用的是什么钱包。
用过 Fearless 插件的人现在该做什么?
立刻换一个维护良好的钱包(公告建议 Nova Wallet)生成全新密钥对;逐条链检查旧账户,把资产尽快全部转到新账户,操作时尽量通过其他钱包 App 而不是再次解锁 Fearless 插件;质押中的资产解押需要 1-2 天,可以先联系 polkadot-api 团队的 PAPI Rescue 工具协助;资产安全后再卸载插件。切记任何自称帮你找回资产的人都不需要、也不应该索要你的私钥。
怎么判断自己的账户已经被人盯上?
公告列出了典型信号:质押在没有操作的情况下停止或开始解押、收益地址被更改、账户自己退出了提名池或治理投票、以及小额测试转账离奇转出——这是清扫前的试探动作。看到任何一条,立即转走能转的资产并联系 PAPI Rescue。
恶意代码为什么 20 个月都没被发现?
因为代码就摆在人人可查的公开仓库里,反而没人查。它伪装成正常的 TON 代币信息功能(函数名叫 fetchJettonInfo),外传域名 tonscanner.org 也做成 TON 区块链浏览器的样子,开关配置藏在开发方自己的基础设施仓库里。Chrome 商店上架的包是正规签名的正式发布版,与仓库代码完全一致——被攻破的不是发布渠道,而是「没人审计开源代码」这个空档本身。