织梦CMS - 轻松建站从此开始!

我的网站

当前位置: 主页 > 区块链

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

时间:2020-09-15 17:13来源:未知 作者:admin 点击:
这些流动性挖矿项目均来自同一个代码库——SushiSwap,甚至某些项目的安全漏洞都是直接复制自其它项目,比如Yuno和Kimchi项目中的无限铸币漏洞。“无限
这些流动性挖矿项目均来自同一个代码库——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项目的标配。对未经审计的项目投资需格外慎重。若项目已审计,投资者则需尽量了解审计公司的背景以及其审计报告中的各项指标,例如: (责任编辑:admin)
织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
推荐内容