揭露 Mosca 项目中的缺陷逻辑

本文为机器翻译
展示原文

于2025年1月13日,币安智能链(BSC)上的Mosca合约因joinwithdraw流程中的逻辑错误而再次遭到攻击。此次攻击导致总损失约37.6k美元。

关键信息

攻击者:

https://bscscan.com/address/0xe763da20e25103da8e6afa84b6297f87de557419

漏洞合约:

https://bscscan.com/address/0xd8791f0c10b831b605c5d48959eb763b266940b9

攻击交易:

https://bscscan.com/tx/0xf13d281d4aa95f1aca457bd17f2531581b0ce918c90905d65934c9e67f6ae0ec

漏洞分析

攻击者利用设计缺陷,在执行withdrawFiat函数之前发起了七次连续的join调用。这一序列使攻击者能够操纵其余额的累积,并提取超出其存款的资金。

join函数分析

join函数旨在管理质押输入。然而,其逻辑允许用户余额根据先前余额不断累积。通过连续调用七次join,攻击者人为地膨胀了自己的余额。这种对质押收益计算的非常规方法创造了可被利用的意外状态。

withdrawFiat函数分析

withdrawFiat函数中,合约直接根据用户输入扣除提款金额,并将该金额转回给用户。这一公式与join函数的累积逻辑不一致,使攻击者能够提取超出原始存款的资金。

根本原因

核心问题在于join函数中的累积机制与withdrawFiat函数中的提款公式之间的不匹配。尽管withdrawFiat根据自身逻辑正确执行,但它未能考虑到重复join调用产生的复合余额。这种差异加上缺乏充分的验证检查,使攻击者能够提取大大超出其存款的资金。

经验教训

Mosca合约漏洞暴露了该项目智能合约设计中的一个核心且可避免的缺陷——这是在开发过程中彻底测试和安全审计就可以发现并解决的漏洞。这个案例突出了强大的测试用例、形式验证和第三方代码审查在部署前发现潜在攻击向量的重要性。它也强调了智能合约安全不仅仅局限于开发,还需要持续的风险评估和监控,以保护区块链生态系统免受利用。

感谢您阅读Verichains!免费订阅以接收新帖并支持我的工作。

来源
免责声明:以上内容仅为作者观点,不代表Followin的任何立场,不构成与Followin相关的任何投资建议。
喜欢
收藏
评论