旧坑新伤 —— 授权恶意合约被盗分析
内容提要
慢雾安全团队发现了几起由于授权引起的盗币事件,受害者在很久之前无意中点击了Approve授权,导致被盗。黑客目前已获利约20万美元。建议用户经常查看自己的授权情况,发现异常授权及时取消。
延伸解读
授权风险的长尾效应
本案中,受害者在2021年11月授权恶意合约,直到2023年12月才被盗,间隔长达767天。这说明授权一旦给出,若未取消,私钥持有者可能长期面临资金被转移的风险。即使项目早已停止运营,恶意合约仍可被调用。读者应意识到,授权不是一次性动作,而是持续存在的权限,需要像管理密码一样定期审查。
RugPull项目合约的持续威胁
恶意合约地址与Kingfund Finance有关,该项目在2022年1月卷款超300 WBNB后关闭官网和推特。但合约并未消失,仍留在链上。黑客利用该合约的权限,通过transferFrom转走用户授权过的代币。这表明RugPull项目即使跑路,其合约地址仍可能被后续利用,用户不能因项目方失联就认为授权自动失效。
黑客资金链路与追踪特征
黑客地址初始资金来自Tornado Cash转入的0.098 BNB,获利约20万美元,涉及多种代币,并使用过Venus、PancakeSwap等DeFi协议。另一案例中,恶意合约创建者将大部分获利资金转入Tornado Cash。这些特征显示攻击者注重资金混洗,但链上交易仍留下痕迹,慢雾通过Dune数据集扩展发现了更多受影响用户,相关地址已被MistTrack拉黑。
定期检查与取消异常授权
慢雾建议用户经常主动查看授权情况,可使用RevokeCash、ScamSniffer、Rabby等工具查询,发现异常授权及时取消。本案中,尚未取消对恶意合约授权的用户仍在持续被盗。读者应将授权检查纳入日常安全习惯,尤其对不再交互的旧项目,更应清理其合约权限,避免成为下一个长尾受害者。
Q&A
为什么很久以前授权过的合约还能盗走我的资金?
因为区块链上的授权(Approve)一旦生效,除非主动取消,否则会一直有效。黑客可以利用之前授权过的恶意合约,在任意时间通过 transferFrom 转走你授权过的代币。本文案例中,受害者在两年多前授权了一个恶意合约,黑客在 767 天后盗走了资金。
黑客是如何通过 Approve 授权盗走 USDT 的?
黑客调用恶意合约,先检查受害者地址的余额和对恶意合约的 Allowance,然后验证权限,最后恶意合约作为 msg sender 调用 USDT 的 transferFrom 函数,将受害者授权给恶意合约的 USDT 转移到黑客地址。
Kingfund Finance 是什么项目?和这次盗币有什么关系?
Kingfund Finance 是一个 RugPull 项目,在 2022 年 1 月卷款超过 300 WBNB(约 14.1 万美元)后关闭了官网和推特。本文中的恶意合约地址与 Kingfund Finance 相关,受害者曾授权该合约,导致资金被盗。
这次授权盗币事件中黑客获利了多少?
根据 MistTrack 分析,黑客地址已获利约 20 万美元,包括多种代币。黑客初始资金来自 Tornado Cash 转入的 0.098 BNB。
如何检查并取消钱包中不安全的授权?
慢雾安全团队建议用户经常主动查看授权情况,可以使用 RevokeCash、ScamSniffer、Rabby 等工具查询,若发现异常授权,请及时取消。
除了本文案例,还有其他用户受到类似恶意授权的影响吗?
是的,通过 Dune 数据分析发现,另一个用户在 2022 年 1 月授权了本文中的恶意合约,随后在 5 月又授权了另一个 RugPull 恶意合约,该恶意合约的创建者已将大部分获利资金转移到 Tornado Cash。