百密一疏:Force DAO假充值攻击事件分析_FORCE:Yield Token for BXTB

摘要:ForceDAO假充值攻击事件分析北京时间2021年4月4日,区块链项目?ForceDAO?发推提醒用户称「请停止在?Sushiswap?和?Uniswap?上的所有交易。」此前,FORCE?代币被大量增发,ForceDAO?表示「团队已意识到?xFORCE?合约漏洞,并确定了问题。xFORCE?合约上没有更多的资金可供利用。团队将在未来几个小时内提供报告和下一步行动。」

400

SharkTeam第一时间对此事件进行了攻击分析和技术分析,并总结了安全防范手段,希望后续的区块链项目可以引以为戒,共筑区块链行业的安全防线。

一、攻击分析

通过初步分析,ForceDAO合约中的漏洞主要在xFORCE合约代码ForceProfitSharing.sol上。该漏洞令所有人都可以在没有FORCE的时候,铸造xFORCE。然后再将新铸造的xFORCE交换为FORCE。代码分析如下:合约地址为:0xe7f445b93eb9cdabfe76541cc43ff8de930a58e6首先看一下出问题的xFORCE铸币代码:

可以看到合约在帮用户铸造xFORCE之后,然后将FORCE通过force.?transferFrom扣除用户的FORCE。但是并没有判断这个函数是否执行成功。我们继续查看FORCE合约中的transferFrom:合约地址:0xd017D2403d779A31e1fA2261e0D3997bCACad851

在这个合约中只判断了用户的额度,当额度不足时返回false,由于xFORCE的合约中没有做执行结果的判定,所以无论用户账户中是否有足够的额度,都会铸币成功。所以额度不足的用户会凭空得到一大笔xFORCE,而后再使用xFORCE的withdraw函数,就可以使用刚刚凭空得到的xFORCE来兑换合约中的FORCE。从而导致资金损失。

这个是其中一个攻击者的钱包地址:0x6807d7f7df53b7739f6438eabd40ab8c262c0aa8交易地址:0x37b44d5dbbe9c1dd75223e15977153234e8a4dbbbab2495cdcc531f44bf6e3d0

而后通过withdraw将得到的xFORCE转换为FORCE

二、SharkTeam安全建议

在本次攻击事件中,主要原因在于外部合约?xForce?在调用代币转让时未严格判断其返回值,导致用户可以随意铸币的情况发生。该漏洞是典型的“假充值”的合约漏洞,可以在关键逻辑上增加权限控制,在项目上线之前请专业的智能合约审计机构进行严格的审计,保障智能合约和数字资产安全。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

金宝趣谈

[0:15ms0-7:649ms