宇宙链 宇宙链
Ctrl+D收藏宇宙链
首页 > 区块链 > 正文

捡钱捡成千万富翁:UniswapV2 Router02实现缺陷

作者:

时间:1900/1/1 0:00:00

我们团队在整理和复盘Sanshu Inu事件时,发现通缩代币(Deflation Token)或FoT代币(Fee-on-Transfer Tokens)是造成这次攻击的罪魁祸首之一。

我们对通缩代币可能造成的安全漏洞进行了进一步分析,发现UniswapV2在对Router01的升级修复版Router02的实现中引入了漏洞,使得其中的代币可以被任意用户取出。我们初步统计发现,有几个地址持续从中获利,仅其中一个地址就从中获利1000+ETH,价值超过1600万人民币。

而且,该问题不仅局限于Uniswap,在所有采用类似UniswapV2 Router02的代码的平台都存在这个问题,其中包括以太坊上的SushiSwap,BSC链上的PancakeSwap等。为帮助相关项目方了解该问题,在联系了相关项目方后,我们对该缺陷进行公开。

Uniswap是DeFi领域举足轻重的去中心化交易所,对于每一对代币,Uniswap设置了对应的Pair(流动性池,下称Pair或池子)实现了自动做市机制。然而直接调用UniswapV2的Pair进行交互(如图中的Choice 1)对普通用户而言是有一定的难度的。因此UniswapV2为用户进行了一层封装,即用户可以通过UniswapV2的Router实现代币的交换(Swap)及流动性的增减(Add/Remove Liquidity)操作,而不必操心Router与Pair具体如何实现交互(如图中的Choice 2)。

(要点1)Router在代替用户与Pair进行代币交换(Swap)和增减流动性(Add/Remove Liquidity)的时候,要么会直接将钱在用户和Pair之间transfer,而不经过Router;或者Router会用变量amount记录用户和Pair转进来的代币数量,再分别地转给对应的Pair或者用户。也就是说,正常情况下,Router在一笔交易执行之后,是不会留存有任何Token的。

SOL突破13美元:金色财经报道,行情显示,SOL突破13美元,现报13.01美元,日内涨幅达到16.58%,行情波动较大,请做好风险控制。[2023/1/4 9:50:19]

(要点2)问题出在Router02新增的减少流动性的函数实现。Router02在实现函数removeLiquidityETHSupportingFeeOnTransferTokens()的时候,并没有记录应当返还给用户多少代币,而是调用该种代币的balanceOf(address(this))函数,从而将Router02当前持有的所有该种代币都转给用户。代码如图所示。

正常情况下,这样并不会产生任何问题,因为Router02所有的钱在该笔交易内,都是来源于用户从Pair中取出的流动性,所以都是用户的。但是,如果某种情况下导致了Router02中事先就存有了该种代币呢?这个时候用户就可以调用该问题函数实现不当获利了。

经过我们的调查发现,现实中这种情况屡见不鲜。我们根据获利数量初步分析发现,导致Router02中不正常存有代币的情况有以下几种:

Token的机制设置

部分Token为了给Token的使用者进行分红或补偿,会定期或不定期给Token的用户发该种Token。如稳定币Fei(TVL 1.66亿美元),我们将在下文的实例介绍中详细介绍该项目。????2.项目空投。

用户误转。我们发现大量交易不小心将Token直接转入Router02中,而不当获利者(我们姑且这么称呼)会在接下来的几个块内(甚至同一块内)迅速利用Uniswap的该缺陷函数移走用户资产,实现获利。如交易0x1951efc5ea628503f02d5f233aee9bdeb9594ee9164947af49c99c202ce05f41中 一个地址向Router02转了价值1000美元的FXF Token,而在紧随其后的另一笔交易(0xbbcaf5069e21ee457fe4083c6ecc728d5a71443a377a0c700db6ed6a69fdbd5d)中这些Token就被另一个地址采用上述方法取走了。

美股主要指数多数收跌,标普500指数跌0.41%:金色财经报道,美股主要指数多数收跌,道指涨0.11%,纳指跌1.38%,标普500指数跌0.41%,热门科技股普遍下跌。[2022/12/28 22:11:49]

由此,我们只需要监测Router02中的Token数量,如果某种Token的价值能够覆盖发起交易的交易费用,就可以实现获利。具体交易实现如下

1.向对应Pair(必须是ETH和该种Token的池子)提供少量流动性,为接下来移除流动性做好准备。

监控Router02地址,获取其每一个Token的Balance。当某个Token的balance总价值能够覆盖交易费用和相关成本时,发起下一步交易。

通过调用Router02合约的函数函数removeLiquidityETHSupportingFeeOnTransferTokens()移除少量该池子的流动性,这个时候Router02会根据balanceOf(address(this))将你应得的部分和Router02中所有的该种Token一起transfer给交易发起者。

