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

未知 2021-10-13 15:53:45

摘要:Force DAO虚假充值攻击事件分析北京时间2021年4月4日,区块链项目Force DAO向用户表示:“请停止在Sushiswap和Uniswap的所有交易。 》之前,福克斯令牌大量增发,福克斯道奥表示:“球队意识到了福克斯合同的不完备之处,并确定了问题。 xFORCE合同没有更多的资金。 小组将在今后几小时内提供报告和后续行动。 “”

400

400

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

一、攻击分析

初步分析表明,Force DAO合同漏洞主要在xFORCE合同代码ForceProfitSharing.sol中。 此漏洞允许每个人在没有FORCE时铸造xFORCE。 然后,将新铸造的xFORCE更换为FORCE。 代码分析如下。 合同地址是0xe7f 445 B 93 EB9CDA BFE 76541 CC 43 FF8DE 930 A 58 E6,我们先来看看有问题的xFORCE铸造代码。

合同帮助用户铸造xFORCE后,可以看到FORCE将在FORCE.transferFrom上扣除用户的FORCE。 但是,还没有判断这个函数是否成功执行了。 我们来看看福克斯合同的传输地址:0xd 017 d 2403 d 779 a 319 e1FA 2261 E0 d 3997贝卡卡851

该合同只判断用户的限额,如果限额不足则返回false。 由于xFORCE合同没有对执行结果进行判断,因此无论用户帐户是否有足够的限额,都可以成功进行浇铸。 因此,限额不足的用户可以随意获得大量的xFORCE,使用xFORCE的withdraw函数,可以使用刚刚随手获得的xFORCE更换合同中的FORCE。 导致资金损失。

这是攻击者之一的钱包地址。0x 6807 D7 F7 DF 53 B 7739 F6438 Eabd 40 AB 8C 262 C0 A8交易地址:0x37 B44 DBBE 9C 1DD 75223 E 15977153234 E8 A4 DB BAB 2495 CDC 531 F44 BF6E3D 0

然后,用withdraw将得到的xFORCE变换为FORCE

二、SharkTeam安全建议

这次攻击事件的主要原因是外部合同xForce在调用令牌转让时没有严格判断其返回值,从而发生了用户可以自由铸造硬币的情况。 这一漏洞是典型的“虚假充值”合同漏洞,在关键逻辑上增加权限控制,在项目上线前委托专业智能合约审核机构进行严格的审核,以保障智能合约和数字资产的安全

标签