简析Solana上的借贷平台安全性_DAO:ABUSD

概述

一直以来,安全始终是所有金融平台的重中之重。在无法保障资金安全的情况下,高收益都是一张张的空头支票。这一点对于去中心化借贷平台来说也是一样的。回顾过去的一年,不少的借贷平台都发生过安全事故,给用户带来了惨重的损失。

1.Venus大额清算事件

2021年5月18日,作为BSC链上最大的借贷平台,Venus清算了超过2百万的XVS(Venus平台币)。这直接导致了大量用户遭受惨重的损失和清算,坏账总额高达一亿美元。此次安全事故的发生是因为XVS的币价遭到了大户的恶意拉升,用价格虚高的XVS为抵押,借出了大量的BTC和ETH。XVS的流动性相对其他主流币而言较低,被恶意操控的风险更大。此次事故与Venus平台收录流动性较差的币种有着直接的关系,平台对于潜在风险的忽视也是这次安全事故发生的原因之一。

Beosin:BSC链上的gala.games项目遭受攻击事件简析:金色财经报道,根据区块链安全审计公司Beosin旗下Beosin EagleEye 安全风险监控、预警与阻断平台监测显示,BSC链上的gala.games项目遭受攻击,Beosin分析发现由于pNetwork项目的bridge配置错误导致pTokens(GALA) 代币增发,累计增发55,628,400,000枚pTokens(GALA),攻击者已经把部分pTokens(GALA) 兑换成12,976个BNB,攻击者(0x6891A233Bca9E72A078bCB71ba02aD482A44e8C1)累计获利约434万美元。Beosin Trace追踪发现被盗金额还存在攻击者地址中。

第一笔攻击交易:0x4b239b0a92b8375ca293e0fde9386cbe6bbeb2f04bc23e7c80147308b9515c2e

第二笔攻击交易:0x439aa6f526184291a0d3bd3d52fccd459ec3ea0a8c1d5bf001888ef670fe616d[2022/11/4 12:17:00]

2.Cream闪电贷攻击

安全团队:Audius项目恶意提案攻击简析,攻击者总共获利约108W美元:7月24日消息,据成都链安“链必应-区块链安全态势感知平台”安全舆情监控数据显示,Audius项目遭受恶意提案攻击。成都链安安全团队简析如下:攻击者先部署恶意合约并在Audius: Community Treasury 合约中调用initialize将自己设置为治理合约的监护地址,随后攻击者调用ProposalSubmitted 提交恶意85号提案并被通过,该提案允许向攻击合约转账1,856w个AudiusToken,随后攻击者将获得的AudiusToken兑换为ETH,总共获利约108W美元,目前获利资金仍然存放于攻击者地址上(0xa0c7BD318D69424603CBf91e9969870F21B8ab4c)。[2022/7/24 2:34:31]

2021年10月27日,CreamFinance在推特上公开承认,他们再次遭受了闪电贷袭击,总损失金额高达1.3亿美元。这已经是该平台本年度的第三次安全事故,前两次分别发生在2021年的2月和8月,两次分别损失了近0.4亿和近0.3亿美元。CreamFinance本年度的三次安全事故均是遭受的闪电贷袭击,这是一种近两年非常常见的针对借贷平台的黑客攻击手段。

慢雾:Avalanche链上Zabu Finance被黑简析:据慢雾区情报,9月12日,Avalanche上Zabu Finance项目遭受闪电贷攻击,慢雾安全团队进行分析后以简讯的形式分享给大家参考:

1.攻击者首先创建两个攻击合约,随后通过攻击合约1在Pangolin将WAVAX兑换成SPORE代币,并将获得的SPORE代币抵押至ZABUFarm合约中,为后续获取ZABU代币奖励做准备。

2.攻击者通过攻击合约2从Pangolin闪电贷借出SPORE代币,随后开始不断的使用SPORE代币在ZABUFarm合约中进行`抵押/提现`操作。由于SPORE代币在转账过程中需要收取一定的手续费(SPORE合约收取),而ZABUFarm合约实际接收到的SPORE代币数量是小于攻击者传入的抵押数量的。分析中我们注意到ZABUFarm合约在用户抵押时会直接记录用户传入的抵押数量,而不是记录合约实际收到的代币数量,但ZABUFarm合约在用户提现时允许用户全部提取用户抵押时合约记录的抵押数量。这就导致了攻击者在抵押时ZABUFarm合约实际接收到的SPORE代币数量小于攻击者在提现时ZABUFarm合约转出给攻击者的代币数量。

