Day 0 · 会议周边酒会
2025 年秋天,新加坡一场大型加密会议期间,晚上 8 点有一场周边酒会。香港来的 KOL(这里称 R)在 4 小时内收了 40 多张名片 —— 一半是 VC、一半是项目方、一小撮是真正想结识的开发者。他把名片塞进胸前西装口袋,准备回酒店再整理。
Day 0 当晚 23:40 · 酒店房间
R 把那一摞名片倒在桌上分类。其中一张特别醒目 —— 黑色烫金背景、印着「Genesis Drop · Pre-TGE Allocation for OG Holders · scan to claim」、右下角一个 QR 码。他不记得是谁给的,但卡片设计比其他都精美,估计是某个新项目方撒网。
他扫了那个 QR。手机打开 genesis-drop[.]xyz —— 页面美观、文案专业、有 audit by Quantstamp 的徽章、有 Discord 链接、有 X 账号(4 万粉丝)。页面说他作为某 OG 列表上的钱包可领取 2.5 万枚 GDROP token,按当前预估市值约 5 万美元。他连 MetaMask、点 Claim、签了一个 EIP-712 签名 —— 签名内容是英文的 Permit2 PermitBatch 结构(这几种币他之前在 Uniswap 用过,早就授权给了 Permit2 合约),他扫了一眼觉得「看起来像批量授权 claim」就 Confirm 了。
Day 0 当晚 23:42 · 钱包清空
签完 90 秒后他刷新 Etherscan,钱包里的 WETH、USDC 等几种 ERC-20 代币通过 Permit2 被扫走。等值 18 万美元。这一签不是「批量 claim」,是让攻击者在签名有效期内提走签名里列出的那几种 token。Permit2 让已经授权给 Permit2 合约的多个 ERC-20 用一个签名批量转出 —— 普通用户根本无法在签名 UI 里看清楚每一个 token 的限额。
Day 1 · 才意识到那张卡片是谁的
R 第二天托会场方查了监控,看到那张卡片是一个挂着假胸牌的男人在酒会开场前 30 分钟塞给他的 —— 胸牌上印着一家真实 VC 的名字,但人对不上。攻击者用了一个真 VC 的名字混入。这种攻击的精妙处是它「看起来不可疑」:物理名片有「实体感」让你下意识觉得真实、QR 码看不见 URL 直到扫开、加密圈空投太常见你不会怀疑、加上一张真 VC 的胸牌就完成「场内身份」的伪装。
会场挡不住的,以及 NFC 变种
攻击者会以「投资人 / 项目方代表」身份混入,会场很难完全过滤混进来的人,参会者自己保持警惕仍是第一道防线。
还有一种 NFC 变种:攻击者用 NFC tag 代替 QR 码 —— 你手机靠近某张「卡片」就弹出链接,点一下就进钓鱼站,比 QR 还少一步主动操作。应对方法:会议期间别拿手机去碰陌生卡片。iPhone 没有关闭后台 NFC 读取的开关,读到标签只弹通知,不点就不会打开;Android 可在快捷设置里关 NFC。
- 线下收到陌生人塞的「空投 / Claim」卡片 —— 默认假,没有正经项目方这么发空投
- 卡片 URL 不是已知项目官网 —— 后缀本身定不了真假,要看完整域名
- 卡片宣称 OG / pre-TGE / community allocation 等让你有归属感的标签
- QR 码进的页面要求连钱包 + 签名 —— 真空投领取是一笔调用领取合约的交易,不会让你签 Permit / PermitBatch 或 setApprovalForAll
- 卡片印刷质量过分精美 —— 真项目方不会比攻击者更舍得花钱印名片
签完后立即按《私钥泄露应急 · 五步抢救流程》—— Permit2 签名能处理:上 revoke.cash 撤掉这些 token 对 Permit2 合约的授权,再把资产转到新地址,旧地址别再用。把那张卡片实物保留,向会议主办方报告,同时把那个域名提交到 Chainabuse(chainabuse.com)/ ScamSniffer 等情报库。
会议参会前的 3 条预备 SOP 能挡掉大部分类似攻击:(1)会议期间手机带一个空钱包,主钱包 MetaMask 装在另一台不带到现场的设备上 —— 攻击者拿到的最坏结果是空地址的签名;(2)任何线下接到的 QR 码,扫码时只看相机预览里的完整网址、不点开,回去再用 VirusTotal 查过之后才访问;(3)会议结束第二天再处理收到的「空投 / claim 邀请」—— 时间窗口能让你大脑切换出会场那种警觉度低的环境。
另一个值得记录的细节是 Permit2 这个协议本身的设计悖论。Permit2 由 Uniswap 团队 2022 年推出,目的是让已经授权给 Permit2 合约的多个 ERC-20 用一个签名处理 —— 用户体验上更好,节省 gas。但同一个机制被钓鱼站滥用变成「一笔扫光」工具:用户在不知情签了 PermitBatch 之后,攻击者拿着这个签名去 Permit2 合约上链执行,就能在签名有效期内提走签名里列出的那几种 token。任何 EIP-712 签名 UI 出现「PermitBatch / PermitSingle」字样都默认拒绝,除非你 100% 确定在跟真协议交互。
这个案例的真正用法不是看完点个收藏,而是把识别要点那几条记进脑子里。下次类似场景出现时,让你 3 秒内识破。