MetaMask 签名安全完全指南封面:识别 eth_sign 与 Permit 签名钓鱼,守住钱包
Web3 安全 • • • 作者:CoinVado Research • 15 阅读 • 8 分钟

MetaMask 签名安全完全指南:识别 eth_sign 与 Permit 签名钓鱼,守住钱包(2026)

钱包什么都没点就被清空?多数不是私钥泄露,而是你在 MetaMask 里签了一个看不懂的签名。本文讲清签名和交易、授权的区别,逐一拆解 eth_sign、personal_sign、signTypedData、Permit 四种签名与风险等级,附 $44 万 USDC、$650 万钱包被清空案例、签名前必查清单与中招后的应急处理。

TL;DR

钱包被清空,多数不是因为私钥被偷,而是你在 MetaMask 里签了一个看不懂的签名。 签名(sign)和授权(approve)、交易(send)是三种完全不同的操作——其中最容易被忽略、也最容易丢钱的是签名:尤其是 Permit 这类”链下签名”,它不用付 gas、不在交易历史里留下任何记录,攻击者拿到签名后自己上链就能把币转走,受害者直到币没了还以为是”什么都没点”。据 CertiK 数据,2025 年钓鱼攻击造成约 7.23 亿美元损失、涉及 248 起事件1。守住钱包只需要一句话:任何弹窗里读不懂的内容,一律不签。下面先讲清签名和授权、交易的区别,再逐一拆解四种签名与风险等级,最后给一份”签名前必查清单”和”中招后怎么办”。

先分清三种「同意」:交易、授权、签名

新手最容易在这里栽跟头——MetaMask 弹出的每一个确认框,本质上是三种不同的东西。分清它们,你才知道哪一步把资产的处置权交了出去。

操作你在做什么会留下记录吗能不能撤销
交易(send)主动发起一笔转账/合约调用,要付 gas✅ 交易历史可见❌ 上链即不可逆
授权(approve)链上交易,允许某合约在额度内动用你的代币✅ 交易历史可见✅ 可撤销(付 gas)
签名(sign)给一条消息做数字签名,通常不付 gas⚠️ 可能无任何记录⚠️ 看类型,多数难撤销

一句话记住:授权是”给了额度、上链可查、能撤销”;签名是”给了指令、可能无痕、难撤销”。 而签名钓鱼最危险的地方,恰恰在于它绕过了”撤销授权”这整套防御——因为链下签名在被执行前,你根本看不到一条可撤销的记录。

想先搞懂”授权”(approve)怎么撤销,看这篇 DeFi 授权安全:如何撤销不再使用的合约授权;本文专注讲更隐蔽的”签名”这一面。

什么是签名?为什么「签个字」就能丢钱

签名(Signature)是你用私钥对一条消息做数字签名,证明”这个地址同意这条消息的内容”。 它本身往往不产生链上交易、不用付 gas,所以很多人会掉以轻心,把它当成一次普通的”登录”或”连接钱包”。

问题在于:这条消息的内容可以是任意的——它可以是”允许某合约动用我的 USDC”,也可以是”把 10 个 ETH 转给某地址”。攻击者要做的,只是把一段恶意的内容包装成你懒得读、或者读不懂的形式,诱导你点下”签名”。

这跟”授权钓鱼”最大的区别在于可察觉性:

  • **授权(approve)**是一笔链上交易,你可以在钱包交易历史、区块浏览器里看到它,事后还能撤销。
  • **签名(sign)**尤其是 Permit 这类,是纯链下的,你的交易历史里没有任何痕迹,你甚至不知道自己在什么时候”授权”了谁。

这就是为什么那么多受害者会说”我什么都没做,币就没了”——他们确实没做任何链上交易,只是签了一次名。

四种签名类型与风险等级

MetaMask 里可能出现的签名请求,风险从高到低,认清这四种基本就够了。

签名类型弹窗长什么样风险处理
eth_sign一串十六进制原始数据,看不懂🔴 极高一律拒绝
Permit / Permit2看起来像”授权”,但无 gas、无交易记录🔴 极高核对 spender/金额/deadline
personal_sign一段可读文本或 JSON🟡 中逐字读内容
signTypedData(EIP-712)结构化字段,相对可读🟡 中核对关键字段

eth_sign 是最危险的盲签。 它允许你对任意原始数据签名,MetaMask 弹出的往往是一串十六进制。攻击者可以把”把代币转给我”的指令打包成这串数据诱导你签,然后在链上执行。MetaMask 对 eth_sign 有红色风险提示,主流钱包(imToken、OneKey)已经直接禁用或强警示。只要弹窗里出现 eth_sign,一律拒绝,没有例外。

