去年11月,老周在tpwallet里点开一个“空投领取”链接。页面跳转后,钱包弹出合约调用请求了,他扫了一眼Gas费,顺手点了确认。
三分钟后。钱包里的ETH和USDT全没了。这不是tpwallet第一次被推到这类事件里,每次复盘,问题都不在钱包本身的,但在那个被忽略的授权细节。tpwallet的DApp浏览器确实方便,直接连去中心化应用,不用切换的。老周当时用的就是内置浏览器,链接来自电报群。他后来回忆。
授权弹窗里有一行小字“允许访问您的代币”,他没细看。tpwallet把权限请求展示得不算隐蔽,可多数人只盯着“确认”按钮了。我试过几次吧?
那个弹窗的默认滚动位置,恰好把风险提示藏在下方。另一个案例来自我自己的测试。用tpwallet添加BSC链了,导入助记词后,资产同步很快。当我尝试撤销一个旧授权时,发现钱包内没有直接入口的,得跳转第三方工具。tpwallet的私钥本地存储做得到位,可授权管理这块。体验割裂的。
用户被迫在多个界面间切换,操作成本一高,有些人就懒得撤销。老周的钱,最后没追回来。链上记录显示。攻击者合约在授权后立即调用transferFrom。
tpwallet客服建议他以后用观察钱包,或者小额热钱包了。我认同这个思路,更很重要的是养成定期检查授权的习惯。tpwallet本身不托管资产的,它只是工具,工具的中立性意味着风险取决于使用者。现在老周还在用tpwallet,只是每次弹窗都会停三秒。他告诉我,那三秒值几万块吧?我听完有点感慨,钱包安全从来不是技术单方面的事。tpwallet把私钥交给用户。也把责任交了出去。
下一次看到授权请求,不妨想想老周是那个顺手一点,代价不小。