3.攻击者正是利用了ZABUFarm合约与SPORE代币兼容性问题导致的记账缺陷,从而不断通过`抵押/提现`操作将ZABUFarm合约中的SPORE资金消耗至一个极低的数值。而ZABUFarm合约的抵押奖励正是通过累积的区块奖励除合约中抵押的SPORE代币总量参与计算的,因此当ZABUFarm合约中的SPORE代币总量降低到一个极低的数值时无疑会计算出一个极大的奖励数值。

4.攻击者通过先前已在ZABUFarm中有进行抵押的攻击合约1获取了大量的ZABU代币奖励,随后便对ZABU代币进行了抛售。

此次攻击是由于ZabuFinance的抵押模型与SPORE代币不兼容导致的,此类问题导致的攻击已经发生的多起,慢雾安全团队建议:项目抵押模型在对接通缩型代币时应记录用户在转账前后合约实际的代币变化,而不是依赖于用户传入的抵押代币数量。[2021/9/12 23:19:21]

回顾以上的安全事故,我们不难得出结论,借贷平台的安全性主要取决于团队对于风险的控制以及对于潜在风险的审计和测试。

慢雾:BSC项目Value DeFi vSwap 模块被黑简析:据慢雾区情报,币安智能链项目 Value DeFi 的 vSwap 模块被黑,慢雾安全团队第一时间介入分析,并将结果以简讯的形式分享,供大家参考:

1. 攻击者首先使用 0.05 枚 WBNB 通过 vSwap 合约兑换出 vBSWAP 代币;

2. 攻击者在兑换的同时也进行闪电贷操作,因此 vSwap 合约会将兑换的 vBSWAP 代币与闪电贷借出的 WBNB 转给攻击者;

3. 而在完成整个兑换流程并更新池子中代币数量前,会根据池子的 tokenWeight0 参数是否为 50 来选择不同的算法来检查池子中的代币数量是否符合预期;

4. 由于 vSwap 合约的 tokenWeight0 参数设置为 70,因此将会采用第二种算法对池子中的代币数量进行检查;

5. 而漏洞的关键点就在于采用第二种算法进行检查时,可以通过特殊构造的数据来使检查通过;

6. 第二种算法是通过调用 formula 合约的 ensureConstantValue 函数并传入池子中缓存的代币数量与实时的代币数量进行检查的;

7. 在通过对此算法进行具体分析调试后我们可以发现,在使用 WBNB 兑换最小单位(即 0.000000000000000001) vBSWAP 时,池子中缓存的 WBNB 值与实时的值之间允许有一个巨大的波动范围,在此范围内此算法检查都将通过;

8. 因此攻击者可以转入 WBNB 进行最小单位的 vBSWAP 代币兑换的同时,将池子中的大量 WBNB 代币通过闪电贷的方式借出,由于算法问题,在不归还闪电贷的情况下仍可以通过 vSwap 的检查;

9. 攻击者只需要在所有的 vSwap 池子中,不断的重复此过程,即可将池子中的流动性盗走完成获利。详情见原文链接。[2021/5/8 21:37:37]

本文将会针对Solana公链上的借贷平台,进行一系列的安全性分析。

Harvest.Finance被黑事件简析:10月26号,据慢雾区消息 Harvest Finance 项目遭受闪电贷攻击,损失超过 400 万美元。以下为慢雾安全团队对此事件的简要分析。

1. 攻击者通过 Tornado.cash 转入 20ETH 作为后续攻击手续费;

2. 攻击者通过 UniswapV2 闪电贷借出巨额 USDC 与 USDT;

3. 攻击者先通过 Curve 的 exchange_underlying 函数将 USDT 换成 USDC,此时 Curve yUSDC 池中的 investedUnderlyingBalance 将相对应的变小;

4. 随后攻击者通过 Harvest 的 deposit 将巨额 USDC 充值进 Vault 中,充值的同时 Harvest 的 Vault 将铸出 fUSDC,而铸出的数量计算方式如下:

amount.mul(totalSupply()).div(underlyingBalanceWithInvestment());

计算方式中的 underlyingBalanceWithInvestment 一部分取的是 Curve 中的 investedUnderlyingBalance 值,由于 Curve 中 investedUnderlyingBalance 的变化将导致 Vault 铸出更多的 fUSDC;

5. 之后再通过 Curve 把 USDC 换成 USDT 将失衡的价格拉回正常;

6. 最后只需要把 fUSDC 归还给 Vault 即可获得比充值时更多的 USDC;

7. 随后攻击者开始重复此过程持续获利;

其他攻击流程与上诉分析过程类似。参考交易哈希:0x35f8d2f572fceaac9288e5d462117850ef2694786992a8c3f6d02612277b0877。

