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

判断一个人到底属于什么资产阶级,只需要看他的负债率。简而言之,借的钱越多,代表你越有钱。所以借钱从某种角度上来讲,是属于富人的游戏。通过借贷手段合理分配资产从而达到收益也是理财的精髓。相信每个人都好奇过,银行到底拿我们存的钱去做什么了呢?从这种角度上来讲,银行属于最大的欠款方。那如果,突然有人攻破了银行系统,强制银行“还款”,然后本来需要还到储蓄者账户里的钱款直接被攻击者收入囊中,储蓄者和银行都将成为最大的受害方。

澳大利亚证券交易所已在区块链股票结算系统上投入1.5亿美元:金色财经报道,根据澳大利亚证券交易所(ASX)年度业绩公告披露,截至2022年6月底,该交易所已在区块链股票结算系统上花费2.16亿澳元(1.5亿美元),据悉这笔费用包括了他们自2016年以来的所有工作成本,但不包括其对软件开发商Digital Asset的投资,按照相关规划,Digital Asset的DAML智能合约语言将用于澳大利亚证券交易所的区块链结算系统CHESS ,VMware Blockchain提供分布式账本技术(DLT)。 (ledgerinsights)[2022/8/18 12:34:21]

北京时间9月21日,CertiK安全研究团队发现soda区块链项目中存在智能合约安全漏洞,该漏洞允许任意外部调用者通过调用智能合约函数,无视受害用户债务中的代币数目,强行结算受害用户的债务,并将通过结算操作所得的收益转入到自己的收款地址。soda项目官方现在已经提交修复补丁来修复这个安全漏洞,但由于soda项目采用了TimeLock来将所有的操作延迟48小时,修复补丁会在延迟事件之后生效,因此截止发稿时,该漏洞已完成修复。漏洞技术分析

上海数据交易所启动元宇宙全球招聘:3月7日至14日,上海数据交易所启动元宇宙全球招聘,同步上线元宇宙招聘大厅,这也是上海数据交易所成立以来的首次招聘。此次招聘发布50个岗位,目标招聘全球150个精英。岗位主要涉及交易组织管理部、市场发展部、数商管理部、战略发展部、风控管理部、产品研发部、人力行政部、财务管理部、研究院九大部门。应聘者可以通过参与互动获得具有纪念意义的上海数据交易所首发数字藏品。(科创板日报)[2022/3/7 13:41:59]

https://github.com/

孙宇晨:波场已在支付、借贷、稳定币、去中心化交易所等多领域完成布局:据最新消息显示,波场TRON创始人兼BitTorrent CEO孙宇晨在TokenClub上做客「张姨杨姨」币圈吐槽大会,孙宇晨在直播中表示:“波场 TRON 已经在支付、借贷、稳定币、去中心化交易所、去中心化存储、去中心化钱包等多领域完成布局并初见规模,波场 TRON 生态正处于蓬勃发展中。波场一直深耕区块链技术,经历两年,目前已经踏进TRON4.0时代,不仅仅是人类去中心化互联网的愿景继承者,更是人类下一代的金融互联网基础设施,波场是万能的,波场的发展日新月异。”[2020/7/29]

分析 | 以太坊主流交易所24H交易量略有下滑 对比特币汇率有一定抬升:据 TokenGazer 数据分析显示,截止至 11 月 12?日 11 时,以太坊价格为$187.56,总市值为$20,150.89M,主流交易所24H交易量约为$52.59M,环比昨日下滑17.01%;近期以太坊对比特币汇率有一定上行趋势;基本面方面,以太坊链上交易量、链上DApp交易量有一定增长,新增地址增速有一定提升,算力持续下滑;以太坊 30 天开发者指数约为 2.23;以太坊与 BTC 180 天关联度保持稳定,30 天 ROI 略有回调;据TokenGazer官网六道数据显示,以太坊情绪指数移动平均线呈下滑趋势;由于费率的下调,抵押在Maker上的ETH总量有一定增长。[2019/11/12]

soda项目中的WETHCalculator.sol智能合约中存在逻辑实现错误导致的安全漏洞,图一中WETHCalculator.sol智能合约第193行,maximumLoad的计算公式错误的使用了amount作为基础值。因此,在196行满足require()判断的检测条件loanTotal>=maximumLoan可以转换为:loanInfo.amount+interest>=loanInfo.amount*maximumLTV/LTV_BASE由于maximumLTV/LTV_BASE的值是在0.15-0.95区域中变动,并且interest>=0。因此图一196行的require()判断中的检测条件总是为真。失去了该require()判断的保护,任何外部调用者可以通过调用以下图二中SodaBank.sol中104行的collectDebt()函数来将任意loadId的贷款清空。在执行该函数的过程中,图一中的collectDebt()函数会在图2第121行被执行,并通过123行和125行代码将该用户锁在soda里面的WETH的其中一部分转移到该外部调用者的地址msg.sender中:

https://github.com/通过以上漏洞,任何外部调用者都可以通过调用SodaBank.sol中的collectDebt()并传入其他用户的loadId来清空该用户在soda中的代币。官方修复细节

soda官方为修复以上漏洞,设计了新的智能合约WETHCalculatorFixed.sol来替换WETHCalculator.sol。通过分析可以看到在图三WETHCalculatorFixed.sol智能合约第979行,maximumLoan的计算公式被正确的计算为loanInfo.lockedAmount*maximumLTV/LTV_BASE。因此,图三中第982行require()判断的检测条件变更为:loanInfo.amount+interest>=loanInfo.lockedAmount*maximumLTV/LTV_BASE

https://github.com/该等式的代码实现与soda项目中的逻辑设计相符,该等式的真假与用户的借贷债务数目和被锁本金数目相关。漏洞完成修复。soda项目中关于该等式的逻辑设计细节可以从下面的链接中进行了解:https://medium.com/soda-finance/the-soda-revolution-9185fdb99fc1事件分析总结

该漏洞是由于逻辑设计与代码实现不符而造成。当前常用的单元测试等测试方法以及自动化的测试工具均无法有效的查找到该种与逻辑相关的漏洞。因此,CertiK安全团队有以下安全建议:安全是区块链项目的立足之本,任何区块链项目在上线前需要请专业第三方安全审计团队对项目整体代码进行安全审计。当前区块链检测工具对智能合约的检测均无法检测其逻辑上出现的漏洞,其结果也没有可信的数学证明作为支撑。形式化验证是当前唯一被证明可以产生可信数学证明的软件验证方法。采用基于形式化验证方法的区块链检测工具来验证项目中的安全漏洞,应成为每一个项目在上链前的必经步骤

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

链链资讯

[0:15ms0-6:558ms