大门安全课 02|Gate & OneKey:如何防范钱包恶意授权与地址投毒
核心要点
- 我们邀请开源硬件钱包品牌 OneKey 与 Gate 安全团队,从钱包和交易平台两个视角,来聊一聊链上钱包授权和地址投毒的安全问题。
- 所以我们建议用户在签名前要逐项确认授权对象、资产、额度和有效范围,只要有一项说不清,就不要签。
- Gate 安全团队:这类场景和上一期讲的账号被盗不同:如果攻击者手里拿的是

Gate 特别策划《大门安全课》栏目,针对不同类型的加密安全问题进行专期解答。我们从发生在用户身边最真实的案例出发,联合安全领域的专业机构,由平台方与安全方两个视角进行双重分享,由浅入深地梳理安全规则,在科普用户安全教育的同时,帮助用户从自身开始建立起真正有效的防线。
半年前,你为了领一个空投,在某个页面上点了「确认」。弹窗里是一串看不懂的字符,你签了。活动结束,你关掉网页,后来还卸载了那个应用,甚至换过一次电脑。
今天,你钱包里的 USDT 不见了。你的私钥没有泄露,助记词一直锁在抽屉里,密码也从来没告诉过任何人。那么问题来了,钱是在哪个环节出了问题?
这是 Gate 特别策划《大门安全课》的第二期。我们邀请开源硬件钱包品牌 OneKey 与 Gate 安全团队,从钱包和交易平台两个视角,来聊一聊链上钱包授权和地址投毒的安全问题。
嘉宾简介
OneKey:成立于 2019 年,是全球知名的开源硬件冷钱包与 App 钱包品牌之一,从始至终秉持着完全开源的硬核理念。其软硬件核心代码完整开源在 GitHub 供社区审查,并均通过 SlowMist 和 Offside Labs 的安全审计,得到了亿万资产的信赖,以及顶级机构的融资支持与采用。
OneKey App 覆盖桌面端、移动端与浏览器扩展,可独立作为软件钱包使用,也可连接 OneKey 硬件钱包,并通过安全芯片、离线签名、交易解析、风险提示与明文签名等能力,帮助用户在不交出私钥和助记词的前提下管理多链资产。
Gate 安全团队:大家好,这是《大门安全课》的第二期。Gate 安全部门负责平台账户、交易与资产安全体系的建设,同时也长期处理用户的异常账户申诉与协查请求。
Gate 成立于 2013 年,是行业内首家推出 100% 储备金证明的交易平台,目前服务全球超过 6000 万用户。安全对我们而言不是一个附加功能,而是这门生意能否成立的前提。我们希望通过《大门安全课》这个系列课程,把用户可能遇到的这些真实风险背后的共同机制讲清楚。
Q1. 链上钱包为什么不需要拿到私钥,也能转走资产?
OneKey:私钥决定签名权,授权则把某项操作权限交给合约或地址。很多授权的本意是好的,能够让用户节省 Gas,减少重复上链的操作,但是这也给攻击者提供了便利。
你此前签过的授权,等于允许别人动用这些资产。以以太坊等 EVM 网络上的 ERC-20 代币为例,使用兑换、借贷等应用时,用户经常需要先做一次 Approve,也就是授权。它允许指定的地址或合约,在一定额度内使用你的某种代币。授权生效后,对方就可以调用 transferFrom 转走代币,不需要每次再请你确认。
举个例子,你准备兑换 100 USDC,实际给出的却是无限额度授权。交易结束后,剩余授权可能仍然有效。被授权方如果是攻击者,或者相关合约后来出现可被利用的漏洞,风险就不再局限于那次兑换的 100 USDC,而可能波及这个地址里更多的 USDC。
NFT 也有类似机制。setApprovalForAll 通常允许对方管理你在同一 NFT 合约下持有的全部 NFT,而不只是当前准备出售的那一枚。
所以我们建议用户在签名前要逐项确认授权对象、资产、额度和有效范围,只要有一项说不清,就不要签。更重要的是,要使用有签名解析能力的钱包,理解你要签名的东西是什么。
Gate 安全团队:OneKey 讲的机制很细致了,我们想补充的主要是用户认知上的偏差,因为它是这类风险最根本的来源:很多用户把「签名」理解成了「确认」。
在传统互联网里,点一次确认就是同意这一次操作,操作结束,权限也就结束了。但链上的授权签名不是这个逻辑。签一次之后,对方在额度范围内可以随时、多次、无需你再次确认地转走资产。用户签下的不是一笔交易,而更像是一份长期有效的委托书。
这里还有一个更隐蔽的差别。Permit 和 Permit2 属于链下签名,它不产生链上交易,不消耗 Gas,在钱包里的弹窗往往也只显示一串看不懂的字符。用户的直觉是「不花钱的操作应该没什么风险」,而实际上这类签名的杀伤力和链上授权完全一样。
具体到 Gate 的工具上,陌生合约别急着连。可以先把合约地址丢进 Gate AI 的合约审计,让它出一份结构化风险报告,常见的所有者权限、黑名单、增发、转账税这类坑会先标出来,覆盖 57 种以上漏洞类型。到签名那一步,看清授权的是哪个代币、多少数量、哪个项目,支持所见即所签,用完及时取消授权。
Q2. 普通用户最常见的诱饵有哪些?看到这类页面时,怎样判断该不该连接钱包?
OneKey:常见诱饵往往围绕两种情绪:让你觉得有便宜可占,或者让你担心不操作就会有损失。前者是空投、白名单、免费铸造、退款补偿;后者是账户异常、安全升级、代币迁移、资产即将被冻结。包装可以不同,最后都会把你引向一个需要连接钱包、签名或转账的页面。
我们建议用户使用有网页安全检测能力的钱包,一般官方页面都会有认证,没有认证或者有钓鱼警报的就不要连接。
而连接钱包通常只是起点,后续签名才会产生具体权限。先核对完整域名和操作目的,再看合约、方法、授权额度与 Spender。领取一项奖励,却要求开放无关资产的无限额度,应当立即退出。无法解析的十六进制数据、不明 EIP-712 消息和持续催促,也值得警惕。
测试陌生 DApp 时可使用隔离的小额钱包,长期储蓄钱包尽量不连接项目。
Gate 安全团队:从我们处理的案例看,入口的风险往往比页面本身更高。也就是我们在第一期《大门安全课》重点聊到的链接不能乱点,特别是来自私信、群聊、搜索引擎广告位的链接,是最常见的钓鱼网站三个来源。搜索广告位这条要特别强调,很多人默认搜索结果第一条就是官网,但广告位是可以买的,这是钓鱼站最常用的引流方式之一。
虽然连接钱包这个动作本身是低风险的,但并不代表完全 0 风险。随着黑客的技术手段升级,在许多链上钱包被盗的案例中,已经有不少都是进入钓鱼盗版网站后没有签名,只是连了钱包资产就被盗的情况,所以用户在前期点击网址这一步一定要谨慎再谨慎。
比较可靠的做法是把常用应用加进浏览器书签,此后每次从书签进入。这个习惯能规避掉大部分导流类攻击和假冒的官网页,这是对用户来说成本最对的防控成本。这里也再提醒一次:攻击者经常拿交易平台的信用给自己背书。他们会说「Gate 已经上线该代币」「Gate 正在进行空投」,用平台的名义让一个空气项目显得可信。
这种时候判断标准其实很简单:Gate 的所有官方公告都会在官网公告页同步。如果一个消息只在某个社交账号出现、官网查不到,那它大概率有问题。这个判断不需要任何技术知识,也不需要用户会看合约。
如果用户收到的是自称来自 Gate 的邮件、短信或私信,可以在官方验证渠道上查询这个域名或联系邮箱是不是我们的,这个动作只需要十几秒。另外,用户可以在账户里设置一串自己的防钓鱼码。设置之后,所有 Gate 发出的邮件都会带上这串字符。还没有设置的用户,建议先去安全设置里开启。
Q3. 地址投毒是怎么骗用户转错地址的?大额转账前必做的核对动作是什么?
OneKey:它利用的是一个很常见的习惯:从交易记录里复制地址,再只看一眼开头和结尾。
攻击者会根据目标常用地址,批量生成首尾相似的地址,再发送零金额或极小额代币,让假地址混进交易记录。很多人转账时只核对开头和结尾,或者直接复制「最近地址」,钱就会发给攻击者。
最重要的防护动作,是不要把交易记录当作可信的收款地址簿。向交易所充值,从已经核实的官方充值页面取得地址;向他人付款,通过可信渠道重新确认。地址的来源要可靠,粘贴之后也要核对完整字符,而不是只看首尾几位。
大额转账建议先做小额测试,并让收款方确认到账,或者在自己的目标账户里核实。正式转账时,仍然要再次核对完整地址。第一笔测试成功,不代表第二次复制、粘贴和确认就可以省略检查。常用地址可以在核实后保存到地址簿或白名单中。
OneKey 等 App 钱包都会配有相关检测,对于错误复制,一般都会提醒「这是首次转账」「相似地址警告」,可以帮助用户快速发现这是一次投毒。
Gate 安全团队:这一题和交易平台的关系比很多人想的更直接,因为充值和提现恰恰是地址投毒最高发的两个场景。
先说充值。OneKey 提到的那条原则我们想再强调一次:充值地址一定要从平台的官方充值页面现取,不要从任何社交软件的历史记录里复制。也一定要警惕手机安装的键盘软件是否有安全问题,有许多案例都是因为键盘软件出问题神不知鬼不觉替换了用户的转账和充值地址,导致资金被盗的情况。
提现这边,Gate 有两个东西建议直接用起来:一是地址簿,常用地址核实后存进去,以后从簿里选,少一次手滑粘贴;二是 API 提现只能提到地址簿里已有的地址,程序化场景里没人盯屏,这道限制等于强制多一次人工确认。新加的提现地址还有 24 到 48 小时冷静期,投毒贴错地址时也能多一截发现错误的窗口。
Q4. 钱包授权为什么要定期复查?撤销授权时要注意什么?
OneKey:因为一次操作结束了,授权未必结束。断开钱包连接、关闭网站,甚至卸载钱包,都不会自动撤销已经生效的链上授权。如果给过某个合约无限额度,它可能在你不再使用这个项目之后,仍然保有相关权限。未来合约出现可被利用的漏洞,闲置授权也可能让钱包里的资产受到影响。
