CertiK CTO:流动性挖矿的安全问题与风险提示

CertiK view 53251 2020-9-15 14:53
share to
Scan QR code with WeChat

CertiK CTO:流动性a href='https://www.btcfans.com/tag/34/' target='_black'挖矿/a的安全问题与风险提示

近几个月以来,流动性挖矿风靡一时,那么流动性挖矿是否能够持久?究竟是昙花一现还是星星之火?

为此,金色财经举办了一系列以DeFi为主题的《金色百家谈》线上直播节目。

“大流行”的背后,是否有一些人们难以察觉的风险?

CertiK CTO倪兆中博士,于9月10日直播中发表了以《金色百家谈 | 流动性挖矿的安全问题与风险提示》为主题的直播演讲,为大家详细解析了流动性挖矿的安全问题,并阐述了关于风险防范的真知灼见。

以下是直播节目的全程文字回顾。

流动性挖矿的市场

Dex也好,流动性挖矿项目也好,本质上都是对金融市场中流动性的争夺。流动性越多,意味着DeFi市场越繁荣,获利的机会也就越多。

CertiK CTO:流动性挖矿的安全问题与风险提示

DeFi市场飙升的同时,诸如Yam Finance、Spaghetti Money、SushiSwap以及Kimchi Finance等流动性挖矿项目也正以巨额挖矿收益收割着市场上的流动性,并强势吸引了数十亿美元的资产。

然而,流动性挖矿项目火热的同时,安全和风险问题也层出不穷。冷静观察火热背后的真正原因,有助于帮助我们理解这些安全问题的深层原理,进而帮助我们识别不安全的项目并规避风险。

大量的流动性被收割的背后必然导致其它流动性挖矿或Dex的流动性锐减,这也就是“吸血鬼攻击”。这些流动性的很大部分来自于其它的Dex或流动性挖矿项目,最终会导致这些失去流动性的项目的衰败。

因此,对于Dex或者流动性挖矿项目而言,流动性挖矿的整体是一个零和游戏为了避免自己成为失去流动性的衰败项目,新项目只有依靠快速上线、放出巨大收益率等手段来吸引投资者进而攫取利润,而随之带来了许多方面的负面影响——例如,任何区块链项目都应当最为重视的安全问题

对于投资者而言,面对如雨后春笋般出现的众多流动性挖矿项目,以及动辄百分之几千的收益率,很难不被吸引。疯狂的市场热度也会影响着投资者的情绪。众多投资者在这股流动性挖矿的热潮中,投资着见到的每一个挖矿项目并希望暴富,却忽视了基本的经济规律:在资产层面上,金融产品的收益与风险总是成正比的。在流动性挖矿项目市场的整体零和游戏中,这些“投资者”更像是投机者,安全对于他们而言,是排在利润之后的考量。

安全问题

CertiK CTO:流动性挖矿的安全问题与风险提示

答案其实不难得到。谁在这个流动性挖矿热潮中最有可能受到损失,谁就最应该在乎安全。

项目建立者既可以依靠项目正规经营手段盈利,也可以依靠故意隐藏的漏洞来获利。早期参与项目的投机者可以通过套利来快速获利。

而跟随市场热度流向、对项目的安全完全没有进行了解就盲目投资的投资者则会有很大概率成为受害者。作为普通投资者,对将要投资的项目应有足够的了解,尤其是该项目的安全情况。

为了规避风险,及时发现流动性挖矿项目的安全问题,普通投资者可以考虑从以下几方面进行了解:

代码安全:包括项目中所有代码的安全,如前端代码安全,智能合约安全等。前端代码的漏洞主要在网站以及桌面应用中存在。这些漏洞可能导致DeFi项目网站在遭受DDoS攻击的时候无法正常访问,严重的甚至可能导致用户资产被盗。而智能合约方面的漏洞种类则比较多,从经典的DAO重入攻击,到DeFi项目Lendf.me的hook重入攻击,以及当前流动性挖矿项目Yuno和Kimichi中由于智能合约拥有者权限过大而可能会导致无限增发代币的漏洞等。

逻辑安全:包括了金融模型安全、逻辑实现安全等。金融模型方面的近期著名漏洞有7月发生的bZx套利攻击。逻辑实现方面的漏洞则需要根据检查项目代码是否与项目描述一致。

管理风险:包括项目管理方安全、审计验证安全等。项目管理方需要查看项目团队的行业经验、既往项目等。而审计验证安全则需要查看是否有专业审计公司或者团队对该项目进行了严谨的验证,以及项目方是否为项目加入保险来确保自身及投资者的资产安全。

