2021-04-05 14:04

百密一疏:Force DAO假充值攻击事件分析

摘要:Force DAO假充值攻击事件分析

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

400
400



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


一、攻击分析


通过初步分析,Force DAO合约中的漏洞主要在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 在调用代币转让时未严格判断其返回值,导致用户可以随意铸币的情况发生。该漏洞是典型的“假充值”的合约漏洞,可以在关键逻辑上增加权限控制,在项目上线之前请专业的智能合约审计机构进行严格的审计,保障智能合约和数字资产安全。

本文链接:https://www.8btc.com/media/6690212
转载请注明文章出处

评论
登录 账号发表你的看法,还没有账号?立即免费 注册
下载
分享
阅读
评论
点赞
上一篇
下一篇