邓永凯:DeFi繁荣发展的背后,智能合约安全防控刻不容缓

小玲儿 2020-07-24 22:42

整理 小玲儿

出品 耳朵财经

7月24日,《耳朵财经》邀请了零时科技CEO 邓永凯在耳朵财经区块链长征华东社群做了精彩分享,原文如下:

耳朵财经的朋友们, 大家下午好!首先,我简单介绍一下我们公司,深圳零时科技有限公司(简称:零时科技),是一家专注于区块链生态安全的实战创新型网络安全企业,公司团队由从事安全攻防技术研究和安全服务多年且经验丰富的高级网络安全专家组成,团队扎根区块链安全技术研究,以丰富的网络安全攻防实战经验结合人工智能及大数据分析处理,为用户提供专业的区块链应用及安全解决方案。

今天,我们花点时间跟大家一块儿来探讨一下这个Defi繁荣发展的背后,智能合约的安全问题。因为最近经常发生这类攻击事件,所以我们如何去防控呢?

再聊安全问题之前,我们得了解什么是Defi,可能大家都知道这个生态和概念。但我在这里还是简单给大家提一下,因为可能每个人对它的理解不一样。

它是去中心化金融的简称,目标是建立一个去中心化的透明的金融体系,特点是对所有人开放,用户不需要任何认证,也不需要依赖于第三方机构,我们就可以直接参与其金融活动,包括一些借贷、抵押以及支付交易等业务。

Defi生态目前正在快速发展壮大,越来越多的项目开始向Defi的概念靠拢。2020年2月,锁定在以太坊Defi应用中的资产首次达到了10亿美元,6月超过65亿美元,而7月就超过100亿美元。Defi的发展还不到一年,可见它的火爆程度。

Defi项目的火爆主要来源于它的开放性以及高收益,有些项目的收益高达10%左右,甚至还有更高的。但高收益的背后必然伴随着巨大的风险。

刚才我们也说到了项目火爆的背后肯定也伴随着各种各样的风险和安全问题。我们零时科技的区块链安全威胁情报平台每周或每月都会发区块链生态的安全事件以及一些数据的统计。

大家通过这个图可以看到,2020年公开的Defi安全事件有18起,可能还不止这些。损失的金额在四千万美金以上,实际数字应该远远不止这些。大部分的安全问题是因为一些智能合约的漏洞以及各协议组件之间的流动性缺陷导致的。

例如2月,bZx连续两次遭到了攻击导致损失将近100万美元,这其实就是因为协议之间的流动性缺陷而导致的问题。3月的“312”事件导致以太坊平台币大幅下跌,从而致使以太坊平台上的很多Defi项目的平台币资产被零元拍卖、抵押,损失了1000多万美元。

4月的Lendf.Me被黑客攻击损失了2500万美元,但几天后,经过安全企业和一些媒体的努力,黑客迫于压力又将盗走的资金返还了。

7月,有一个用户在半小时内通过Uniswap交易bZx代币,利用差价获利超300万美元。所以该项目的一些缺陷显而易见,而最大的问题是黑客获利巨大,这也是黑客青睐攻击的一个原因。

通过我们情报平台的统计,这些项目的安全事件,大部分都是由于智能合约安全事件而导致的,而且损失金额也最大。比如Lendf.Me一个项目就损失2500多万美元。

那智能合约到底存在哪些安全问题?我们又该如何去防范呢?

其实Defi生态的安全问题,不仅是智能合约,还存在很多其他安全风险,这里只大概列举了几个方面:

第一个是各协议之间组合性的安全,包括组合之间的一些缺陷;第二点是智能合约安全;第三点是开源的安全;第四点是高收益伴随着高风险;第五点是缺乏监管等导致的一些安全问题。

那第一点组合性安全是什么意思呢?

Defi协议之间可随意组合,而且伴随着这个组合,它的复杂性和耦合性会呈指数级增长。因而复杂性越高,它所导致问题的概率也越大。在Defi的发展过程中,可能会时不时爆发一些未知的事件,以及一些黑天鹅事件。