代码安全

代码安全是任何计算机程序都需要关注的问题。智能合约本质上是一个运行在区块链系统上的计算机程序,其独特的开放性、透明性则需要更高的程序安全性。近两个月内,流动性挖矿项目的火热潮流中,安全问题层出不穷。CertiK安全研究团队简要搜集了一些最近比较热门的挖矿项目,列表如下:

CertiK CTO:流动性挖矿的安全问题与风险提示

这些流动性挖矿项目均来自同一个代码库——SushiSwap,甚至某些项目的安全漏洞都是直接复制自其它项目,比如Yuno和Kimchi项目中的无限铸币漏洞。

“无限铸币漏洞”即为:在项目智能合约代码中,合约拥有者权限过大,可以任意增发代币,且没有任何社区治理来限制合约拥有者的操作。虽然Yuno和Kimchi的项目方宣布使用时间锁对智能合约加以限制,但这并未从根本上对项目智能合约本身的漏洞进行修复。

代码层面来说,智能合约中若缺少对项目方的权限约束,也会带来安全风险。而制约其权限的方法包括:

在项目智能合约内部建立社区治理投票机制,对操作给出许可。

采用技术手段,分散项目方权力。例如,使用多签名钱包(在多数人许可的情况下才能够执行智能合约层面的操作)的方式来进行操作。

此外,流动性挖矿项目也属于区块链智能合约项目,因此传统智能合约项目中的安全漏洞也不应忽视,例如重入攻击(reentrancy attack)或者整数溢出(overflow/underflow)等常见的智能合约漏洞。

安全检测方法

随着技术发展,目前已有许多针对智能合约安全漏洞的验证工具,其验证方式主要可以分为静态分析、符号化执行、模糊测试等几类。

静态分析、符号化执行和模糊测试都存在测试状态爆炸问题。一旦被检测的智能合约较为庞大或有较多循环结构,将导致工具无法检测合约的所有可能路径。

传统符号化执行虽然可以通过使用符号化输入来代替具体输入值,采用SMT求解器对程序中特定路径的条件进行求解,来确认该路径是否会被实际执行,但依旧无法处理大型智能合约或在合约中的循环结构。

当前,在软件验证领域,人们已达成某种程度的共识,认为只有形式化验证(Formal Verification)才能够彻底解决测试状态爆炸问题

形式化验证可以从两个层面上对合约进行保证。第一层面是安全无漏洞,即用数学推理的方法,捕捉合约的所有行为,覆盖所有的执行可能性,从而保证合约没有漏洞。第二层面是可信,即公开透明。合约的创建者不仅要说明会执行哪些操作,还需要证明其代码确实精确执行了这些操作。

经过这两个层面所验证过、并证明了安全性的智能合约,只要源代码不发生任何变化,就能保证100%安全无漏洞,并且无法被黑客攻破。

这里简单解释一下第一层的数学推理方法。形式化验证是通过从被检测的智能合约中抽象出数学模型并利用证明器对其进行证明的方法。对智能合约抽象后,便可以利用数学证明的方法处理合约中的循环结构,进而将大型程序进一步简化。因此可以在严谨的数学层面上证明智能合约的安全性和正确性。

而CertiK的安全审计,也采用了这样的方法,即用形式化验证将智能合约转化为数学模型,通过逻辑推演验证模型,从而证明合约的安全性。

除此之外,CertiK还开发了基于形式化验证的编程语言DeepSEA,其编译器是用Coq,一个机器辅助人工证明工具及语言,编写并完全证明了正确性的,从而可以确保使用DeepSEA语言编写的智能合约不会出现安全漏洞。

今天我们不对形式化验证进一步展开讨论,但是大家可以简单理解为,这是一种可以从严谨的数学逻辑上证明并确保智能合约中不存在漏洞的方法。

动态检测

大部分人都知道,智能合约有着自身一旦部署到链上就无法修改的特点,因此任何现有的安全检查都必须在部署之前完成,而之前提到的安全验证方法均为链下静态验证。

在实际中,流动性挖矿项目不仅需要链下静态验证,还需要“动静结合”进行安全检测。这是因为DeFi项目一经发布并运用,智能合约上线到了真实环境中,未授权的软件程序和未审核的合约就会与之交互。由于这种交互是动态的,因此静态安全审计再完备也不能百分百确保项目是安全的。

因此,对于用户和DeFi项目方来说,理想的动态安全检测工具应当能实时在线判断要被调用的智能合约是否安全。对于智能合约的用户而言,每次只通过调用接口(ABI)来调用其它智能合约,是无法了解即将被调用的智能合约内部的逻辑情况的,因此时刻都有未知安全风险。如果事前被调用的智能合约没有经过仔细的安全验证,则风险将进一步扩大。

换句话说,如果在调用外部智能合约之前,可以先通过链上的动态验证方法来确认该外部合约的安全性,将会极大地提高用户的使用安全,从而避免因调用外部合约而产生未知风险。

我们都知道,静态验证可以通过对智能合约的安全审计来完成。那么动态检测应该怎样进行呢?

就在上周,CertiK Foundation正式发布了CertiK Security Oracle,即去中心化安全预言机。CertiK预言机可通过实时安全检测,防止DeFi项目受到恶意攻击。同时,CertiK预言机可被应用于任何支持智能合约功能的区块链平台(如以太坊等)。简单来说,如果想要为即将进行的交易取得实时的安全信息,查询CertiK预言机即可。更多详情请关注我们的公众号获取。

除了代码层面的安全,DeFi项目同样面临来自其它方面的风险。

其他安全威胁

金融模型安全本身是一个被广泛关注的话题,而流动性挖矿等DeFi项目本身与传统金融项目息息相关,因此例如套利、通胀等传统金融项目中存在的风险,在流动性挖矿中也依旧存在。

例如,在bZx套利事件中,套利者利用了信息不对称优势进行获利;再比如UniSwap项目,获利者通过利用比其他投资者提前购买代币的时间优势完成套利操作。两个事件的套利都并不依赖于代码层面的漏洞。

逻辑实现安全则需要确保项目描述与实际的项目代码逻辑实现一致,以防项目方将与项目不一致的代码无意甚至恶意地隐藏在项目代码中。

当前区块链行业方兴未艾,存在许多不成熟的企业和项目。衡量或评价一个项目的优质与否,很大程度上依赖于项目团队经验水平以及项目管理权限。如果一个匿名团队拥有很大的项目权限,该项目就有可能存在风险,甚至由于项目方管理权限过大而“卷钱跑路”。

个人关于流动性挖矿看法

流动性挖矿,是对DeFi项目前景和落地应用的一次探索。市场规模的迅速壮大以及市场热度急速上升,都侧面反映出探索的成功。然而,某些新项目“剪切-粘贴-上链”的粗暴流程,与区块链的可信优势完全背道而驰。为了争夺流动性(Liquidity),不考虑项目安全就匆忙上链,无疑加深了市场对流动性挖矿项目的质疑。

防范建议

CertiK团队给大家提供以下几点安全隐患防范建议,作为参考:

首先,投资前评估自己的风险偏好和资金实力。切勿因DeFi项目火热并且出新频繁就在短时间内忽略自己对风险偏好的判断以及对风险承受能力的评估。

其次,在投资前尽量做好项目的调研。比如关注相关社区及媒体消息,是否有人对合约的安全性提出过质疑。兼听不同来源的不同声音,同时独立思考、积极辨识消息的真实性。

最后,也是最直接的方法:

检查项目及其合约是否由著名安全团队进行过专业审计并取得较高安全评价。

当前最火爆的流动性挖矿项目,绝大多数在上线前未经过严格、专业的安全审计,例如SushiSwap、Yuno以及Kimchi等。虽然上线后有的项目邀请了安全公司来进行审计,但此时即使安全审计能够进行并完成,项目也已经很可能没有任何提升安全性或修复安全漏洞的空间和余地了。

目前,安全审计已成为了高质量DeFi项目的标配。对未经审计的项目投资需格外慎重。若项目已审计,投资者则需尽量了解审计公司的背景以及其审计报告中的各项指标,例如:

CertiK CTO:流动性挖矿的安全问题与风险提示

盲目地跟风、将安全性抛之脑后的行为,最终会使得流动性挖矿如昙花一现般不可持久。

DeFi项目只有在市场各方参与者的利益均受到保护并且没有安全风险和漏洞的情况下才能真正做到可持续发展。只有回归区块链公开、透明、去中心化的本质,结合金融市场的客观规律,杜绝安全漏洞,DeFi的星星之火,才能点亮区块链世界。

btcfans公众号

Scan QR code with WeChat

Disclaimer:

Previous: 比特币全网算力再创新高140EH Next: 大盘突破阻力位,吸血行情开启

Related