首页 > 资讯 > 慢雾:技术拆解 YFValue 合约漏洞,一行代码如何锁定上亿美元?

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

摘要:DeFi 项目 YFValue 质押池发现合约漏洞, 1.7 亿美元资金存在被锁定风险,慢雾分析了漏洞的技术细节。

原文标题:《慢雾:YFValue,一行代码如何锁定上亿资产》
撰文 : yudan,就职于慢雾安全团队

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

细节分析

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

以上是 YFValue 的 官方说明,从声明中我们可以得知是 YFV 抵押池出现了问题,恶意的用户可重置 YFV 抵押者的计时器,对 YFV 的抵押者造成不便,但这并不会导致资金损失。

通过登陆 YFValue 的官方网站 ,可以发现在 YFValue 的体系中,用户可通过质押相关的代币获取对应的奖励,目前 YFValue 支持的质押代币池有以下几个:

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

可以看到,目前由于漏洞的原因,YFV 的抵押池已经在 UI 界面关闭了抵押功能,但是合约上目前还没关闭代币抵押的功能,我们需要跟踪代码来分析具体的细节点。

根据官网提供的 Github 地址,我们溯源到了相关的 代码仓库,关于 YFV 抵押的相关逻辑在 YFV_Stake.sol 合约中,合约中关于抵押的函数有 2 个,分别是 stake 函数和 stakeOnBehalf 函数,以下是具体的代码:

function stake(uint256 amount, address referrer) public updateReward(msg.sender) checkNextEpoch {
        require(amount > 0, "Cannot stake 0");
        require(referrer != msg.sender, "You cannot refer yourself.");
        super.tokenStake(amount);
        lastStakeTimes[msg.sender] = block.timestamp;
        emit Staked(msg.sender, amount);
        if (rewardReferral != address(0) && referrer != address(0)) {
            IYFVReferral(rewardReferral).setReferrer(msg.sender, referrer);
        }
    }

function stakeOnBehalf(address stakeFor, uint256 amount) public updateReward(stakeFor) checkNextEpoch {
        require(amount > 0, "Cannot stake 0");
        super.tokenStakeOnBehalf(stakeFor, amount);
        lastStakeTimes[stakeFor] = block.timestamp;
        emit Staked(stakeFor, amount);
}
免责声明
世链财经作为开放的信息发布平台,所有资讯仅代表作者个人观点,与世链财经无关。如文章、图片、音频或视频出现侵权、违规及其他不当言论,请提供相关材料,发送到:2785592653@qq.com。
风险提示:本站所提供的资讯不代表任何投资暗示。投资有风险,入市须谨慎。
世链粉丝群:提供最新热点新闻,空投糖果、红包等福利,微信:juu3644。