研究过程中,我们发现其中两笔交易中其调用者获利了将近300个ETH,总价值约160万美元。

Fei 项目介绍

这两笔交易中涉及的Token为Fei(一种对标美元的稳定币,即1 Fei == 1 USD)。其中Fei的Incentive机制是导致Router02中出现大量Fei代币的原因。该机制可以为UniswapV2的 FEI/WETH交易池设置一个Incentive合约。当有人调用Fei进行转账的时候,Fei合约会根据sender是否注册incentive合约决定在转账完成后是否会回调对应Incentive合约的Incentivize函数。该函数根据条件判断后会调用Fei.mint,向recipient,也就是Fei的接收者额外mint出一笔钱,如图。

美国多个州级证券监管机构正在调查Celsius:金色财经消息,美国新泽西州、阿拉巴马州、肯塔基州和华盛顿州的证券监管机构正在调查加密借贷平台Celsius Network暂停客户赎回的决定。

此前消息,美国德州证券委员会将对Celsius冻结账户事件展开调查。[2022/6/17 4:33:34]

也就是说,这个incentive合约的功能就是,任何人在UniswapV2的 FEI/WETH交易池取走FEI的时候,除了会获得UniswapV2的 FEI/WETH交易池 transfer的本金外,还会额外收到一笔奖励。而Router02代替用户进行removeLiquidityETH和removeLiquidityETHWithPermit操作的时候,就会由于转手了Fei代币,而被发放奖励。

获利实现分析

下面我们以交易0x46a8a8eb2fcf75e0a4874d0049d833eaa6432d4b28cb558dc631806be431618b为例,具体介绍获利是怎么实现的。

在该交易发生之前,Fei在交易0x9f4e2995481fa10cba40ac013d06e2352db5323bd2deae81b89444be2e88a1be中通过调用了EthUniswapPCVController?合约的reweight(),其中调用了UniswapV2Router02的removeLiquidityETH函数,导致大量的Fei(约69万个)截留在Router02中。

百度超级链携手百科艺术计划,全面赋能艺术家及艺术机构:金色财经报道,在近期举行的2021北京当代艺术博览会上,百度超级链联合百度百科艺术计划共同推出数字艺术品区块链解决方案。借助区块链、AI等创新技术,该方案为艺术品提供从版权存证、侵权监测、司法维权、数字作品交易等服务,全面保障艺术家及机构的知识产权,帮助数字作品发挥更大的市场潜力。百度百科艺术计划是百度百科推出的垂直艺术内容平台,为艺术家、专业画廊、艺术机构免费量身定制专属百科词条云名片,提供品牌包装、流量扶持、版权保护等多维服务。[2022/5/1 2:42:54]

该用户监测到该获利机会,在随后的几个块实现了该交易(部分执行截图如下)。

