1 @2020云安全联盟大中华区-保留所有权利。你可以在你的电脑上下载、储存、展示、查看及打印,或者访问云安全联盟大中华区官网(https://www.c-csa.cn)。须遵守以下:(a)本文只可作个人、信息获取、非商业用途;(b)本文内容不得篡改;(c)本文不得转发;(d)该商标、版权或其他声明不得删除。在遵循中华人民共和国著作权法相关条款情况下合理使用本文内容,使用时请注明引用于云安全联盟大中华区。 致谢 云安全联盟大中华区(简称:CSAGCR)区块链安全工作组在2020年2月份成立。由黄连金担任工作组组长,9位领军人分别担任9个项目小组组长,分别有:知道创宇创始人&CEO赵伟领衔数字钱包安全小组,北大信息科学技术学院区块链研究中心主任陈钟领衔共识算法安全小组,赛博英杰创始人&董事长谭晓生领衔交易所安全小组,安比实验室创始人郭宇领衔智能合约安全小组,世界银行首席信息安全架构师张志军领衔Dapp安全小组,元界DNA创始人兼CEO初夏虎领衔去中心化数字身份安全小组,北理工教授祝烈煌领衔网络层安全小组,武汉大学教授陈晶领衔数据层安全小组,零时科技CEO邓永凯领衔AML技术与安全小组。 区块链安全工作组现有100多位安全专家们,分别来自中国电子学会、耶鲁大学、北京大学、北京理工大学、世界银行、中国金融认证中心、华为、腾讯、知道创宇、慢雾科技、启明星辰、天融信、联想、OPPO、零时科技、普华永道、安永、阿斯利康等六十多家单位。 本白皮书主要由DApp安全小组专家撰写,并由DApp安全小组及区块链数据安全和数字钱包工作组的专家共同审核,感谢以下专家的贡献: 本白皮书贡献者名单:陈晶,黄连金,李岩,马红杰,王登辉,姚昌林,张志军,周庆松(按照字母排序) 贡献单位:知道创宇,武汉大学 关于研究工作组的更多介绍,请在CSA大中华区官网(https://c-csa.cn/research/)上查看。 如本白皮书有不妥当之处,敬请读者联系CSAGCR秘书处给与雅正!联系邮箱:info@c-csa.cn;云安全联盟CSA公众号: 序言 去中心化应用(即DecentralizedApplication,以下简称DApp)作为区块链的重要实现载体。DApp继承了传统应用的优势,结合区块链的特点,极大地扩展了区块链的应用场景与现实意义。DApp可以被广泛地应用于金融(DeFi)、游戏、保险、物联网、共享经济、人工智能等多个领域。 但同时也面临着严重的安全风险,例如:2019年EOSDApp安全成为重灾之地,截止2019年5月被盗EOS达到93万。相比于普通应用程序而言,DApp的安全性不仅影响参与多方的公平性,还影响DApp所管理的庞大数字资产的安全性。因此对DApp的安全性及相关安全漏洞开展研究显得尤为重要。 CSAGCR对于DApp的安全进行系统化研究,从不同的角度去分析DApp的安全。根据2020年初统计,DApps应用中最受欢迎的是DeFi,本文针对DeFi的安全应用场景进行了重点分析。 李雨航YaleLiCSA大中华区主席兼研究院院长 目录 致谢3 序言4 1.DApp与安全概述6 1.1DApp概述6 1.2DApp安全简介7 1.3DApp安全攻防8 2.DeFi的安全8 2.1DeFi概述8 2.2DeFi的功能特性9 2.3DeFi的生态堆载11 2.4DeFi项目的安全概述12 2.5DeFi的智能合约安全案例分析14 2.6DeFi通证经济设计方面的安全案例分析26 2.7DeFi监管安全的案例分析32 3.DApp安全测试建议与工具34 3.1安全架构分析34 3.2静态代码扫描35 3.3动态应用扫描36 3.4手工渗透测试37 3.5生产环境中的测试与追踪37 3.6针对智能合约的安全测试工具38 4.DApp安全最佳实践与案例39 4.1DApp的基本架构39 4.2安全开发与测试的要点40 4.3DApp开发采用DevSecOps流程41 4.4加强安全审计41 参考资料43 1.DApp与安全概述 1.1DApp概述 DApp是DecentralizedApplication的缩写,是基于区块链的应用程序。这些类型的应用程序的身份数据和资产由用户控制,程序的运行和数据的管理不受任何中心化的管控。一个应用程序需要有一组特定的特征才能成为DApp。具体包括: 去中心化:使用一种类似区块链的加密技术。不依赖中心服务器,不需要专门的通信服务器传递消息,也不需要中心数据库来管理数据。 开放生态系统:任何人都可以针对特定区块链平台的接口和协议开发应用程序,它的发布不受任何机构限制。各种创意与创新可以自由表达和实现。 算法及协议:交易发生的顺序由共识算法决定。DApp参与者信息一般存储在参与者的手机。可以保护数字资产,有利于产权不会泄露、被破坏。 DApp也在演变不断进化,通证化是今天DApp的显著特点。在区块链的时代,任何“价值”的流动,都可以通证化。通证需要具备三要素:权益、加密、流通,通证的三个要素缺一不可。通证化后的DApp只需聚焦在应用前端和智能合约之间的业务逻辑上。 美国证监会(SEC)将加密货币划分为两类:实用型通证(utilitytoken)和证券型通证(securitytoken)。证券型通证被用来支付红利、收益、利息,或者通过投资其他通证为通证持有人带来利益。他们是具有货币价值的可交易金融工具。公共股本、私人股本、房地产、管理基金、交易所基金、债券,这些都是证券型通证的常见示例。这类通证也被细分为两类:权益通证(EquityToken)和资产通证(AssetToken)。实用型通证也被称为应用通证(apptoken)或用户通证(usertoken)。这类通证大多都是企业针对自己提供的服务或者产品为项目募资而发行的。实用型通证的价值是以项目概念的未来实用价值来评估的。与证券型通证相比,实用型通证更具体地强调自己的开发平台或生态系统,它的价值与平台或生态系统内参与者的活跃度成正比。实用型通证被细分为两类:产品或服务通证(UseofProduct)和奖励通证(RewardToken) 1.2DApp安全简介 DApp安全具有一些内置安全性、又可以通过密码学增加其鲁棒性。但由于DApp直接操作数字资产,而且往往开放源代码,应用程序的源代码是所有人都可见,已经成为备受黑客关注的攻击目标。黑客的攻击手段从最初的“溢出攻击”到“假EOS攻击”、“重放攻击”、“假转账通知攻击”,而后到屡试不爽的“随机数攻击”和“交易回滚攻击”,黑客的攻击手法正在不断演变且愈发复杂。以下是Peckshield发布的波场、以太坊、EOS三大生态DApp安全事件报告: 根据Peckshield报告指出,从2018年7月至2019年6月,EOS上的DApp安全事件数量最多,共109起,损失EOS总数约93万枚。波场(Tron)上的DApp安全事件数量为11起,损失TRX约2900万枚,而仅2019年5月波场发生的安全事件所引起是TRX损失就超2700万枚,占总统计数据的约93%。 而以太坊安全事件(注:仅统计DApp的安全,不包括Token(如常规ERC20)相关的安全事件)有5起,共损失2.4万枚以太坊。下面的图介绍总结安全事件和攻击手段。 引自(https://www.theblockbeats.com/news/1959) 1.3DApp安全攻防 根据区块链安全公司厦门慢雾科技有限公司(以下简称:慢雾科技)总结的安全攻防图对DApp的安全进行了总结。慢雾科技攻防图的总结,除了利用区块链上的常见的手段还总结了利用区块链下的传统安全的手段进行风险分析包括但不限于: 链上攻防:包括但不限于:逻辑设计、溢出、未初始化、假充值、条件竞争、随机数、资源优化、假通知、回调安全、拒绝服务、内存吞噬、假账号、权限控制、恶意事件、硬件编码、假币、重放攻击、第三方模块、显现编码、编译器版本等问题。 链下攻防:包括但不限于XSS、CSRF、SQL注入、中间人劫持、私钥存储、SSRF、加密传输、权限控制、命令执行、认证授权、第三方组件、ATT&CK、终端安全、后端安全、Web安全、节点安全等问题,除了考虑智能合约安全,还需要考虑节点的安全。除了考虑数据的加密还需要考虑共识算法的安全。 (https://github.com/slowmist/Knowledge-Base/blob/master/dapp_attack_defense.png) 2.DeFi的安全 2.1DeFi概述 DeFi是DecentralizedFinance的缩写(以下简称),可以翻译为去中心化金融,也 可以理解为开放式金融(OpenFinance),它是利用去中心化协议和智能合约提供普惠的、不需要准入条件的金融服务。 由于区块链的金融属性,全球参与属性和DAO(社区自治)属性,DApp的最重要的应用就是DeFi.应该说,2020年区块链整个行业的发展是聚焦在DeFi的应用。 DeFi是相对于CeFi(传统的中心化金融,比如银行)而言的,我们现有的银行业、保险业、信托业、证券业、租赁业等几乎都是CeFi,它们能不能满足我们的需求?可以,但是也存在下面例举的痛点。 1.不够普惠性:以门槛最低的银行账户为例,据不完全统计,目前全球大约仍有 17亿人没有银行账户。其中东南亚地区大约4.6亿人、非洲大约有3.5亿人、中国大约 有2.25亿人都是没有银行账号的。即便在美国这个最发达的资本主义国家,目前仍有 大约5500万人没有银行账号。 2.费用高:无论是CeFi还是DeFi,我们在使用各种金融服务时,一般都会产生一定的费用。但在CeFi中,这个费用有时会很高昂。以跨境转账为例,目前每笔的平均服务费用是4.4%+0.3美元。也就是说如果从中国汇款100万元美元到美国,我们需要 支付高达44000.3美元的手续费。 再以贷款为例,大额贷款一般都要收取发放费、手续费,在美国这个费率一般是 2%。比如,贷款100万元,一般就要支付2万元左右的费用。 3.效率低:还是以跨境转账为例,目前国际上普遍使用SWIFT平台,其转账的周期是T+2,也就是在一笔交易完成后,还需要再等2天的时间才能到账。 4.中心化安全问题:这个问题不言而喻,传统金融机构都会有中心化的数据库,一旦出现黑客拖库后果将不堪设想。当然现在银行等金融机构的安全防控级别都很高,但中心化的数据存储让机构作恶成为可能,比如用户隐私泄露早已成为社会的顽疾,恶意篡改用户数据也不无可能。 2.2DeFi的功能特性 针对CeFi的不足进行了理解,那么DeFi相较之下有哪些特性?以下是DeFi拥有的 10个特性: 1.普惠性:只要一部可以联网的手机或者电脑,在世界任何一个角落任何一个人都可以访问DeFi协议,从而享受各种的金融服务。比如用Uniswap进行去中心化交易,比如利用Compound平台进行去中心化借贷,或者通过ImToken钱包访问DeFi应用进行去中心化理财等。 2.可控性:相较于CeFi将资产交给金融机构托管,DeFi的一大优势是用户始终对自己的资产拥有绝对的控制权。并且在DeFi中,用户在金融交易中可以任意扮演买方或卖方,既可以是服务方也可以是被服务方,而且没有什么门槛。 3.透明性:DeFi协议代码都是开源的,因此任何人都可以验证其安全性、交互规则以及实际网络使用情况。 4.抗审查性:在DeFi中系统对所有的交易都是一视同仁的,同时还能保护交易者的隐私。 5.可编程性:DeFi是通过智能合约来实现的,所以可以根据功能需要对智能合约进行编程调整,从而实现不同的金融逻辑。 6.可组合性:可以利用不同的底层协议与上层应用进行组合,从而产生各种新的应用。 7.可互操作性:DeFi可以将数字资产与法币、物理资产的价值进行交互。比如在以太坊上的Synthetix项目就可以实现这一点,这种可以交互的资产也称之为合成资产。