宇宙链 宇宙链
Ctrl+D收藏宇宙链

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

作者:

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

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

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

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

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

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

CertiK:警惕推特上假冒Lido空投的虚假宣传:金色财经报道,据CertiK官方推特发布消息称,警惕推特上假冒Lido空投的虚假宣传,请用户切勿与events-lido.fi互动,该网站会连接到一个已知的自动盗币地址。[2023/7/9 22:27:14]

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

漏洞技术分析

图一

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

Balancer上线Polygon网络:7月1日消息,Balancer上线Polygon,Balancer官方表示将与Polygon合作提升DeFi流动性,降低交易费用。Balancer将会在Polygon网络进行流动性挖矿。[2021/7/1 0:20:52]

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

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

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

Larry Cermak:Paradigm的UNI投资市值或超30亿美元:The Block 分析师 Larry Cermak 发推称:Paradigm的UNI投资市值现在可能超过30亿美元。此前他发推称:如果UNI价格达到11美元,Paradigm不到500万美元的投资就将价值10亿美元。2019年4月Uniswap完成种子轮融资,Paradigm领投。[2021/3/23 19:09:36]

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

Balancer总锁仓价值超过10亿美元:金色财经报道,DeFi Pulse数据显示,Balancer已成为第四个总锁仓价值达到10亿美元的DeFi协议,其总锁仓价值目前约为10.6亿美元。[2020/8/29]

图二(参考链接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

标签:SODSODAODACERSODO价格Soda FinanceYODASoccerHub

以太坊交易所热门资讯
Origin Protocol 推出稳定币 OUSD,兼具自动挖矿、弹性供应等特性

基于以太坊和IPFS的去中心化共享经济协议OriginProtocol推出稳定币OriginDollar,结合了DeFi项目Yearn的自动挖矿、另类稳定币项目Ampleforth的弹性供应以及Tether的易用性.

1900/1/1 0:00:00
ICS相互链:用区块链打造利益共同体

2020年是全球面临灾难和经济衰退的一年,新冠疫情席卷全球,让世界出现了罕见的逆全球化。然而这在整个人类历史上,远远并非孤例。自人类进入原始社会以来,和自然界的搏斗、和疾病的战斗、人类自己的战争,种种灾难不断侵袭.

1900/1/1 0:00:00
关于WBF上线WING的公告

尊敬的用户: WBF将在DeFi区上线WING/USDT交易对,具体时间安排如下:交易时间:2020年9月23日15:00 充值、提币业务已开通 提币限额: 单笔最大提币限额198.4单笔最小提币限额0.1984当日提币最大限额396.

1900/1/1 0:00:00
金色早报 | SBF:NFT需构建重要用例并进行推广

头条 ▌SBF:NFT需构建重要用例并进行推广FTX创始人、Serum顾问SamBankman-Fried刚刚发推称,我表示,1.NFT真的很酷。2.NFT也可能超级蹩脚。3.这使我想起STO狂热:请不要把一个好东西本末倒置.

1900/1/1 0:00:00
【波场系列】SSO-DAPP挖矿操作

┃SSO-DAPP挖矿操作1:通过合约钱包或钱包内输入网址进入SSODAPP ①:可切换语言 Uniswap 月前端交易用户数创两年以来新高:5月31日消息,据 Dune 数据显示.

1900/1/1 0:00:00
金色观察丨比特币韭月波动加剧 但这次你敢不看好吗?

金色财经区块链9月23日讯??比特币矿工在过去的两个月中抛售了大量比特币,但分析师认为这种行为并不会阻止下一轮牛市的到来.

1900/1/1 0:00:00