木星链 木星链
Ctrl+D收藏木星链
首页 > AAVE > 正文

SODA:CertiK:Soda项目智能合约安全漏洞分析

作者:

时间:1900/1/1 0:00:00

判断一个人到底属于什么资产阶级,只需要看他的负债率。简而言之,借的钱越多,代表你越有钱。

所以借钱从某种角度上来讲,是属于富人的游戏。通过借贷手段合理分配资产从而达到收益也是理财的精髓。

相信每个人都好奇过,银行到底拿我们存的钱去做什么了呢?

从这种角度上来讲,银行属于最大的欠款方。那如果,突然有人攻破了银行系统,强制银行“还款”,然后本来需要还到储蓄者账户里的钱款直接被攻击者收入囊中,储蓄者和银行都将成为最大的受害方。

北京时间9月21日,CertiK安全研究团队发现soda区块链项目中存在智能合约安全漏洞,该漏洞允许任意外部调用者通过调用智能合约函数,无视受害用户债务中的代币数目,强行结算受害用户的债务,并将通过结算操作所得的收益转入到自己的收款地址。

CertiK:NFT纸牌游戏Z-ERA出现漏洞损失28.5万美元:金色财经报道,区块链安全公司CertiK报告称,基于NFT的纸牌游戏Z-ERA出现漏洞损失285,000美元。CertiK发现了一个涉及由外部帐户部署的未经验证的合约的漏洞。攻击者获得了180万个ZERA代币并出售,导致ZERA代币价格暴跌99%。

此外,1178.5枚BNB被转移到Tornado Cash。被盗代币约占总供应量的27%。尽管事件发生在游戏发布后不久,但Z-ERA对这次袭击事件保持沉默。[2023/6/22 21:53:26]

soda项目官方现在已经提交修复补丁来修复这个安全漏洞,但由于soda项目采用了TimeLock来将所有的操作延迟48小时,修复补丁会在延迟事件之后生效,因此截止发稿时,该漏洞已完成修复。

BabyHusky已通过Certik审计将于7月15日开启游戏业务:据官方消息,MDIS跨链燃烧代币BabyHusky已完成Token代码与机池双审计,审计结果可以在Certik官网进行查询。BabyHusky优化了原全战三国的数据参数,并将在7月15日上线各项游戏功能。

目前BabyHusky是BSC上具有机池、游戏等实际应用场景的燃烧系列代币,MDIS将持续的推动BabyHusky燃烧价值的落地。[2021/7/7 0:34:20]

漏洞技术分析

图一

soda项目中的WETHCalculator.sol智能合约中存在逻辑实现错误导致的安全漏洞,图一中WETHCalculator.sol智能合约第193行,maximumLoad的计算公式错误的使用了amount作为基础值。

Gnosis就是否允许锁定在Balancer池中的GNO参与快照建议投票发起提案:据官方博客消息,DeFi预测平台Gnosis发起一项提案,以确定GnosisDAO是否应该允许使用锁定在Balancer池中的GNO对快照建议进行投票。[2020/12/17 15:27:26]

因此,在196行满足require()判断的检测条件loanTotal>=maximumLoan可以转换为:

loanInfo.amountinterest>=loanInfo.amount*maximumLTV/LTV_BASE

由于maximumLTV/LTV_BASE的值是在0.15-0.95区域中变动,并且interest>=0。因此图一196行的require()判断中的检测条件总是为真。

Cereal与Giga Watt达成合作伙伴:韩国正开发以虚拟货币与矿机为担保做贷款的初创公司Cereal与世界首次提供采矿解决方案的Giga Watt达成战略合作关系。通过这次合作Cereal可以获得Giga Wattde 的基础设施支援,可以加速开发贷款平台。[2018/5/23]

失去了该require()判断的保护,任何外部调用者可以通过调用以下图二中SodaBank.sol中104行的collectDebt()函数来将任意loadId的贷款清空。在执行该函数的过程中,图一中的collectDebt()函数会在图2第121行被执行,并通过123行和125行代码将该用户锁在soda里面的WETH的其中一部分转移到该外部调用者的地址msg.sender中:

