永续 DEX 上的 Drainer 签名:原理与识别

2026年5月6日

Drainer 攻击已经成为 DeFi 生态中损失金额最大的攻击类型之一。Chainalysis 的最新研究 显示,Drainer 即服务(Drainer-as-a-Service)生态已经高度产业化,攻击者只需订阅现成的工具包,就可以针对永续 DEX 用户发动精密的签名欺诈攻击。

对于在 Hyperliquid、dYdX、GMX 等平台活跃交易的用户,理解 Drainer 签名的工作原理是自我保护的第一步。

什么是 Drainer 签名攻击

Drainer 签名攻击的核心是通过社会工程学或钓鱼手段,诱导用户签署一个看似无害、实则授权资产转移的签名请求。

与直接盗取私钥不同,Drainer 攻击利用的是以太坊生态中合法的授权机制:

ERC-20 代币的 Approve 功能(允许第三方地址转移指定数量代币)

EIP-2612 Permit 签名(通过离线签名完成授权,无需链上 Approve 交易)

EIP-712 结构化数据签名(用于授权各类结构化操作)

EIP-4337 账户抽象 相关的批量操作授权

这些机制在正常使用中是合理且必要的,但 Drainer 攻击者利用它们的技术复杂性,将恶意授权伪装成正常的 DApp 交互请求。

永续 DEX 场景下的特殊风险

高频交互创造高风险窗口

永续合约交易者频繁与 DEX 合约交互——开仓、加仓、调整保证金、领取资金费率等操作都需要签名。高频操作容易让用户对签名请求产生习惯性认可,降低对异常请求的警惕。

大额 USDC 授权是主要攻击目标

在 Hyperliquid 等永续 DEX 上,用户通常需要将大额 USDC 授权给 DEX 合约。Drainer 攻击者会在钓鱼页面中伪造一个类似的授权请求,将目标地址替换为攻击者控制的地址。

如果用户习惯性地确认"USDC 授权"而不仔细核对目标合约地址,就可能将大量资金授权给攻击者。

Permit 签名的高危性

EIP-2612 Permit 允许用户通过链下签名(而非链上 Approve 交易)完成代币授权。这意味着:

签名过程不产生链上交易,不消耗 Gas,用户的钱包中不会有对应的"授权记录"

攻击者获得签名后,自己提交链上交易完成授权,直接将代币从用户钱包转出

从用户视角看,在资产被转移之前,他们甚至不知道已经签署了一个有效的授权

Permit 签名在外观上与普通的 DApp 登录签名(如 Sign-In With Ethereum)非常相似,这使其成为最难被普通用户识别的 Drainer 手段之一。

Drainer 签名的技术解剖

一个典型的 EIP-712 Drainer 签名请求包含以下字段:


类型:EIP-712 结构化数据签名

域(Domain):

name: [被仿冒的协议名称]

version: 1

chainId: 1(或 42161 等目标链)

verifyingContract: [Drainer 合约地址,伪装成 DEX 合约]

消息:

owner: [受害者地址]

spender: [Drainer 攻击合约地址]

value: [用户余额的全部或大部分]

deadline: [未来某个时间戳]

nonce: [自动获取的当前 nonce]

如果用户的钱包以人类可读的方式展示这些字段,就可以发现 verifyingContract 和 spender 字段与正规协议的合约地址不符。但如果钱包只显示原始的十六进制数据,普通用户几乎不可能识别这种差异。

如何识别 Drainer 签名:实操清单

在签名任何请求之前,检查以下内容:

verifyingContract 地址:与你正在使用的 DEX 的官方合约地址是否完全一致(包括每一个字符)

spender 地址:对于 Permit 类型签名,spender 应该是你明确知道并信任的合约

value 字段:是否请求了超过此次操作需要的金额(特别是接近你全部余额的数字)

deadline 字段:是否是一个合理的时间范围(正常操作通常是几分钟内,而非几年后)

操作来源:你是否主动在官方网站发起了这个签名请求,还是它突然弹出

OneKey 的 Drainer 防护机制

