火星链 火星链
Ctrl+D收藏火星链
首页 > 以太坊 > 正文

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

作者:

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

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

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

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

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

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

CertiK:ArbitrumNews DAO项目Discord服务器已被入侵,请勿点击任何链接:金色财经报道,据CertiK监测,ArbitrumNews DAO项目Discord服务器已被入侵,有黑客发布了虚假空投信息。在团队确认已重获对服务器的控制之前,请勿点击任何链接。[2023/5/19 15:12:48]

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

漏洞技术分析

图一

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

沙特机场地勤服务提供商SGS将在28个机场实施DocCerts区块链管理解决方案:金色财经报道,沙特机场地勤服务提供商 SGS 将与区块链公司 IR4LAB 合作,在沙特的 28 个机场实施 DocCerts 区块链管理解决方案,适用于 SGS 提供地面服务的 28 个沙特阿拉伯机场颁发的所有培训相关数字文件和地面服务设备许可证。[2023/2/9 11:56:45]

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

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

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

Larry Cermak:Nexo所有EVM地址中NEXO占比近70%,价值2.64亿美元:金色财经报道,TheBlock副总裁Larry Cermak在社交媒体上称,这些都是我数据库中Nexo的EVM地址,目前在19个钱包中总持有3.78亿美元,其中2.64亿美元是NEXO代币。所有EVM地址加起来只有1.14亿美元的非NEXO资产。[2023/1/13 11:11:07]

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

Bitfinex新投票系统允许为EOS Block Producers投票:据Coin Pedia消息,Bitfinex的新投票系统Bitfinex Ballot将允许EOS持有者在交易平台上直接为EOS Block Producers投票。文章评论称,这对于投票困难的EOS持有者和Block Producers来说无疑是一件好事,此外Bitfinex作为EOS Block Producers的主要候选对象,排名第12,如果保持这样的投票速度,将确定其成为EOS BP。[2018/6/19]

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

标签:SODSODAODACERSoda FinanceSoda CoinYODA币CERE币

以太坊热门资讯
AVA:【2020.9.24 周四】数交所日报

币圈大事精选:1.数交所合约交易市场,低手续费、同时开启止盈止损功能交易更便捷;新版APP全面上线,欢迎下载体验。2.数交所合约:BTC现居10300美元上方,请注意行情波动,做好风险控制.

1900/1/1 0:00:00
USDT:重磅:XMEX交易大赛福利三重奏 壕送12万USDT!

近日,XMEX交易所推出“交易大赛福利三重奏”活动,点燃了数字货币衍生品市场的热情。本次活动时间为9月21日00:00-9月27日24:00,凡在此期间参与交易的用户就可共同瓜分12万USDT!.

1900/1/1 0:00:00
BigONE:BigONE 将开启 NEST(NEST Protocol)交易,上线 NEST / USDT 交易对

亲爱的用户:BigONE将于2020年9月27日16:00开启NEST交易,上线NEST/USDT交易对,NEST充提服务现已开启.

1900/1/1 0:00:00
DOG:席幕枫:9.24以太坊破位在即,空头延续接着空

多言不可与谋,多动不可与久处,交易与其冲动,还不如一动不动!大家好,我是席幕枫。心存阳光必有诗与远方,认识老席何惧再遇荒凉?9.24ETH行情分析:以太坊,日线破低收阴,空头跌势不止,席幕枫近日.

1900/1/1 0:00:00
区块链:金财币:9.24比特币行情分析 下行趋势 反弹受限

BTC凌晨开始放量下滑,跌破短期10300支撑,低点触及10140盘口资金开始流出,行情出现小幅反弹,市场成交活跃度比较低,横盘震荡出现大批观望情绪,行情出现快速下跌后,这种小幅缩量震荡态势.

1900/1/1 0:00:00
ONT:WBF交易所与火源交易所达成战略合作,即将上线火源平台币ARU

WBF将于近期上线ARU/USDT交易对,具体上线时间请关注官方公告。ARU将于新加坡时间2020年9月22日晚20点整正式上线火源交易所,并与22日晚8点准时开放交易ARU/USDT交易对.

1900/1/1 0:00:00