图二(参考链接2)

通过以上漏洞,任何外部调用者都可以通过调用SodaBank.sol中的collectDebt()并传入其他用户的loadId来清空该用户在soda中的代币。

官方修复细节

soda官方为修复以上漏洞,设计了新的智能合约WETHCalculatorFixed.sol来替换WETHCalculator.sol。

通过分析可以看到在图三WETHCalculatorFixed.sol智能合约第979行,maximumLoan的计算公式被正确的计算为loanInfo.lockedAmount?*maximumLTV/LTV_BASE。因此,图三中第982行require()判断的检测条件变更为:

loanInfo.amountinterest>=loanInfo.lockedAmount*maximumLTV/LTV_BASE

图三

该等式的代码实现与soda项目中的逻辑设计相符,该等式的真假与用户的借贷债务数目和被锁本金数目相关。漏洞完成修复。

soda项目中关于该等式的逻辑设计细节可以从下面的链接中进行了解:

https://medium.com/soda-finance/the-soda-revolution-9185fdb99fc1

事件分析总结

该漏洞是由于逻辑设计与代码实现不符而造成。当前常用的单元测试等测试方法以及自动化的测试工具均无法有效的查找到该种与逻辑相关的漏洞。

因此,CertiK安全团队有以下安全建议:

安全是区块链项目的立足之本,任何区块链项目在上线前需要请专业第三方安全审计团队对项目整体代码进行安全审计。

当前区块链检测工具对智能合约的检测均无法检测其逻辑上出现的漏洞,其结果也没有可信的数学证明作为支撑。形式化验证是当前唯一被证明可以产生可信数学证明的软件验证方法。采用基于形式化验证方法的区块链检测工具来验证项目中的安全漏洞,应成为每一个项目在上链前的必经步骤。

参考链接:

图一:

https://github.com/soda-finance/soda-contracts/blob/master/contracts/calculators/WETHCalculator.sol#L189

图二:

https://github.com/soda-finance/soda-contracts/blob/master/contracts/components/SodaBank.sol#L104

图三:

https://github.com/soda-finance/soda-contracts/blob/master/contracts/calculators/WETHCalculatorFixed.sol#L275

标签:SODASODODACERSODA币SODIUM价格PayYodaDEFILANCER价格

AAVE热门资讯
区块链:BeeX晚报| 09.24 火币即将上线 TITAN 并开启“新币挖矿”

资讯热点1.DeFi创世挖矿WBB于24日正式上线,开盘最高涨幅达4880%9月24日消息,DeFi项目WBB创始挖矿首日,上线0.5分钟即完成了首轮10万USD的限量质押.

1900/1/1 0:00:00
TOKE:开启Chicken Finance (KFC)交易 / 2020.9.24

亲爱的BithumbGlobal用户:BithumbGlobal将在DeFi板上线KFC?数字资产服务.

1900/1/1 0:00:00
BTC:[持币者]9月24日比特币以太坊行情分析 整体的上移能否止跌

目前比特币和以太坊行情还是处于瀑布后的修复阶段,行情整体走势上还是微微向上,不同于之前白天下跌,凌晨微幅上涨。在今日凌晨时刻,比特币和以太坊同步下跌,时间趋势有些相反.

1900/1/1 0:00:00
EOS:LOEx国际站进取区即将上线BTE

尊敬的LOEx用户:LOEx国际站进取区即将上线BTE,敬请期待。币种介绍代币简称:BTE代币全称:Bitecosystem发行量:66万现流通总量:26万官网链接:http://www.bte.

1900/1/1 0:00:00
MKC:关于LBank完成「MKCY交易大赛」的说明公告

尊敬的LBank用户:LBank于2020年9月18日16:00(UTC8)开启「交易MKCY,赢等值35,000USDT大奖」,截止9月24日16:00,该活动已结束,现在公布活动结果.

1900/1/1 0:00:00
比特币:该指标表明比特币回升

数字资产的多变性质通常会侵蚀交易者,导致市场仓促决策。与传统市场不同,比特币的移动节奏快,而当前由比特币推动的移动就是最好的例子.

1900/1/1 0:00:00