从图中的第2、3个红框可以看到,用户调用该特殊的移除流动性的函数后,Pair转给Router02的钱仅约为2.6e16 wei(不到1美元),而Router02转给用户的钱却约有6.9e23 wei,即纯获利Fei约69万个。而产生差距如此巨大的原因就在于Router02中本来就有将近这么多钱(见第1个红框)。(图中可以看到Fei在transfer的时候调用了对应的Incentive函数,感兴趣的朋友可以自行查看交易。图源https://tx.blocksecteam.com/)

用户在获得这些大量的Fei Token之后在同一个交易内直接通过Uniswap将其转成WETH(超过297个)后转给获利地址0x4d1d758f0966c6e6de873958e62788300c13f60e。

后续

Fei项目已经在2021年7月4号移除了该交易对的Incentive合约,即Fei项目不会再向Router02发放奖励,交易0xfa6e50b964f57a7fd9451af694d18b851a30e58649d878d21b10c20f810723d1。

摩根士丹利研究以比特币为房屋定价:金色财经报道,Bitcoin Magazine发推称,银行业巨头摩根士丹利研究以比特币为房屋定价。[2022/4/23 14:43:05]

漏洞来源

Router02是UniswapV2中引入的第二版Router,为了解决Router01无法处理FoT代币(Fee-on-Transfer Tokens)的问题(如图,来源Uniswap官方文档)。

FoT代币会在transfer过程中收取手续费,导致调用transfer()、transferFrom()时,接收方实际获得代币数量小于发送方发出的代币数量,致使Router01无法根据Pair传给Router的数量原封不动地转给用户。所以Router02实现了removeLiquidityETHSupportingFeeOnTransferTokens()用于解决该问题,将该转给用户的,都转给用户。

但是该实现没有对该函数的假设(即处理的FoT代币)进行检验,而是粗暴地使用了balanceOf(address(this)),导致用户(包括项目方)受害,大量财产暴露甚至散落在公众场合,吸引了恶意用户来不当获利。

受害者分析

我们根据Router02出现代币的主要几种情况进行分析,可以看到受害者如下:

1.Token的机制设置导致Router02中存在部分Token:直接受害者是Uniswap的用户,用户在Uniswap交换的时候本来应该得到的Token部分被Router02截获,导致用户损失。而这进一步导致Token项目方设计的机制无法将利益分发给其用户,使得其相关机制失效,导致项目可用性受损,因此间接受害者是项目方。2.用户误转导致Router02中出现Token:受害者是相关用户,不可否认用户有其一定的责任,但是Uniswap由于缺乏必要的校验,导致其将不属于Uniswap的币转给第三方。

建议

defi项目之间的可组合性导致了defi领域的繁荣,也带来大量安全风险。因此项目方在项目开发的过程中需要特别注意与其他项目之间的交互,是否会由于适配性等问题导致安全风险,比如与通缩代币的交互等。

由于Uniswap的流动性大,且其分叉项目广泛,该漏洞的影响的项目除了UniswapV2之外,还包括SushiSwap,BSC链上的PancakeSwap等。

非法获利交易数量

根据我们初步统计,仅在以太坊上恶意地址,总共获利就超出1000ETH。下面附上部分地址及相关不当获利情况统计(以ETH计价,粗略统计,当前ETH价格约为2600美元(2021)。

上文提到的UniswapV2中采用balanceOf(address(this))实现的移除流动性的函数,除了removeLiquidityETHSupportingFeeOnTransferTokens(),还有另一种函数内部调用了前面所说函数的实现——removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(),即在特定情况下,这两个函数的调用都可以实现不当得利。详见UniswapV2Router02合约代码。

各平台合约地址及不当获利交易举例

Fei代币地址:0x956F47F50A910163D8BF957Cf5846D573E7f87CA

Fei Incentive合约:0xfe5b6c2a87A976dCe20130c423C679f4d6044cD7

UniswapV2的 FEI/WETH交易池地址:0x94B0A3d511b6EcDb17eBF877278Ab030acb0A878

本文所用价格及TVL数据来源为coingecko及etherscan。

通缩代币的介绍及可能给项目方带来的安全风险详见我们之前的攻击报告——Sanshu Inu事件报告

References

?Router02:?https://etherscan.io/address/0x7a250d5630b4cf539739df2c5dacb4c659f2488d

?获利地址:?https://etherscan.io/address/0x4d1d758f0966c6e6de873958e62788300c13f60e

?EthUniswapPCVController :?https://etherscan.io/address/0x7a165f8518a9ec7d5da15f4b77b1d7128b5d9188

?Uniswap官方文档:?https://docs.uniswap.org/protocol/V2/reference/smart-contracts/router-01

标签:ROUTEOUTTERSWAPROUTE币fuyoutokenMaster SwiscoinvBSWAP币

区块链热门资讯
NFT浪潮席卷影视圈 它对影视行业有何影响?

据报道,淘票票平台于3月16日开售韩寒导演的电影《四海》系列数字藏品,共4款,每款限量4000份,售价为16.9元。现如今,越来越多的影视剧开始推出NFT作品,除了能吸引不少粉丝及影迷朋友的喜爱,也能证明NFT本身的价值.

1900/1/1 0:00:00
数字藏品再现“千团大战” 收下这个国内首个数字藏品TOP榜单

国内首个数字藏品TOP榜单重磅发布在这个千亿级别的市场,每天都有新的“造富神话”诞生,比如一款画作、一张照片被制作为NFT后,价格炒到百万元已经屡见不鲜.

1900/1/1 0:00:00
NFT周刊|INS进入NFT测试阶段;OpenSea宣布打击新举措;烟鬼组合入局NFT领域

随着经济周期的发展,毫无疑问整个Crypto市场正在经历动荡期。而随着我们来到了2022年的中点,市场情绪似乎更为悲观.

1900/1/1 0:00:00
金色说明书 | YFX创世挖矿(第2阶段)细则

DeFi流动性挖矿火爆一时,吸引了大量投资者参与。为了方便投资者及时了解DeFi挖矿项目的相关信息和挖矿流程,金色财经推出了“金色说明书”系列挖矿教程。教程根据公开信息搜集整理而来,非金色财经官方推荐项目,请用户根据自身情况甄别判断.

1900/1/1 0:00:00
NFT抄袭侵权法律问题深度解析

尽管理论上确实可以做到“万物皆可NFT”,但就目前的技术和市场环境来看,最适合通过NFT进行发行、交易的标的物还是“数字作品”,毕竟数字化的作品在技术层面可以非常便利的完成NFT铸造,在发行和交易过程中也十分便于交付.

1900/1/1 0:00:00
NFT解放了想象力:需要解决的性别差距

导数据显示,只有16%的NFT创作者是女性——这一巨大的性别差距反映出女性在当今NFT生态系统中的代表性不足.

1900/1/1 0:00:00