前言
当前区块链技术和应用尚处于快速发展的初级阶段,面临的安全风险种类繁多,从区块链生态应用的安全、到智能合约安全、共识机制安全和底层基础组件安全、安全问题分布广泛且危险性高、对生态体系、安全审计、技术架构、隐私数据保护和基础设施的全局发展提出了全新的考验。
区块链安全涉及范围
区块链安全审计是一个系统性工作,涉及的环节有很多,不但有很多传统安全方面的工作(如云主机防护、通信安全、手机安全、APP防护、办公安全、人员安全意识 等),还有大量的区块链特色安全内容(如智能合约安全、矿池风控、交易所安防、钱包安全防护、联盟链安全、公链安全、交易风控 等)。
其中:智能合约安全、交易所安全、交易风控信息安全极为重要,同时也是安全问题、安全事件频发的地方;
目前区块链安全审计工作主要是四方面:
-
区块链安全测评:包括区块链底层测评、智能合约安全审计和测评、钱包安全测评、交易所安全测评和矿池安全测评。
-
数字加密资产安全防护:包括事前的风险教育、钱包选择、环境检测,事中的私钥管控、转账管控,事后的私钥缺失找回和丢币追踪、应急响应等。
-
安全数据可视化:包括区块链运行态势监测、运行态势检测与异常行为预警、资金流转检测与异常告警等。
-
加密货币反洗钱和违法犯罪的预警防范。
区块链安全审计是一个系统性工作,选及的环节有很多,不但有很多传统安呈方面的工作:通有六量的区块链特色安全内容。
区块链安全审计的必要性
区块链行业是一个比较特殊的行业,最突出的特点就是涉及大量数字加密资产的管理,动辄千万上亿的资产全部存在链上,通过一个特有的私钥来确权,谁掌握了这个私钥,谁就是资产的主人。
这使得信息安全在区块链行业的重要性空前提升。可以说对于区块链行业来说,没有安全就没有一切。这不是危言耸听,随着各类安全事件的不断披露,区块链行业对信息安全的重视度也持续升温。
对于区块链行业来说,有安全就没有一切.
目前,信息安全已经成为区块链产业发展的关键环节!
区块链安全审计和用户的关系
-
区块链技术带来的资产数字化,使得大量数字加密资产存储在链上,不光人人都看得见,让黑客还有了摸得着的机会,在巨额资产的诱惑下,黑客的攻击动力几乎是无限的;
-
数字加密资产变现非常容易,与传统的数据盗窃然后非常费劲的变现不同,数字加密资产可以直接通过7*24的交易所变现;
-
数字加密资产的匿名特性使得黑客非常容易逃避追查,安全性更高。
-
区块链技术虽然是去中心化的,但是这个行业存在大量的基础设施是中心化的,并且区块链的实现也依赖于很多传统的IT基础设施,如手机、云主机、web service等,这使得黑客可以借助原先的技术手段和工具,攻击门槛并不高。
什么是智能合约?
智能合约(英语:Smartcontract
)是一种旨在以信息化方式传播、验证或执行合同的计算机协议。**智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。**一个智能合约是一套以数字形式定义的承诺(promises),包括合约参与方可以在上面执行这些承诺的协议。
随着区块链技术的发展,智能合约将会与未来生活密切相关,如今,大多数区块链都具有智能合约功能,用户可以将智能合约应用于各种情况,包括金融衍生品、保险费、合同违约、财产法、金融服务、法律程序和众筹协议、数字身份、供应链管理、数据存储等。
智能合约审计
智能合约审计其实就是仔细研究代码的过程,即把合约部署到以太坊(假设此项目是运行在以太坊上的)主网络中,并对其进行错误、漏洞和风险等方面的审查,然后讨论如何改进。因为合约一旦部署不可修改、合约执行后不可逆、所有执行事务可追踪;所以智能合约审计就成为重中之重的工作。
智能合约审计必要性
1)“智能合约”是区块链项目的重要部分,合约中如果有漏洞被作恶者利用,将导致资产被盗且往往无法收回,给用户造成巨大损失。
2)由于智能合约部署后不能修改的特性,如果智能合约存在安全风险问题,将无法安全运行,需要重新修改部署,导致浪费资源,项目延期等一些列问题;所以尽量在部署上线前通过专业安全审计机构进行全面安全审计尽可能先于黑客发现安全漏洞。
3)因为智能合约的创新性和区块链项目的去中心化特性,导致很多应用开发者初心不正,在合约中加入隐藏的漏洞后门,未经安全审计很难发现安全漏洞,导致项目上线后用户投资资产被跑路。
4)智能合约之间的高耦合性导致的非预期安全问题;目前基于智能合约的去中心化应用多种多样;比如借贷、去中心化交易平台、抵押、聚合器、预言机等;很多项目直接相互调用,导致高耦合性,从而出现一些未知的安全问题,这些问题往往无法测试到,所以通过专业的安全审计团队丰富的审计经验,找出其中存在的安全风险。
智能合约审计流程介绍
为了检查合约的安全性,一般会测试多种攻击,模拟多种攻击场景,通过标准审计流程进行安全审查,以确保合约是否安全。
正常审计流程应包括前期应用审计的需求沟通,比如审计合约内容、审计时间、审计预算等;确定审计需求后需要签订协议、达成共识;然后安全团队开始安全审计,以及审计报告的输出,开发团队针对报告中的安全问题进行修复,安全团队协助修改后的复测,确保安全问题已修复,提升合约的安全性。
智能合约代码审计方式:
-
了解智能合约协议的逻辑运转流程
-
分析智能合约逻辑设计规范和设计目的
-
工具测试智能合约存在的安全风险
-
测试针对智能合约的常见攻击手法
-
根据项目流程进行模拟算法漏洞测试
智能合约常规漏洞有哪些?
1)以太坊智能合约
-
重入攻击
-
浮点数和数值精度
-
非预期的Ether
-
整数溢出
-
重入攻击
-
浮点数和数值精度
-
默认可见性
-
Tx.origin身份验证
-
错误的构造函数
-
未验证返回值
-
不安全的随机数
-
时间戳依赖
-
交易顺序依赖
-
Delegatecall调用
-
Call调用
-
拒绝服务
-
逻辑设计缺陷
-
假充值漏洞
-
短地址攻击
-
未初始化的存储指针
-
代币增发
-
冻结账户绕过
-
合约Gas 优化
-
变量覆盖
-
恶意后门
2)EOS合约
-
权限校验漏洞
-
转账通知伪造漏洞
-
Apply函数权限校验漏洞
-
整数溢出漏洞
-
权限校验漏洞
-
转账通知伪造漏洞
-
Apply函数权限校验漏洞
-
弱随机数种子漏洞
-
冻结账户绕过漏洞
-
拒绝服务漏洞
-
代码逻辑漏洞
-
假币攻击
-
回滚攻击
-
重放攻击
-
恶意后门
智能合约审计报告
1)审计报告的封面:
审计报告的封面中体现审计对象的名称、审计团队及报告的发布日期。
2)审计概述及项目背景:
概述和项目背景进行细致划分,使得审计报告更加清晰明了,其中项目背景对项目简介和审计范围做了详细介绍。
3)合约架构分析:
通过目录结构和合约详情说明该项目合约文件及对应合约的主要方法参数等。
4)审计详情:
在审计详情中通过风险分布、风险审计详情重点介绍合约审计过程中存在的相关风险,其中包括风险名称、漏洞描述、风险等级、安全建议、修复状态及审计结果等信息。
智能合约审计报告不是验证代码安全的法律文件;没有人能100%确保代码在未来不会发生错误或产生漏洞。审计团队对项目的审计报告只表示审计团队对项目进行过安全评估,这仅仅是保证你的代码已被专家校订过,基本上是安全的。选择权最终掌握在项目方及投资者手中。