Web3,这个被寄予厚望的下一代互联网愿景,以其去中心化、用户自主掌控数据(私钥)的理念,吸引着无数追求自由与公平的用户,在这片看似充满机遇的蓝海中,一个令人不安的现象正在悄然滋生并蔓延——“被授权盗取”,这听起来似乎是一个悖论,授权如何与盗取挂钩?但在Web3的世界里,由于智能合约的透明性与代码的强制执行性,用户的一次“授权”(Authorization),往往可能成为资产被“合法”转移的起点。
“授权”:一把双刃剑
在Web3生态中,“授权”(Approve)是一个核心操作,无论是使用去中心化交易所(DEX)进行代币交换,是将资产存入借贷协议赚取利息,还是与各种DeFi、GameFi项目交互,用户通常需要先通过钱包(如MetaMask)授权第三方合约(如DEX router、借贷池)可以调用并转移其持有的特定代币,这个设计的初衷是为了便利,避免用户在每次交互时都进行复杂的签名确认,提升用户体验。
理论上,授权是有限度的、有明确边界的,用户授权的代币种类、数量以及授权的对象,都应该是清晰可控的,在实践中,这种“信任”往往被滥用。
“被授权盗取”的几种典型形态
“Web3被授权盗取”并非指黑客直接破解钱包,而是利用用户在授权过程中的疏忽、信息不对称或智能合约的漏洞,让用户在“不知情”或“不完全知情”的情况下,“主动”授权了资产转移。
-
恶意合约的“钓鱼”授权: 这是最常见的手段,攻击者会制作看似正规、功能诱人的DApp(去中心化应用),例如高收益理财游戏、虚假NFT交易平台、空投领取页面等,当用户连接钱包并尝试使用时,这些恶意合约会诱导用户签署一个包含广泛授权的交易,这份授权可能允许合约调用用户钱包中的任意代币(通常包括主流代币如ETH、USDT、USDC等),并转移到攻击者指定的地址,由于用户在繁忙或贪图小利时,往往不会仔细阅读授权请求中的具体细节(即调用函数的参数和权限),一旦签名,资产便岌岌可危。
-
“无限授权”的陷阱: 某些DeFi协议在初始交互时,会要求用户进行“无限授权”(Infinite Approval),即允许合约调用用户钱包中该代币的全部数量,其理由可能是为了简化后续多次小额操作的手续,这无疑为协议方(如果协议被黑或作恶)或未来可能出现的漏洞留下了巨大隐患,一旦授权,用户对该部分代币的控制权实际上已经让渡,即使后来用户撤销授权(部分钱包支持),如果恶意合约已经利用该授权进行了恶意操作,也为时已晚。
-
升级代理合约的“后门”授权: 一些复杂的项目会使用代理模式,允许合约通过升级逻辑来更新代码,如果用户授权给的是一个可升级的代理合约,而合约的升级权限被恶意控制者获取,那么升级后的新合约代码可能会包含转移用户资产的恶意逻辑,从而实现“盗取”,用户当初授权的虽然是“合法”的合约,但升级后的“非法”行为却因之前的授权而获得了“通行证”。
-
跨链桥与跨协议交互中的“连带授权”: 在使用跨链桥或进行复杂的跨协议套利时,资金流动路径可能涉及多个中间合约,用户在授权A合约时,可能并未意识到A合约会进一步授权给B合约、C合约,形成一个授权链,如果其中任何一个环节的合约存在恶意或被攻破,用户的资产都可能被顺藤摸瓜地“合法”转移。
为何“被授权盗取”屡禁不止?