火星链 火星链
Ctrl+D收藏火星链
首页 > Luna > 正文

区块链:技术拆解YFValue合约漏洞,一行代码如何锁定上亿美元?

作者:

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

编者按:本文来自慢雾科技,Odaily星球日报授权转载。前言

据链闻消息,DeFi项目YFValue发布公告称,团队于昨日在YFV质押池中发现一个漏洞,恶意参与者借此漏洞对质押中的YFV计时器单独重置。目前已有一个恶意参与者正试图借此勒索团队。慢雾安全团队对此进行了深入分析,以下是相关技术细节。细节分析

以上是YFValue的官方说明(来源:https://medium.com/),从声明中我们可以得知是YFV抵押池出现了问题,恶意的用户可重置YFV抵押者的计时器,对YFV的抵押者造成不便,但这并不会导致资金损失。通过登陆YFValue的官方网站,(https://yfv.finance/staking),可以发现在YFValue的体系中,用户可通过质押相关的代币获取对应的奖励,目前YFValue支持的质押代币池有以下几个:

天津海关出台13条举措助推区块链技术跨境贸易应用创新:12月31日消息,记者从天津海关获悉,日前,该关结合“智慧海关、智能边境、智享联通”的“三智”新模式,从上链企业进出口货物查验率参照高级认证企业标准执行、建立上链企业海关联络员制度、实施采信便利化措施、减少对上链企业稽查、核查频次等方面出台13条推动配套业务措施,助推区块链技术在跨境贸易中的应用创新,这将有助于为进一步助推区块链技术创新应用快速发展,营造信任、便利、高效、可追溯的贸易环境。(央广网天津)[2020/12/31 16:09:58]

可以看到,目前由于漏洞的原因,YFV的抵押池已经在UI界面关闭了抵押功能,但是合约上目前还没关闭代币抵押的功能,我们需要跟踪代码来分析具体的细节点。根据官网提供的Github地址,我们溯源到了相关的代码仓库(https://github.com/yfv-finance/audit),关于YFV抵押的相关逻辑在YFV_Stake.sol合约中,合约中关于抵押的函数有2个,分别是stake函数和stakeOnBehalf函数,以下是具体的代码:

声音 | 广州日报:加速区块链技术落地应用,推进大湾区产业变革:广州日报今日刊文《加速区块链技术落地应用 推进大湾区产业变革》,文中提到,结合大湾区的金融科技发展目标,当前可以在以下几个方面重点推进区块链技术的落地应用:一是跨境贸易,建立标准化的大湾区全行业区块链贸易融资平台;二是跨境支付,支付清算流程是一种典型的多中心场景,与区块链特性匹配度较高;三是供应链金融,区块链技术与供应链金融可以深度融合,为处在核心企业上下游的中小企业提供融资便利;四是网络经济结构,区块链有潜力改变网络经济的结构,使许多新型网络和业务模型成为可能;五是资本流动管理。可以利用区块链技术,创建一个处理资本管制的许可价值转移体系。[2020/1/20]

动态 | 杭州互联网法院引入的区块链技术拥有20000TPS:据法制日报消息,杭州互联网法院司法区块链于近日上线运行。技术人员介绍说,杭州互联网法院引入的区块链技术,拥有20000TPS存证性能高性能共识方法(比特币只有8TPS)、完整隐私安全保护能力及跨全球部署能力。已经广泛应用于互联网金融跨境支付、电子票据溯源、公益溯源、供应链金融行业。同时,突破了视频等大文件存储以及保护隐私,同时保证性能的技术挑战。多个涉及确权、维权的联盟链将陆续加入杭州互联网法院司法区块链,形成一个丰富的链上生态。[2018/9/20]

通过代码不难发现,无论是stake函数还是stakeOnBehalf函数,逻辑基本是一样的,首先是校验了抵押金额不能为0,接着分别调用上层的tokenStake和tokenStakeOnBehalf函数。紧接着更新用户的抵押时间。只不过stakeOnBehalf函数可以用于为他人抵押。tokenStake和tokenStakeOnBehalf的代码如下:

声音 | 中国商业经济学会副会长:充分利用区块链等技术实现中国制造的高质量发展:中国商业经济学会副会长宋向清表示,未来中国制造要试水产业链顶端技术和前沿设计,充分利用区块链、物联网和智能化等开展模式创新和管理变革,实现中国制造的高质量发展。[2018/7/12]

可以看到这里只是简单的把对应的token用transferFrom的方式转入到合约中,没有什么特别的逻辑点。到这里整个抵押流程就很清晰了,接下来是收益的过程。计算用户收益的是stakeReward函数,领取收益的为withdraw函数,代码分别如下:

通过分析计算收益和领取收益的代码,发现逻辑也很简单,stake函数首先是通过updateReward修饰器更新了用户的奖励,然后使用getReward函数计算了用户的奖励,并把抵押时间设置成当前区块时间。最后,用户在提取奖励的时候,withdraw函数会首先计算当前的区块时间,再与unfrozenStakeTime函数中计算出的时间进行对比,只有当前区块时间大于unfrozenStakeTime计算出的时间,才允许提现。unfrozenStakeTime的代码如下:

从代码中得知,unfrozenStakeTime是使用用户的上次抵押时间加上FROZEN_STAKING_TIME常量得出锁定时间,只要超过时间,就能通过withdraw函数提现收益。整个抵押和领取收益的简化流程如下:

分析了一大堆,回到我们最初的问题,恶意的用户是怎么锁定其他用户的资产的呢?回到用户抵押的逻辑,可以发现抵押逻辑中的stakeOnBehalf函数本意是帮助进行抵押,但是这里有个问题,如果这个用户先前已经有抵押了呢?那通过对已经抵押的用户再次进行抵押,比方说抵押1个YFV,是不是就能以极低的成本重置已抵押的用户的计时器,导致用户在withdraw时无法成功调用。更进一步,假设YFV抵押用户已经成功调用了stakeReward函数,在快要达到unfrozenStakeTime所规定的时间时,恶意的用户可以通过stakeOnBehalf函数给这个用户抵押少量资产,即可再次对抵押奖励进行锁定,理论上这样往复循环,即可使用户无法取出自己的资产,但这个问题并不会导致资金损失。攻击流程如下:

前车之鉴

这是本月出现的第二个没有经过审计的DeFi项目所暴露出的风险,根据YFValue的官方声明(https://medium.com/),项目代码是由富有经验的开发者进行开发的,同时借鉴了其他成功的项目的代码,但是仍无可避免的出现了风险。术业有专攻,安全审计一方面需要项目方的正向思维,另一方面,还是需要专业的安全团队的逆向思维,从专业的黑客角度进行模拟对抗,发现问题。修复方案

通过分析代码和漏洞细节,针对本次漏洞,修复方案也很简单,只要在抵押的时候检查用户的抵押状态是否为已经抵押,如果已经抵押,则不允许再次抵押。或者对每次的抵押进行单独的处理,不能对先前的抵押状态产生影响。

标签:STASTAKSTAKE区块链AllStars DigitalxSTAKE.Financepstake币怎么样如何使用区块链技术

Luna热门资讯
DEFI:通过数字财富获得被动收入:深入研究加密收益、抵押和计息账户

Odaily星球日报译者|Moni 在过去的两年时间里,允许加密资产持有者获取收益的投资工具大多呈现出指数级增长,在一些去中心化金融平台上,任何人都可以通过多种途径获得被动收入.

1900/1/1 0:00:00
COIN:财富密码太多,钱不够了

编者按:本文来自橙皮书,Odaily星球日报经授权转载。酒足饭饱,我们来到地下室,继续舒服又兴奋的聊天,财富密码越蹦越多的时候,我说:“等等,在座的各位是都准备发币了嘛?而且每个人都觉得自己投的.

1900/1/1 0:00:00
YAM:充值10万跌成860元,YAM一日崩盘记

作者|Mandy王梦蝶、秦晓峰出品|Odaily星球日报 北京时间下午16点,DeFi项目YamFinance短时暴跌98.8%,昨日价格一度涨至160美元的YAM直逼1美元.

1900/1/1 0:00:00
USD:加密稳定币报告:稳定币市值达到143.87亿美元,简析稳定币池Reserve

快速预览目前,主要稳定币的市场流通市值达到143.87亿美元,与上周相比增长9.8亿美元。上周,USDT增发了6次,流通量增加9.3亿.

1900/1/1 0:00:00
FIL:Filecoin大矿工测试全解析

现在Filecoin大矿工测试已经敲定为2020年8月25日。Filecoin的热度不再多说,迟迟不上线主网,不但没有磨去大家的热情,反而吊足了矿工的胃口。大矿工测试之后紧接着就是主网上线.

1900/1/1 0:00:00
USD:创新高:以太坊转账手续费暴涨近15倍,日挖矿收益涨3倍

Tokenview密切观察链上数据,我们发现近期以太坊链上数据表现“异常”活跃。每日单笔交易手续费平均值暴涨10倍 数据来源:https://eth.tokenview.com/cn/chart.

1900/1/1 0:00:00