此次攻击主要是 Harvest Finance 的 fToken(fUSDC、fUSDT...) 在铸币时采用的是 Curve y池中的报价(即使用 Curve 作为喂价来源),导致攻击者可以通过巨额兑换操控预言机的价格来控制 Harvest Finance 中 fToken 的铸币数量,从而使攻击者有利可图。[2020/10/26]

Solana公链上的主要借贷平台汇总

表1.Solana链上的主流借贷平台

是否审计

审计是智能合约安全性的第一道防线,也是对平台进行安全性分析时的一个重要指标。

审计的作用就像是一个监管的第三方,让所有利益相关者可以相信平台运作过程中的透明度,以及平台是否遵循了目前行业标准的预期。随着Defi行业的不断发展和成熟,监管的标准和要求也会更加的规范化,在这个过程中,审计将继续发挥关键的作用。

表2总结了上述所有平台的审计公司。

在上述的六个平台中,JetProtocol是目前唯一一个在未经审计的主网上运行的平台。尽管他们的代码已经经过了Solana基金会所提供的外部白帽子开发团队的审查,对此还是建议用户保持谨慎。

Solen,Apricot,Larix以及Soda都经过了知名知名智能合约审计公司的审计。

其中Soda的审计方Certik是Binance的正式合作或盘,并且得到了包括BinanceLabs,Lightspeed,MatrixPartners,andDHVC在内的知名投资者的支持。

Larix的审计方慢雾科技是目前在区块链行业领先的安全性审计公司,是EOS,Cosmos,Vechain等顶级区块链项目的合作伙伴。慢雾以其强大的EOS智能合约防火墙项目FireWall.X而闻名。

支持币种

纵观2021年的借贷平台安全事故,尤其是以Venus5月份的大额清算事故为例,支持流动性较低的币种的风险显而易见。此类币的价格极其容易被心怀不轨的人恶意操控,随即借空平台资产,从而导致大量的坏账。借贷平台在上新币种的时候应该意识到此类风险,进行风险管理并尽最大可能保护其用户不会成为这些恶意攻击的受害者,这也是借贷平台应负的责任。Venus的大额清算事故以惨痛的代价给我们上了这一课。

在本文所分析的六个借贷平台中,Larix,Jet和Soda仅支持了不易受到市场操控影响的主流币,大大减小了该类事故发生的风险。其余的三个平台,Solend支持了SER,MER,SLND(Solend平台币),Apricot支持了ORCA,Port支持了MER、FIDA和自己的平台币PORT。以上均是流动性相对较低的币种,其价格存在很大的被操纵空间,为这些平台的安全增加了一层不确定性。

代码开源

在评估借贷平台的安全性时,代码是否开源是另一个重要的指标。开源意味着所有的代码都是公开透明的,每个人都有访问权限。开源的代码会为平台增加安全性主要是因为以下几点。

?由于开源代码的透明性,更多双眼睛可以帮助平台一起寻找并维护代码

?开源代码意味着平台在解决安全隐患时将会更有效率,极高的公众可见性为解决漏洞增加了紧迫性

?开源代码意味着开发人员无法在代码中镶嵌恶意指令

在本文今天所分析的所有平台中,只有Larix和Solend在官网上明确表示他们的代码是开源的,其余平台的代码是否开源或部分开源尚不得而知。

预言机

借贷项目最主要的风险来自于两个方面,第一是私钥泄露,第二就是报价出错。其中报价出错除了支持资产的价格被恶意操纵外,还有很大的风险是来自于预言机的报价错误。Solend就曾因为mSOL报价错误,导致不少用户被错误清算,损失资产的情况。而Apricot官方近日也紧急下架了LP抵押功能,并承认了其LP计价方式有误,但还是导致部分用户被错误清算损失了资金。目前这几家借贷采用的主要还是Pyth的预言机方案,ChainLink还未支持Solana资产的报价。但比较合理的还是中心化和去中心化交易所,以及预言机喂价相互校验的喂价机制。

漏洞赏金计划

漏洞赏金是一个为借贷平台增加额外安全性的机制,为发现漏洞并上报给平台方的人提供丰厚的赏金,该计划鼓励社区和白帽子黑客对智能合同的安全性进行审计。Solend,Larix和Port都有明确的漏洞赏金计划。2021年11月,Solend和Larix联手向发现并上报了SPL代币借贷库漏洞的Neodyme团队提供了丰厚的赏金。

总结

在金融中,有一个理论叫做’不可能三角’理论,即高流动性,低风险和高收益是无法同时满足的。这个理论同样适用于加密领域的投资,因此,与其不停的追逐更高的收益,我们应该停下来花一点时间来思考我们资产的安全性。毕竟,如果赚了利息,但却丢了本金,那可就真是捡了芝麻丢了西瓜。切记,挖矿千万条,安全第一条。

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

金宝趣谈

[0:15ms0-4:308ms