非托管 · 只读

授权如何掏空钱包

一项授权今天并不会转走你的代币,它赋予某个合约随时转移它们的长期权限。下面讲讲这项权限如何变成一次盗刷,以及如何抢先找出并撤销它。

免费扫描你的钱包 在 Telegram 上 24/7 全天候守护

仅需公开地址。无需连接钱包。无需任何签名。

授权究竟授予了什么

调用某个代币的 approve(spender, amount) 并不会转出任何东西。它会把一项权限写进代币合约:被授权方(spender)可以随时对你的余额调用 transferFrom,最高可达 amount,而无需你再签名。每一次兑换、mint 和跨链,在拉取它所需的代币之前都会索取一项授权。

为什么“无限”是默认的陷阱

大多数 dapp 会索取尽可能大的额度,好让你永远不必再为那个被授权方授权一次。这很方便,但它同时也是一张长期有效的空白支票:这个额度不会过期,不会随着你的花费而缩减,而且在你早已忘记这个 dapp 存在的那天,它依然和你签署它的那天一样大。

被授权方如何变得恶意

被授权方不一定从第一天起就是恶意的。它的合约可能在数月后被攻击,它的团队可能最终跑路,或者一个诈骗代币/农场可能从一开始就是恶意的,上述任何一种情况,都能让某人对每一个仍留有敞开额度的钱包调用 transferFrom,而无需任何新的授权。

在被利用之前就找出并撤销

扫描你的公开地址,列出各条公链上的每一项授权,无限授权额度以及未经验证或被标记的被授权方都会被高亮标出,同时还会显示每一项已经敞开了多久。在一项被遗忘的授权变成别人的发薪日之前,就在 revoke.cash 上把那些高风险的撤销掉。

常见问题

有一项授权,是不是意味着我已经被盗刷了?

不是。授权是一项长期权限,而不是一次转账。在被授权方真正调用 transferFrom 之前,什么都不会转移,这正是提前撤销之所以有效的原因。

我怎么知道哪些授权有风险?

对未经验证或未知合约的无限授权风险最高,其次是任何被标记为恶意的被授权方,或者你已认不出自己在用的那些。一次扫描会自动把这三种都呈现出来。

相关内容