personal_sign 和 signTypedData 相对可读,会显示文本或结构化数据,但攻击者同样能用”盲签”套路:把关键字段藏在一堆你懒得读的字段里。判断标准不是”是不是官方”,而是”弹窗里写的 spender、金额、deadline 我是不是都读懂了”。

Permit(EIP-2612)是近年损失最惨重的一类,下面单独讲。

Permit 与 Permit2:最难察觉的链下签名钓鱼

Permit 允许你只用一次链下签名就完成代币授权,不用付 gas、也不会在交易历史里留下记录——这正是它危险的地方。 受害者往往以为”我只是登录了一下”或”签了个字领空投”,实际上已经把代币的处置权交给了攻击者。

攻击流程是这样:攻击者诱导你签下一条恶意 Permit 签名 → 攻击者自己支付 gas 在链上调用 permit 完成授权 → 再调用 transferFrom 把你的代币转走。全程你没有任何链上交易、没有任何 gas 支出、交易历史干干净净,直到币没了才发现。

真实案例印证了这类攻击的严重性:

  • 一名用户因签署恶意 Permit 签名损失约 44 万美元 USDC2;
  • 另一个持有 4 年多的老钱包,因 Permit 签名陷阱被清空约 650 万美元的 stETH 与 aEthWBTC3。

此外还有 Permit2——Uniswap 推出的共享授权合约。如果你此前在 Uniswap 上授权过 Permit2,攻击者只需再钓你一个签名,就能借 Permit2 的 permit 和 transferFrom 把你的币转走,等于把”一次授权”变成了”永久的签名入口”。

这类攻击能被规模化,背后是一条成熟的黑色产业链——DaaS(Drainer-as-a-Service,钱包清空即服务):开发者把恶意合约、钓鱼页面模板、自动扫荡脚本打包成工具包,出租给不懂技术的骗子,按盗取金额分成(通常 20–30%)。已知的服务有 Inferno、Pink、Angel、Monkey、Venom 等。这也是为什么签名钓鱼的”点击率”和损失能持续攀升——它把技术门槛降到了零。

签名前必查的 5 件事

养成一个习惯:任何一次确认前,先停一秒,逐项核对下面五条。

  1. spender(授权对象)地址——是不是你要交互的协议官方合约?陌生地址直接拒绝。
  2. 金额——是”有限额度”还是”无限(unlimited)“?能设有限就设有限。
  3. deadline(有效期)——合法的 Permit 通常带一个截止时间,没有截止时间的要多留个心眼。
  4. 是不是 eth_sign——出现 eth_sign 盲签一律拒绝。
  5. 有没有索要助记词/私钥——任何要求输入或”验证”助记词的,都是骗子,MetaMask 官方永远不会要。

一句话判断标准:如果你读不懂这个弹窗在说什么,就不要签。 宁可错过一次空投,也不要签下一个看不懂的签名。

钱包被签名钓鱼清空后怎么办

先判断是哪种情况,处理方式完全不同。

情况 A:只是签了 Permit/授权类签名,助记词没泄露。 立刻去 Revoke.cash 或区块浏览器查看并撤销相关授权,然后把剩余资金转到一个新钱包。这类攻击越早撤销,剩下的钱越安全。

情况 B:助记词/私钥已经泄露(出现扫荡机器人)。 如果发现”你刚转进去就立刻被转走”,说明私钥已泄露,撤销授权没用——攻击者用你的私钥就能操作一切。这时立刻放弃这个钱包:新建一个钱包,把还没被转走的资产(如有)转过去,旧钱包永久停用。助记词安全详见助记词与私钥安全指南。

情况 C:怀疑签了 eth_sign 或 EIP-7702 委派。 eth_sign 盲签可能是一次性的转账指令,EIP-7702 甚至能一次签名就把你整个地址委派给攻击者合约。这类情况最稳妥的做法是直接把剩余资产迁到一个全新钱包,不要试图在旧钱包上补救。

需要说清楚:一旦币已被转走,追回基本无望。 区块链执行的是你自己签名过的指令,专家普遍认为找回概率”趋近于零”。所以签名安全只能靠事前防御,不能靠事后补救。

长期防护:把签名风险降到最低

把下面四条固化成习惯,就能挡住绝大多数签名类盗窃:

  1. 独立热钱包 + 硬件钱包分离。 用一个只放少量资金的钱包去连各种 DApp(打新、领空投、薅羊毛),大额资产放在硬件钱包(Ledger/Trezor)或冷钱包里,日常热钱包里只留你输得起的金额。钱包分层怎么选,看加密货币钱包完全指南。
  2. 养成”读弹窗”的肌肉记忆。 每次签名、授权、交易前,把上面”5 件事”过一遍,读不懂就拒绝。
  3. 用支持交易模拟的钱包。 部分钱包会在签名前模拟并翻译成”人话”(如”这次签名将授权 X 合约动用你全部 USDC”),优先使用这类钱包或开启相关功能。
  4. 永远从官方入口进入。 手动输入或收藏网址,不点搜索结果里的广告、不点私信/邮件里的链接——钓鱼网站是所有这些手法的第一落点。更系统的防钓鱼方法见加密货币防钓鱼完全指南。

