|UniCats“开后门”钓鱼 十数万UNI“洗白”
时值国庆大假期间 , 加密钱包初创公司ZenGo的研究员亚历克斯·马努斯金(Alex·Manuskin)爆料称 , 有用户一夜之间损失了价值14万美元的Uniswap代币UNI , 而这与名为UniCats的“收益农场”有关 。
本文插图
据了解 , 一些参与DeFi提供流动性挖矿赚取收益的用户最近发现了UniCats这个新农场 。 从界面来看 , UniCats类似Yam Finance和SushiSwap;收益方面 , 不仅可挖矿本地MEOW代币 , 同时还可挖出包括UNI在内的其它代币 。
界面友好 , 产能不赖 , 资产入场 。
当用户准备提供流动性时 , UniCats弹出提示框 , 要求获取消费限制许可 , 而该许可的限制是:无限 。
用户可能怎么也不会想到 , 在这个无限消费的许可的背后 , UniCats开发者早已暗置了一个直通自家资产的“后门” 。 用户的资产可由此被悄悄转移至开发者指定的地址 。
【|UniCats“开后门”钓鱼 十数万UNI“洗白”】就这样 , 有大胆且不幸的“农夫”瞬间被窃取了价值14万美元的UNI , 而其他用户也有不同程度的损失 。
盗窃“现场”
那么 , UniCats开的这个“后门” , 又是如何对用户进行窃金操作的呢?
1、 盗窃 者首先将UniCats的owner权限转移给一个合约地址 。
2 、盗窃 者通过获得owner权限的合约地址调用UniCats的setGovernance方法 。
3、setGovernance函数调用对于代币的transferFrom函数 , 将用户 资产 转移到 盗窃 者地址 。
第2、3步为此次盗窃的核心步骤 , 如下图所示:
本文插图
“后门”分析
UniCats合约中的setGovernance函数是实现盗窃的关键 。 通过调用此函数 , UniCats合约即可作为调用者 , 能够向任意合约发起任意调用 。
据上图所示 , 调用该方法可输入两个参数 ,即一个地址类型的“_governance”和一个bytes类型的“_setData” 。 而函数的governance.call(_setupData)其实是表示向参数“_governance”地址发起一笔交易 , 其calldata为参数“_setData” 。 如此一来 , 只要有权限调用这个方法 , 便可以借合约的身份发起任意交易 。
在进行代码编写时 , 其注释表示此函数是一个修改治理合约的函数 , 如下图所示:
事实上 , 根据成都链安的审计经验 , 修改治理合约通常并不需要调用call 。 而且 , UniCats在对用户资产进行盗窃时 , 还刻意多次变换owner地址 , 如下图所示:
本文插图
不仅如此 , 资产在转出后还立刻被流入混淆器 , 如下图所示:
- 北京日报|“来逛朕的园子吧”!北京有轨电车西郊线变身“三山五园号”
- 扬子晚报|谁拿了ATM机台面上的5000元 民警通过监控一路“追踪”
- 央视|“环高”减弱为强热带风暴 海南环岛高铁恢复开行
- 现代快报|保时捷当教练车,小伙子教无证女友练车“损失”超想象
- 现代快报|“准鹿王”落单滑入鱼塘,怎么也爬不上岸
- 浙江新闻|“家长群”成“压力群”?杭州市教育局出手了
- 北京日报|71.6亿!北京地区企业战“疫”捐赠金额领先全国
- 北青网综合|近期高发!碰上“快递小哥”加你微信要小心!
- 北京青年报|坚守国安球门11年 侯森拒称“功臣”
- 21世纪经济报道|信用债“惊魂”一周:流动性分层或将成结局