18

案例 | UniCats “开后门” 钓鱼 十数万UNI“洗白”

 3 years ago
source link: https://www.8btc.com/media/655202
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

时值国庆大假期间,加密钱包初创公司ZenGo的研究员亚历克斯·马努斯金(Alex·Manuskin)爆料称,有用户一夜之间损失了价值14万美元的Uniswap代币UNI,而这与名为UniCats的“收益农场”有关。

RvABJjZ.jpg!mobile

据了解,一些参与DeFi提供流动性挖矿赚取收益的用户最近发现了UniCats这个新农场。从界面来看,UniCats类似Yam Finance和SushiSwap;收益方面,不仅可挖矿本地MEOW代币,同时还可挖出包括UNI在内的其它代币。

界面友好,产能不赖,资产入场。

当用户准备提供流动性时,UniCats弹出提示框,要求获取消费限制许可,而该许可的限制是:无限。

用户可能怎么也不会想到,在这个无限消费的许可的背后,UniCats开发者早已暗置了一个直通自家资产的“后门”。用户的资产可由此被悄悄转移至开发者指定的地址。

就这样,有大胆且不幸的“农夫”瞬间被窃取了价值14万美元的UNI,而其他用户也有不同程度的损失。

盗窃“现场”

那么,UniCats开的这个“后门”,又是如何对用户进行窃金操作的呢?

1、盗窃者首先将UniCats的owner权限转移给一个合约地址。

2、盗窃者通过获得owner权限的合约地址调用UniCats的setGovernance方法。

3、setGovernance函数调用对于代币的transferFrom函数,将用户资产转移到盗窃者地址。

第2、3步为此次盗窃的核心步骤,如下图所示:

viMruyA.jpg!mobile

“后门”分析

UniCats合约中的setGovernance函数是实现盗窃的关键。通过调用此函数,UniCats合约即可作为调用者,能够向任意合约发起任意调用。

EfU7Nfe.jpg!mobile

据上图所示,调用该方法可输入两个参数 ,即一个地址类型的“_governance”和一个bytes类型的“_setData”。而函数的governance.call(_setupData)其实是表示向参数“_governance”地址发起一笔交易,其calldata为参数“_setData”。如此一来,只要有权限调用这个方法,便可以借合约的身份发起任意交易。

在进行代码编写时,其注释表示此函数是一个修改治理合约的函数,如下图所示:

rqe2imA.jpg!mobile

事实上,根据成都链安的审计经验,修改治理合约通常并不需要调用call。而且,UniCats在对用户资产进行盗窃时,还刻意多次变换owner地址,如下图所示:

N7NzUvV.jpg!mobile

不仅如此,资产在转出后还立刻被流入混淆器,如下图所示:

NFVz22.jpg!mobile

如此操作,老练狠辣、一气呵成,因此基本可以断定,该项目就是一个彻头彻尾的骗局,为的就是钓鱼诈骗而上线。

令人细思极恐的是,在本案例中盗窃者调用了transferFrom方法对用户的资产实施转账,这就使得即便存在于钱包的用户资产,也可能面临被盗的风险。由于在合约授权时发起的是无额度限制授权,因此,一旦授权许可通过,合约就有权转移用户所有的资产。

成都链安郑重提醒,用户在进行合约授权时,使用多少,授权多少。这样操作的话,即便不幸遭遇类似欺诈性质的合约,也不会殃及钱包中的本金。如果用户不太清楚自己的授权情况,可以通过以下工具进行查询。

1、https://approved.zone

2、https://revoke.cash

3、https://tac.dappstar.io/#/

小结

于DeFi领域,用户获得新币的门槛大大降低,通过组合资产投资的确可能在短期内实现大规模的增值收益。但是,用户资产可能面临的风险状况就变得更为复杂,在这点上必须引起高度注意。

在DeFi这个“黑暗森林” ,大胆冒险是禁忌一般的行为。用户资产不仅要受到客观行情波动的影响,质押时是否遭受“清算”也无法预知,而合约中的人为陷阱更是无处不在。

尤其是,不少DeFi项目都存在代理转账的逻辑,多数项目方也会直接要求用户授权最大值。也就是说,用户授权后,某些不良合约将利用留“后门”的手段,反噬用户所持的全部资产。

因此,对于用户而言,来自合约的一切许可请求都要格外注意,宁理性退场,不冒然入坑,时刻警惕恶意项目方的此类“后门”陷阱。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK