一场DeFi协议的漏洞险情最终在网友「曝光式」预警下得到了开发方的补救。被曝光存在漏洞的协议名叫Soda.finance(Soda),刚刚创建一周,目前团队尚处匿名状态。
9月20日下午,网友「废X废」在微博上警示DeFi用户, Soda协议的合约有漏洞,其中一个抵押借款池内的借款单可被人「随便清算」。
一个小时后,Soda协议方作出响应,分别提示借款人还款、抵押者提款的同时,表示将修复漏洞,暂停前端借款功能。
尽管如此,至9月21日凌晨,Soda抵押借款池中仍有400多个ETH被恶意清算。当日上午,该协议官方在Twitter上称,漏洞已修复,新部署的智能合约预计9月22日21点生效。
DeFi市场热络的同时,安全事故其实一直如影随形。从6月「流动性挖矿」引爆市场后,区块链安全机构PeckShield统计,6月、7月、8月共计17起安全事件发生在DeFi领域,至少造成400万美元的损失。
DeFi火爆的同时,安全事件也在警示每一位DeFi参与者:别被市场热度「烧光」了风险意识。
Soda存清算漏洞 2万ETH遇险
9月20日下午5点,网友「废X废」在微博上公开了一个有关Soda.finance(Soda)协议的风险提示,「不要抵押WETH借SoETH,合约有漏洞,其他人可以随便清算你的借款单」。
公开预警之前,「废X废」曾通过Soda公开的官方渠道通知过对方,「不过好像开发人员没在。」
公开信息显示,Soda于9月15日创建在以太坊上,它是一个抵押借贷场景的DeFi协议,国内用户喜欢用「苏打水」称呼该协议。按照Soda设计的规则,一个借贷池内,当借款人的债务和利息费用超过抵押资产的价值和清算比例时,债权人可以通过智能合约触发清算,按照协议规定的折现率获得SoETH(Soda协议上的ETH等价资产)凭证,从而获得债务人的抵押资产及协议提供的挖矿奖励。
按照「废X废」的说法,他发现的这个漏洞将对SoETH /WETH抵押借贷资金池产生风险,即任何人借此漏洞对协议发起攻击,借款人抵押在上述资金池中的WETH将面临「被撸走」的风险。
在微博上回复其他网友时,「废X废」透露,他研究Soda的爆仓清算规则时发现了这个漏洞,「当时该协议上累计有超过2万个以太坊。」
2万ETH时值700万美元,留言网友也对「废X废」发现漏洞告知协议方而没有利用协议「撸走」2万ETH的行为表示赞许,甚至尊称他为「废老师」。
但废老师也表示,在发现这个漏洞后自己也清算了一个ETH,「之所以不清算所有人的,是不想惹麻烦。」
网友一边围观废老师的发现,也在等待Soda协议方的反馈。
9月20日近19点时,也就是在「废X废」通知协议方险情未获回复,又公开提示风险的1个多小时后, Soda发布公告,提示SoETH/WETH资金池的借款者尽快还款、抵押者及时退出的同时,表示将修补漏洞,暂停前端借款功能,如有用户因为这个漏洞受损,他们将尽可能推出补偿方案。
Soda团队至今匿名 被疑国内背景
然而,这个漏洞还是被人利用了。「废X废」于9月21日凌晨披露的围观记录显示,至少有5个地址借漏洞尝试攻击,共「撸走」了约446个ETH,时值15万美元。
截至目前,Soda协议的SoETH/WETH资金池内尚有等值ETH的2156个SoETH。对于之前被恶意清算走的资产如何解决,Soda官方还没有做出回应。
事实上,Soda协议自9月15日上线后就未公开代码审计结果的相关信息,团队信息处于匿名状态。协议一即上线,中心化交易所Gate.io的平台币GT便出现在Soda的流动性挖矿池内,抵押GT可以挖得SODA奖励,另外两个挖矿池的抵押资产是USDT和ETH。不过,目前Gate.io还未上线SODA的交易。
有用户质疑Soda的开发团队系国内人员,一个依据是,此次漏洞事件后,官方在社交平台Discord上的公告用中文写就。该平台的Soda讨论组内,当官方客服用英文发布信息时,有用户调侃,「别发英文了,大家英文都不好,看不懂说什么。」Soda官方并对团队背景做出回应。
9月21日,Soda协议漏洞的后续进展在推特上披露,官方称,目前漏洞已修补,并部署了新的智能合约。不过,由于智能合约有时间锁,补丁修复后至少需要48小时才能生效。其官网显示,新的智能合约生效时间预计在9月22日晚上9点。
部分协议存在「自留后门」恶性
Soda协议的漏洞问题依然只是DeFi领域的一个小小缩影。事实上,自从6月「流动性挖矿」将DeFi送上市场「热搜」后,安全事故从未在这个板块中停止。
令人印象最深的恐怕是Yam .finance(YAM),刚出道大火,就因漏洞问题直接导致协议不到两天就中止运行,YAM一度归零。1个月后,Yam才在审计后重启。
区块链安全机构PeckShield的月报显示,6月、7月、8月三个月内,共计17起安全事件发生在DeFi板块,至少造成了400万美元的损失。
进入9月,知名抵押借贷协议bZx被盗走了4700 ETH,好在后来被找回;稳定币协议Lien也被发现存在代码漏洞。
有业内人士透露,部分国内团队打造的DeFi协议多为以太坊上成熟协议的山寨版,由于照搬开源代码仅做简单修改后匆忙上线,常常因修改代码而出了岔子,「原来是正确的,结果被改错了,」其中,增发漏洞是个十分危险的问题。
更可怕的是,市场上已经出现了协议开发团队主动「留后门」的乱象。不久前,区块链安全公司PeckShield 安全人员在例行DeFi新上线项目风控扫描时发现,SushiSwap的新仿盘项目YUNo修改了代币发行逻辑,存在恶意留后门,方便给管理员无限增发代币的权限。
在这种高知识门槛下,对于普通用户来说,密密麻麻的代码简直是天书,没有计算机和互联网工程职业背景的他们,根本无从判断协议的安全性。他们参与DeFi挖矿就是在玩一场场碰运气的游戏,毫无技术武装,如同裸奔。
对此,区块链安全机构成都链安的创始人杨霞支招,普通投资者在不懂代码的情况下,可以看项目方的公开透明程度,比如代码是否经过第三方审计,审计结果、项目方团队信息是否公开等等,「越公开透明的项目,可信度相对越高」。
杨霞提示投资者,除了查看项目公开信息外,还可以分析项目模式,项目方的获利点是否是完全模仿其他项目等信息。「如果完全模仿其他获利项目,且项目方信息又不明确的,就需要提高警惕了。这种项目团队的技术能力不是很强,或者干脆就有意留后门。」她建议,投资者要选择自己综合分析后认为有投资价值的项目去参与,切勿在不了解项目的情况下盲目跟风。
对于真正想在DeFi领域创业的开发方,杨霞建议,协议未经过安全审计前不要上线,相比起上线时间的推迟产生的影响,代码漏洞导致的损失可能更大,「安全审计是目前公认的较好的方法,除此之外,项目方在开发时,可以预先设计好一些挽救措施,安全问题发生时可以让损失降到最低。」
她举例,使用代币转账的Pausable功能,在发生安全事件时可以停止资金流动;通过代理实现代码逻辑与资金分离也是可以考虑的方法。「但在使用这些方法时,也要保证权限的合理划分,避免项目方权限过大,使其成为一个中心化的智能合约」。
匿名网络,漏洞当前,在有价资产的利益诱惑下,并非每个人都愿意去做「废X废」这样的「吹哨人」。DeFi挖矿协议层出不穷,与之同行的是一起起安全事件,这一声声的警钟都在提醒DeFi参与者,别被市场热度「烧光」了风险意识。