背景
近期,慢雾安全团队接触到几起由于授权引起的盗币事件,这些事件是最简单的Approve 授权导致的盗币,而关键点在于受害者是在很久之前无意中点击了 Approve 授权。好在区块链的特性 —— 雁过留痕,在大量链上数据中总能发现蛛丝马迹。
被盗案例分析
根据受害者提供的信息,被盗交易如下:
(https://bscscan.com/tx/0x59aef62a8cee79996ff2b44b723c97fbc0c6e2a0992c61dea0e65fcb2d78f608)
粗略一看,只能看出受害者地址 0x8CCb 被黑客地址 0xFf6F 盗走了 13,811 USDT。
这笔交易既不是链下 permit/permit2 签名方式,也不存在其他合约漏洞任意授权方式,更不是 create2 方式。
在我们排除了这些常见的手法后,发现这笔交易竟是最简单的 Approve 授权导致的盗币,而且是很久之前埋下的导火索。
通过分析之前的链上交易记录,发现被盗的关键点在于受害者曾在两年多前授权过一个合约地址 (0x3880285800a89AB3C4338bf455acdA3da6f8fA24),授权记录如下:
(https://bscscan.com/tx/0x018479875137e5eafcc183c5574cf9197ee14c7921b5f6796b385bb15e8bf96d)
授权交易及被盗转移交易的时间表列在下面,中间时间间隔长达 767 天:
2021 年 11 月 9 日,08:13:28 - 恶意授权给恶意合约地址交易;
2023 年 12 月 16 日,07:26:53 - USDT-BEP20 被非授权转移交易。
授权给恶意合约地址后,资金是如何被盗走的呢?我们来进一步看看细节。
(https://dashboard.tenderly.co/tx/bnb/0x59aef62a8cee79996ff2b44b723c97fbc0c6e2a0992c61dea0e65fcb2d78f608)
在这笔交易中,发生了以下步骤:
通过调用 0xcc4187 合约地址的 0xe473d7ed 方法,检查被盗地址的余额及对授权给恶意合约的 Allowance;
调用恶意合约(图中的 TransparentUpgradeableProxy)的 Proxy 合约 0xd367b5 的 0xe5ee9334 方法:
验证 0xcc4187 合约地址的 Role 角色权限;
恶意合约作为 msg sender 调用 USDT-BEP20 的 transferFrom 函数,从而实现将授权给恶意合约的 Token 资产转移到黑客获利地址 0xFf6F。
MistTrack 分析
据 MistTrack 分析,黑客地址 (0xFf6FC7eafF07C93b555a1CA2A9efcBbca2b8c83D) 目前已获利约 20 万美元,包括多种代币。
黑客初始资金来自 Tornado Cash 转入的 0.098 BNB,且使用过 Venus, PancakeSwap, DinosaurEggs, WombatExchange:
接着,我们对恶意合约地址 (0x3880285800a89AB3C4338bf455acdA3da6f8fA24) 进行分析:
我们发现这个恶意合约在 MistTrack 里被标记为 King,也就是说这个合约地址是原来项目 King 的合约地址,该合约地址与 Kingfund Finance 也存在交互,King 和 Kingfund Finance 应该是同一个项目:
再看下恶意合约地址的创建者地址 (0x37a7cA97b33b6a9D1d80D33bff9E38f156FF8541) 被标记为 Kingfund Finance: Deployer。
我们在搜索这个项目信息的时候,发现这居然是个 RugPull 项目。在 2022 年 1 月 19 日,Kingfund Finance 卷款带走超 300 WBNB(约 141,000 美元),关闭了其官网和官方推特。也就是说,目前还没对这个恶意合约取消授权的用户仍在被盗,慢雾安全团队建议用户及时取消对恶意合约的授权。
Dune 数据分析
(https://dune.com/misttrack/rugpull-malicious-authorization)
根据上述总结出的特征及借助 Dune 分析,我们还发现了另一个用户在 2022 年 1 月授权了上述提到的恶意合约地址 (0x3880285800a89AB3C4338bf455acdA3da6f8fA24),随后在 5 月份又授权了另一个 RugPull 恶意合约地址 (0x3a40AeC5453dB9b49ACb2993F0F82FB1553f4C23)。
该恶意合约的创建者 (0x406119D496a3b0D1F0B7DA020B5e89d6FFf4Ff08) 已将大部分获利资金转移到 Tornado Cash。
目前相关地址已被 MistTrack 拉黑。
总结
本文主要介绍了一个由于早年授权给 RugPull 项目导致后续资金持续被盗的案例,并根据相关特征扩展出 Dune 数据集。钓鱼无孔不入,一不小心就中招,慢雾安全团队建议用户经常主动查看自己的授权情况,可以使用 RevokeCash、ScamSniffer、Rabby 等工具查询,若发现有异常授权,请及时取消。