智能合约安全,因为目前Defi项目多数都跑在以太坊上,基于以太坊智能合约开发运行,所以以太坊智能合约的安全问题在整个应用生态中都会出现。针对以太坊合约的安全漏洞,在任何地方都可能出现,我们零时科技团队也做过大量的相关审计。

开源安全也是比较大的一个问题,因为区块链生态是开放性的,所以很多人认为真正的区块链项目都应该开源项目代码。这里存在一个悖论,智能合约如果不开源,很多社区用户就觉得这是一个不能产生社区的共识和信任的项目。可你一旦开源代码,那么全世界的黑客都会盯上你,危机四伏而导致不敢信任。

高收益和缺乏监管,因为黑客向来是以利益驱动,他们的嗅觉非常敏感,哪里有利益他们就会去哪。Defi项目的高收益和开放性,包括匿名性都为黑客的攻击提供了便利,也为他们的攻击行为打开了大门。而且由于行业没有严格的监管,黑客攻击获利之后可以成功完成洗钱,逍遥法外,这也是导致很多黑客青睐于Defi项目的一个原因。

上面那个图列出来的都是一些在以太坊智能合约里常见的一些漏洞,比如溢出漏洞,重入攻击还有假充值,这些都是常见的,特别是溢出漏洞。有一个叫美链的BEC,因为一行代码里的一个逻辑写错了,导致一夜之间整个项目归零了。所以很多人说,智能合约的安全问题可以理解为一行代码价值一个亿。

如果讲具体的漏洞,可能会比较枯燥,所以我们不详细介绍每一个漏洞的细节。如果有技术人员想要了解相关的技术点,我们可以私下交流。接下来我会通过一些实际案例,给大家讲解为什么Defi目前存在很大的风险,以及智能合约安全是重中之重,我们如何做好智能合约的安全审计和安全防范。

第一个攻击案例,比较有趣,具体的漏洞在我们官方公众号上都有详细的分析和溯源,感兴趣的朋友可以研究一下。这里我用一张图向大家展示它的攻击是怎么形成的。

4月19日,攻击者不断进行存入、取出这两个操作,而每一次攻击,资产总和都是翻倍的,他利用滚雪球的方式不断进行攻击,盗取Lendf.Me合约中的锁仓资产2524万美元,导致资金池一度只剩下6美元资产。

这个事件是因为它的智能合约里的一个逻辑写错了,出现变量覆盖的问题,最终导致资产会通过存入和取出的操作,使资产翻倍。

你存入一块,再取出一块,里面还有一块,而后你取出后再存入,这时就变成两块钱了,接着再存入两块钱,取出两块钱,它里面还有两块钱,而你一共有四块钱。通过这种滚雪球的方式将项目方的资金池全部取空,这个我们公众号上也有详细分析。

《零时科技:DeFi 项目 Lendf.Me 遭黑客攻击复盘分析》

这个项目是4月19日被攻击,4月20日,国内的一些安全团队,还有一些媒体组成了一个临时的安全团队,根据黑客在攻击过程中留下的一些蛛丝马迹,成功确定了黑客的画像。这时,在与国内外各方资源进行交叉对比,最后发现基本上可以确定是哪些黑客组织干的。

4月21日,因为圈内的重重压力,黑客开始主动与项目方进行沟通,并开始归还资产。黑客通过跟项目方沟通,48小时后将所有被盗资产全部还给给项目方。这个事件在整个安全事件里,包括乃至于整个区块链行业里面,都是一件比较有历史意义的事。

《零时科技:DeFi 项目 Lendf.Me 遭黑客攻击复盘分析》 

第二个事件也是因为一个智能合约的问题导致损失了50多万美元。大家通过图可以看出,在我标红的地方,因为写错了一个属性,就是那个public关键字。

