Uniswap 盗币事件分析:钓鱼攻击威力显现
2022-7-12 09:54:6 Author: mp.weixin.qq.com(查看原文) 阅读量:1 收藏

背景信息

2022 年 7 月 12 号,清晨 CZ 的推特发布讯息,称其安全团队监测到 Uniswap 出现大额丢币事件,且攻击者获利的 ETH 已流入 Tornado Cash 。经过链上数据整理和分析,能够发现这是一起攻击者利用钓鱼攻击使受害者在钓鱼环境下调用 approve 授权函数,将受害者持有 Uniswap 721 LP NFT 授权给特定账户,进而导致的攻击。该攻击造成了超过 4295 个 ETH 被窃取。

随后 Uniswap 团队回应,此次攻击为钓鱼攻击,在攻击者不掌握受害者钱包账户私钥的前提下,使用哪种办法能够使其获得受害人的资产,进而使其遭受损失呢?这与 setApprovalForAll 及 approve 函数本身存在的潜在 spend 风险,和用户对这一函数所带来的潜在风险认识不到位存在一定关系。另外也不排除钓鱼站点做的足够逼真,以至于让用户忽略了同源策略直接授权

攻击账户信息

为确保分析的时效性,我们将选取特定账户进行分析,且仅对单个受害人进行分析,为了便于读者阅读和理解,特对相关账户进行命名:

  • 受害账户:

    0x15c853bdafc9132544a10ed222aeab1f239414fe

  • 攻击账户(经授权具备转移受害账户 Uniswap NFT 能力的账户)

    0x3CAFc86a98B77EeDcD3db0ee0aE562D7fe1897A2

  • 洗币账户(也可以理解为攻击的实际获利账户):

    0x09b5027eF3a3b7332EE90321E558baD9C4447AFA

攻击信息分析

1.攻击者诱导受害账户调用 setApprovalForAll 方法授权攻击账户的交易链接

https://etherscan.io/tx/0x1f5d7e647723f542abda34e83bdeb5c8dcbae08777efc2d4aac219ae113a87d4

通过分析发现受害账户与 Uniswap 的 LP 合约进行了交互,且调用 setApprovalForAll 方法授权自己的 NFT 给攻击账户,交易详情如下:

此时,攻击账户就具备了操作受害账户中 Uniswap V3 NFT 的能力(其实每一次在 Opensea 上交易 NFT 都需要调用 setApprovalForAll 方法

2.攻击账户操作 Uniswap V3 NFT 合约将受害者账户中的 LP NFT 转移至洗币账户的交易链接:

https://etherscan.io/tx/0x8f3040fe5ab4ddfa8b984edbab863295ae3e191d23cda0b8525f5e79c8774cbc

不难发现,攻击账户在通过钓鱼获得受害账户的授权后,直接向 Uniswap V3 NFT 合约发送转移请求,即将受害账户持有的 LP NFT 转移至洗币账户,此时洗币账户将获得被盗取的 LP ,通过移除 LP 操作,即可获得 ETH 。

3.洗币账户利用 Tornado Cash 进行洗币的交易链接

https://etherscan.io/tx/0xe902c988da5e715c932f11df56a837e4599df5c695a8fa3d96b902e9f5cfe0d6


文章来源: https://mp.weixin.qq.com/s?__biz=MzU3MTU3NDk4Mw==&mid=2247485111&idx=1&sn=93236a0bced1d2de5c3784e1f9eec915&chksm=fcdf591fcba8d009873eb71ff37b7ac9e882e1123933c3517002805fcdf1baeebe24089738ed&scene=58&subscene=0#rd
如有侵权请联系:admin#unsafe.sh