如果你还没装钱包,先从MetaMask 钱包安装与安全教程开始。

常见问题 FAQ

钱包什么都没点就被清空了,是怎么回事?

多半是你之前签过一个看不懂的签名。签名钓鱼(尤其是 Permit)允许攻击者在链下拿到你的授权,之后再上链把你的币转走——整个过程没有交易记录、不用你二次确认。据 CertiK 数据,2025 年钓鱼攻击造成约 7.23 亿美元损失、涉及 248 起事件1。

签名和交易、授权到底有什么区别?

交易是你主动发起的转账,上链后不可逆;授权(approve)是一笔链上交易,允许某合约在额度内动用你的代币,可撤销;签名(sign)是给一条消息做数字签名,本身可能不产生链上交易,但可能把你的授权或转账意图交给别人。最容易丢钱的是签名——尤其是 Permit 这类”链下授权”。

Permit 签名是什么?为什么不用付 gas 也能被盗?

Permit(EIP-2612)允许你只用一次链下签名就完成代币授权,不用付 gas、也不会在交易历史里留下记录。攻击者诱导你签下恶意 Permit,再自己上链调用 permit 完成授权并转走代币。典型案件包括一名用户损失约 44 万美元 USDC、另一个老钱包被清空约 650 万美元的 stETH 与 aEthWBTC。

看到 eth_sign 应该怎么办?

一律拒绝。eth_sign 是对任意原始数据做盲签,弹窗往往是一串看不懂的十六进制,攻击者可以把”转走我的币”打包成这串数据诱导你签。MetaMask 对它弹红色风险提示,主流钱包已直接禁用或强警示。凡是出现 eth_sign,直接点拒绝。

已经签了可疑的签名,还能补救吗?

分情况。如果只是签了 Permit 授权类签名,立刻去 Revoke.cash 或区块浏览器查看并撤销该授权,再把剩余资金转到一个新钱包,越快止损效果越好。但一旦币已被转走,追回基本无望——区块链执行的是你自己签名过的指令,找回概率趋近于零。

撤销授权能防住签名钓鱼吗?

不能完全防住。撤销授权只能撤销你之前签过的链上 approve 授权,但签名钓鱼尤其是 Permit 是”链下签名”,在它被上链执行前你根本看不到一条可撤销的授权记录。真正的防线是签名前读懂弹窗、拒绝盲签,配合独立热钱包和硬件钱包分层存放资产。

怎么判断一个签名能不能签?

签名前逐项核对:①spender(授权对象)是不是你认识的协议官方合约;②金额是有限还是无限;③有没有 deadline 有效期;④是不是 eth_sign 盲签;⑤有没有索要助记词。任何一条对不上、或你读不懂弹窗在说什么,就拒绝。


延伸阅读

还没加密资产? 先在交易所买好币再提到自己的钱包。币安 Binance(邀请码 BINANBT)|欧意 OKX(邀请码 60895497)


免责声明:本文内容仅供学习参考,不构成投资建议。加密货币投资有风险,请根据自身情况谨慎决策。

Footnotes

  1. 来源:CertiK,2025 年 Web3 安全报告(钓鱼攻击损失与事件数),2026 年查询。 ↩ ↩2

  2. 来源:Yahoo Finance,What a $440,000 Hack Shows About the Rising Threat of Ethereum ‘Permit Scams’,2025 年报道。 ↩

  3. 来源:HTX News,Inside the $6.5M wallet drain,2025 年报道。 ↩

#MetaMask签名 #签名钓鱼 #Permit签名 #eth_sign #钱包被盗 #盲签 #授权钓鱼 #钱包安全

关于作者

CoinVado Research

CoinVado Research

CoinVado Research 是 CoinVado 数字资产研究团队,专注于加密货币教育、区块链技术普及及 Web3 生态研究。

研究方向
  • 加密货币基础知识
  • 数字资产投资教育
  • 区块链技术与应用
  • Web3 生态发展
  • 链上资产与钱包安全

如果您发现文章存在错误或有内容更新建议,欢迎通过 Telegram 联系我们

问买 USDT / 注册 / 提币?

加 QQ 一对一答疑,比翻文章更快。

QQ:2205140368已复制

加 QQ 好友