OneKey 钱包 在对抗 Drainer 攻击方面有专项功能:

EIP-712 签名内容可视化:自动解析结构化签名数据,以友好格式展示 owner、spender、value 等关键字段,而不是原始十六进制

合约地址风险标注:对已知的恶意合约地址进行标记提示

交易模拟预览:对于链上 Approve 操作,在用户签名前模拟执行结果,展示"你将授权 X 数量的 USDC 给 Y 地址"

大额授权警告:当请求授权的金额超过当前持仓的特定比例时,触发额外的警告提示

开源代码验证:OneKey GitHub 仓库 允许安全研究人员独立验证防护逻辑的实现

硬件钱包在 Drainer 防护中扮演关键角色——攻击者无法在不经过设备屏幕物理确认的情况下自动化签名,而硬件设备屏幕展示的内容是无法被软件层面的恶意代码篡改的。

此外,定期使用 Revoke.cash 审查你在各 DEX 上留下的历史授权,及时撤销不再使用的授权,可以有效减少 Drainer 攻击的可利用面。

已知的高风险 Drainer 攻击载体

常见问题

Q1:Permit 签名和普通授权(Approve)有什么区别?

答:Approve 是链上交易,需要 Gas,执行后可在链上查到授权记录。Permit 是链下签名,不耗 Gas,签名后由对方提交链上操作,在你的钱包活动历史中没有"发出"的记录,因此更难被发现和及时撤销。两者对资产安全的威胁同样严重。

Q2:如果我已经签署了可疑的签名,应该怎么办?

答:如果是 Approve 类型,立即前往 Revoke.cash 撤销授权。如果是 Permit 类型,撤销无效(因为授权已经在链下完成),应立即将相关代币转移到新地址。行动速度极为关键,通常只有几分钟的窗口期。

Q3:使用 OneKey 硬件钱包后,Drainer 攻击还能成功吗?

答:硬件钱包显著增加了 Drainer 攻击的难度,因为每次签名都需要用户在设备屏幕上确认,且设备屏幕展示的内容无法被电脑端恶意软件篡改。但如果用户在不理解内容的情况下盲目在设备上确认,攻击仍然可能成功。防护效果的上限取决于用户的理解程度。

Q4:Drainer-as-a-Service 是什么?

答:这是一种将 Drainer 攻击工具包商业化的服务模式,攻击者无需自己编写代码,只需订阅并按成功盗取金额分成,即可部署针对目标平台的 Drainer 攻击。这种商业模式大幅降低了攻击者的技术门槛,导致 Drainer 攻击频率在近年大幅增加。参见 Chainalysis 研究报告。

Q5:永续 DEX 平台自身会防止 Drainer 攻击吗?

答:合法的永续 DEX 平台会在其官方前端对已知恶意地址进行过滤,但攻击者通常在自己部署的钓鱼页面上操作,绕过了平台前端的防护。钱包层面的防护(如 OneKey 的签名解析)是唯一在所有访问场景下都有效的保护层。

结语:读懂每一个签名,才是真正的安全

Drainer 攻击成功的根本原因是用户在不理解内容的情况下确认了签名请求。技术工具可以帮助你更容易地读懂签名,但最终的防护来自你对每一个签名请求的主动审核。

下载 OneKey 钱包,用其签名解析和交易模拟功能武装自己,并通过 OneKey Perps 在去中心化永续合约市场中以更高的安全意识交易。

风险提示:本文仅供教育参考,不构成投资建议或安全保证。Drainer 攻击手段持续演变,本文所述的防护方法不能保证提供完整保护。链上资产一旦被盗通常无法追回,请在充分了解风险的基础上谨慎操作。加密货币交易具有高度市场风险,杠杆交易可能导致超过本金的损失。

使用 OneKey 保护您的加密之旅

View details for 选购 OneKey选购 OneKey

选购 OneKey

全球最先进的硬件钱包。

View details for 下载应用程序下载应用程序

下载应用程序

诈骗预警。支持所有币种。

View details for OneKey SifuOneKey Sifu

OneKey Sifu

即刻咨询,扫除疑虑。