当前位置:主页 > 列表页 > 正文

一个小数点造成数百万美元蒸发,Fantasm Finance攻击事件分析

2022-03-11 03:08 | 出处: odaily

北京时间2022年3月9日21:50,CertiK安全专家团队检测到Fantasm Finance抵押池被恶意利用。

攻击者铸造了大量的XFTM代币,并将其交易为ETH总损失约为1000ETH(价值约270万美元)。

下文CertiK安全团队将从合约地址及攻击操作等方面为大家进行详细的解读并分析。

https://ftmscan.com/tx/0 x64da8b8043b14fe93f7ab55cc56ccca2d190a59836a3f45dbb4b0a832e329cac

https://ftmscan.com/tx/0 xa84d216a1915e154d868e66080c00a665b12dab1dae2862289f5236b70ec2ad9

①攻击者在地址0 x944b58c9b3b49487005cead0ac5d71c857749e3e部署了一个未经验证的合约。

②在第一个tx中,攻击者将Fantom代币(FTM)换成FSM代币,并在合约0 x880672ab1d46d987e5d663fc7476cd8df3c9f937中调用mint()函数。

③攻击者调用collect()函数,以此铸造了超出权限更多的XFTM代币。

④攻击者多次重复步骤②和③,造成Fantasm Finance巨额损失。

在函数calcMint中,合约使用以下公式来计算铸币量:

_xftmOut = (_fantasmIn * _fantasmPrice * COLLATERAL_RATIO_MAX * (PRECISION - mintingFee)) / PRECISION / (COLLATERAL_RATIO_MAX - collateralRatio) / PRICE_PRECISION。

由于小数点错误,导致_xftmOut最终的值远远大于代码的设计初衷。

写在最后

本次事件主要是由合约公式计算错误引起的。

只需通过适当的同行评审、单元测试和安全审计,这一类型的风险往往极易避免。

在加密世界里大家一提到漏洞,往往会认为漏洞必然是很复杂的,其实并非总是如此。有时一个小小的计算错误,就可以导致数百上千万美元的资产一朝蒸发。

本次事件的预警已于第一时间在CertiK项目预警推特【https://twitter.com/CertiKAlert】进行了播报。

除此之外,CertiK官网https://www.certik.com/也已添加社群预警功能。大家可以随时访问查看与漏洞、黑客袭击以及Rug Pull相关的各种社群预警信息。

近期攻击事件高发,加密项目方及用户们应提高相关警惕并及时对合约代码进行完善和审计。

除此之外,技术团队应及时关注已发生的安全事件,并且检查自己的项目中是否存在类似问题。

参考链接:

1. https://blocksecteam.medium.com/the-analysis-of-the-array-finance-security-incident-bcab555326c1

2. https://peckshield.medium.com/xwin-finance-incident-root-cause-analysis-71d0820e6bc1

3. https://peckshield.medium.com/pancakebunny-incident-root-cause-analysis-7099f413cc9b

4. https://www.certik.io/blog/technology/copycat-attack-balancer-why-defi-needs-change#home

5. https://www.certik.org/blog/uranium-finance-exploit-technical-analysis

6. https://www.certik.io/blog/technology/little-pains-great-gains-balancer-defi-contract-was-drained#home

7. https://www.certik.io/blog/technology/yam-finance-smart-contract-bug-analysis-future-prevention#home

您可能感兴趣的文章:

相关文章