0x1 事件背景
2022年7月12日早6时,币安交易平台CEO赵长鹏发推表示,通过威胁情报在 ETH 区块链上检测到 Uniswap V3 潜在漏洞,到目前为止,黑客已经窃取了 4295 ETH。并给出了黑客转移资金的相关地址。
https://etherscan.io/address/0x09b5027ef3a3b7332ee90321e558bad9c4447afa#internaltx
随后的几个小时内,多个推特用户发文称此次黑客攻击中,转出资金的交易并无异常,并表示这是网络钓鱼攻击,也就是说漏洞并不是Uniswap本身风险。
随后赵长鹏再次声明,通过与Uniswap团队沟通,Uniswap协议本身未发现安全风险,该攻击事件可能为钓鱼攻击。
0x2 攻击信息
- 攻击者地址
0x3cafc86a98b77eedcd3db0ee0ae562d7fe1897a2
0x09b5027ef3a3b7332ee90321e558bad9c4447afa
- 攻击者合约 ($ UniswapLP.com (UniswapLP.com))
0xCf39B7793512F03f2893C16459fd72E65D2Ed00c
- 受害者地址
0xecc6b71b294cd4e1baf87e95fb1086b835bb4eba
0x15c853bdafc9132544a10ed222aeab1f239414fe
0xc8c9771b59f9f217e8285889b9cdd7b9ddce0e86
- Uniswap V3: Positions NFT
0xc36442b4a4522e871399cd717abdd847ab11fe88
0x3 攻击分析
1、攻击者提前部署攻击合约($ UniswapLP.com (UniswapLP.com)),注意这里的名称,里面有的关键信息包含了 UniswapLP 和 UniswapLP.com网址,而该网址仔细看并不是Uniswap官方网址,访问之后会发现官方网站及其相似。
2、通过攻击合约调用Uniswap V3: Positions NFT (UNI-V3-POS)合约给受害者地址发送名为($ UniswapLP.com (UniswapLP.com))的资金。 这一步在交易信息中显示如下:
该步骤也是钓鱼攻击的关键,通过发送名为($ UniswapLP.com (UniswapLP.com))的Token资金,会给资金接收者一种错觉,Uniswap V3发送了UniswapLP.com给接收者地址 ,这个时候攻击者可能会访问UniswapLP.com网站,进行下一步操作。
3、受害者点击该网址,将自己的资金授权给攻击者事先写好的地址。
下面来看其中一个受害者的具体操作。
受害者执行多次setApprovalForAll授权。
查看任意一笔交易的详情
可以明显看出,受害者调用Uniswap V3: Positions NFT合约的setApprovalForAll方法,将自己的NFT资产授权给攻击者地址。
4、授权成功后,攻击者利用授权账户将受害者NFT资产转出。
5、攻击者通过Uniswap V3: Positions NFT合约将NFT资产转换为ETH。
6、最终攻击者将获取的 7500 枚 ETH 转移至 Tornado.Cash 混币平台。
0x4 总结及建议
通过以上事件可以发现,攻击者主要利用社工钓鱼方式来诱导用户点击钓鱼网站及授权自己的NFT,不过与之前大多数钓鱼不同的是,此次钓鱼攻击事件的初始阶段是在区块链浏览器展开,通过伪造合约名称和发币来混淆用户的视线,最终诱导用户授权自身NFT资产。
安全建议
- 访问未明确网站时,需要仔细确认是否为预期官方网站;
- 使用网站 mint 功能及其他敏感功能时,需要注意钱包签名是否与预期功能相符,避免签名 setApprovalForAll 方法;
- 如果发现已经进行setApprovalForAll 方法授权,建议尽快取消授权及转移该钱包的资金。