这其实是一个转账接口,本来这个转账接口只有合约的所有者才能进行转账,但因为他把这个函数定义为public,从字面意思上理解它就是个公开的函数,也就是任何人都可以调用这个接口。通过调用这个函数将用户授权给项目方,合约的资金就可以转移到任何地址上去,以及任何人都可以转移合约里的资金。

有时,黑客攻击项目方,可能并没有使用一些非常高大上的技术,它可能就是因为智能合约里的一个小问题,而导致被攻击。例如仅仅因为一个关键字写错了,导致权限错误,而后致使任何人都可转移资产,这可以理解为一个非常简单明显的漏洞,但损失却比较严重。

接下来是7月初发生的攻击事件,它也简单,黑客自己写了一个合约调用VETH的合约,通过changeExcluded()函数,支付手续费并设置mapAddress_Excluded的值,把接口中的false状态改成了true后,他就可以绕过VETH合约转账函数的条件限制,通过自己的充值合约成功转走项目方价值90万美元的代币,而后他把自己创建的合约销毁了。

这个攻击事件因为智能合约里的函数逻辑问题,导致黑客可以轻松修改一些条件判断而直接进行转账。因为我们也是科技安全团队,对这个事件也进行了复盘分析,感兴趣的朋友可以看一下整个事件的攻击过程,包括它的代码到底哪里出了问题,合约哪里写错了。

《零时科技 | VETH智能合约攻击事件复盘分析》 

上面举了几个比较典型、简单的智能合约攻击事件,其实真正发生的黑客攻击事件可能远不止于这些,而且我们能分析、复盘的都是已经成功的攻击事件,还有大量没有成功以及一些时刻进行的攻击事件。

Defi生态应用目前是业内的一个热点,也是一个备受关注的方向,那么未来的黑客攻击事件也会不断发生,针对这些频繁发生的黑客攻击事件,我们应该从哪些方面进行防控呢?我们零时科技结合经验给出一些安全解决方案。

第一点是项目在上线之前,可以找专业的第三方企业对智能合约进行全面的安全审计,而且可以找多家进行交叉审计,因为不同的团队可能审计的方向和经验不同,可先于黑客找出潜在的问题。

我们零时科技安全团队也有着丰富的安全审计实战经验,欢迎业界朋友联系我们对合约和项目进行全面的安全审计,也欢迎大家找我们进行安全咨询。

第二点是项目上线后,我们可以发布漏洞赏金计划,通过赏金计划发动社区的白帽子帮忙找出一些致命的安全问题。白帽子团队找出安全问题不会进行恶意利用,会通过正确的渠道反馈给项目方,以协助技术团队解决问题。如此,可避免黑客找到这些漏洞进行攻击而导致损失。

第三点是项目上线后,可以加强对项目的安全监测,以及对一些异常事件的预警。我们零时科技也做数字资产和交易的安全系统,通过监控和预警,尽量做到在黑客发动攻击之前,发布有效的预警信息,从而真正的保护项目的安全。

上面几点都是比较不错的安全解决方案了,但大家要明白一点,就是任何系统的安全问题,都无法通过安全审计完全避免真正的黑客攻击。安全审计只能帮助Defi抵消掉一些已知的攻击方法,但是未知的以及黑天鹅事件还可能发生。

另外,区块链行业也还处于发展初期,它存在着很多未知的问题和挑战需要我们解决,所以,我们通过前期的安全审计以及适当的安全监控和预警,提高项目的安全性。

目前DeFi发展迅速,随之而来的各方面挑战也不断增加,安全问题则是重中之重,DeFi的路还很长,需要解决的问题还有很多,希望通过开发、社区和安全企业等多方共同维护DeFi的安全。

今天的分享就到这里,感谢大家抽出时间来一起进行交流,也感谢耳朵财经的组织,谢谢!如果大家有什么问题可以随时提问,也包括可以加我的微信,可以多多交流。


责任编辑:卿玲玲