2023 年 · Blur 改变了 NFT 交易规则
Blur 在 2023 年靠「积分激励 + 离链订单」一战成名,把 OpenSea 推下王座。Bidding 机制原本是好东西:买家挂一个签名出价(不上链、零 gas),卖家接受签名后才上链结算。问题是这套签名结构包含 offer / consideration / startTime / endTime / zone / conduitKey / orderType 等字段,普通用户看不懂。这套不可读性成了 2024 年起钓鱼工具箱里的核心武器。
2024 年 12 月 18 日早上 · Kenji 打开活动页
东京的 NFT 玩家 Kenji 看到「Blur Season 4 双倍积分」活动页转发链接 —— blur-s4-bonus[.]xyz,UI 跟 blur.io 几乎一样。他连上钱包,点击「Claim 2× Points」。钱包弹出一个 Bid 签名请求,他眼睛扫了一下字段,看到熟悉的 conduitKey 和 orderType,下意识觉得「跟平时签 Bid 一样」,按 Sign。
当天 14:02 · 签名上链
3 分钟后,攻击者把那个签名提交到 Blur 真合约。链上记录显示:Kenji 以 0.000001 ETH 价格「卖」了 Azuki #2389(floor 价 18 ETH)给攻击者。Blur 合约严格按照签名执行 —— 因为签名结构合法、签名人是 Kenji 本人,合约没有任何理由拒绝。
这就是反向利用:原本 Bid 是「我出价买你的 NFT」,攻击者把签名结构换成「我以 0.000001 ETH 买你的 NFT,并 approve all 给我」。Kenji 签的那一刻,相当于自己挂出一笔超低价 listing 同时给了批量授权。
当天 14:05 · 整套 NFT 蒸发
攻击者拿到 approve all 后调用 transferFrom 一次性转走 Azuki #1024(同地址另一只,floor 27 ETH)+ ENS 几个域名 + 一些小图。Kenji 旧钱包合计 47 ETH 蒸发,约 18 万美元。这一切发生在 5 分钟内,他人在通勤地铁上,看到 Blur 通知时已经结束。
2025 年第一季度 · NFT 圈的「签名分离」共识
Kenji 这次损失催生了一个新最佳实践:交易钱包和存仓钱包分开。
- 交易钱包:只放当下要交易的几只 NFT,连接 Blur / OpenSea / 任何陌生平台时用它
- 存仓钱包:放蓝筹长持,永不连接任何 dApp,私钥放硬件钱包
这样即使误签也只损失交易钱包里的数额。这套思路在 2025 年第一季度在 BAYC / Azuki / Pudgy Penguins 大户群里大范围扩散,成为新硬规则。
另一个更狠的变种 · 签名内含 setApprovalForAll
2025 年 1-3 月监测到的新变种:Bid 签名结构里嵌入 setApprovalForAll 调用。一份签名同时完成两件事 —— 既把一只 NFT 「以 0 wei 卖给攻击者」,又把整个合约下所有 NFT 授权给攻击者地址。普通用户看不出这两个动作的叠加,因为签名字段都是结构化数据、看起来像普通 Bid。Pocket Universe / Rabby 2025 年 3 月才更新检测规则覆盖这个变种。
Bid 签名钓鱼的 5 个特征
- 在非 blur.io / opensea.io 域名上看到 Bid / Listing 签名请求 —— 真平台只在自家域名工作
- 签名 offer 字段含你的 NFT、consideration 字段是 0 wei 或极低数值
- 看到 conduitKey、orderType、offerer 字段看不懂 —— 用 Rabby / Pocket Universe 解析
- 活动页让你 sign to claim points / bonus —— 真平台不靠签名发积分
- 弹窗里 spender 不是 Seaport 1.6 / Blur ExchangeV2 的固定地址
已经签了之后只能做这些
Bid 类签名签出无法撤销。立刻把所有 NFT 转到新地址 —— 让攻击者拿到签名时你旧地址已经清空。按《私钥泄露应急 · 五步抢救流程》第三步 P4 优先级处理。
OpenSea / Blur 后台举报被盗 NFT,平台会标记为 stolen item 限制二级流通。链上分析机构(Chainalysis / MistTrack)同步提交,万一攻击者把 NFT 挂中心化平台还能拦住。
「我蹲了 Blur 三年,签过几千笔 Bid,看一眼字段就 Sign。这一次让我彻底改了习惯:每次签名前装 Rabby 把字段翻译成中文,宁可慢 5 秒也不愿再损失 18 万。」