近日大量再质押、质押、空投用户仅仅只是在钱包点击了一个平平无奇的签名确认,没有Approve项,更没支付gas费,钱包资产就被清空了……这便是当下臭名昭著的Permit钓鱼签名攻击!

通常攻击者模仿官方推特、Telegram、邮件、Discord 回复或私聊用户用 Claim 空投、质押、退款、福利活动引诱用户点击钓鱼网站链接,然后在钱包通过“Permit”签名等将用户授权资产盗走,这是一种采用 EIP-2612 离线签名授权标准,允许用户无需拥有 Eth 来支付 Gas 费即可进行批准,能够简化了用户的审批流程,降低手动审批流程导致的错误或延迟的风险,但也成为了当前钓鱼攻击的常用方式。

什么是Permit签名

简单说,过去我们需要 Approve 后才可以将代币转给别的合约,但如果合约支持 Permit ,可以通过 Permit 离线签名,跳过 Approve 且无需支付 gas 的方式进行授权,进行授权后第三方就拥有了相应控制权,随时可以转走用户授权的资产。

Alice 使用链下签名向协议进行授权,协议调用 Permit 上链拿到授权,然后可以调用TransferFrom 转移相应资产。

  1. 交易中附加 permit 签名进行交互,无需预先 approve

  2. 链下签名,链上操作由被授权地址操作,只能在被授权地址查看授权交易

  3. 要求将相关方法写入ERC20代币合约内,EIP-2612之前发布的 token 不支持

钓鱼攻击者伪造好钓鱼网站后会利用Permit签名获取用户授权,Permit 签名通常包含了:

Interactive:交互网址

Owner:授权方地址

Spender:被授权方地址

Value:授权数量

Nonce:随机数(防重放)

Deadline:过期时间

用户一旦签署了 Permit 签名,Spender 就可以在 Deadline 内转移相应 Value 的资产。

如何防范Permit签名钓鱼攻击

1、不要点击任何陌生、不信任的链接,始终要反复确认正确的官方渠道信息。

2、打开任何网站如果唤醒钱包签名确认弹窗,不要着急点确认,耐心仔细的阅读 Singnature request 上方出现的交互网址和签名内容,一般出现陌生网址和 Permit 包含 Spender 、Value 的 Permit 信息,直接点击【拒绝】可避免资产损失。

3、只有登录注册时唤醒的 消息签名 弹窗才是安全可以点击确认操作,样式如下: