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

摘要:主要原因在于外部合约 xForce 在调用代币转让时未严格判断其返回值

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

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

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

转载请注明文章出处

免责声明

本文观点仅代表作者个人观点,不构成本平台的投资建议,本平台不对文章信息准确性、完整性和及时性作出任何保证,亦不对因使用或信赖文章信息引发的任何损失承担责任
上一篇

某鲸鱼转入近63万个ETH,Compound锁定价值逼近100亿美元里程碑

下一篇

谨慎做多 不排除断头铡送韭菜上天的可能性?