_($0PXQFQ7Y(P~4838LJ_]L.png

管理培训搜索
18318889481 17875936848

财审
| 数据库服务

财税信息库

| 金融会计专题

融资租赁会计 并购会计 期权会计 估值管理 贷款公司会计 金融审计 资产管理会计 套期会计 股票会计 金融工具 公允价值计量

| 转创平台
| 财税中心

财税培训 房地产财税 留抵退税 知识库 税收政策 税务处理 涉税处理 金税四期 财税咨询 税务优化 税务咨询 税前扣除 涉税问题

| 国际财务管理

财政支出绩效评价 国际企业财务管理 国际会计 外商投资 国际财务准则 ISSB动态追踪 转创全球会计

| 税务师事务所

税务师执业 汇算清缴 税务稽查 资料下载 不良资产处置税务系列 出口退税 税收筹划 房地产税务筹划 税务鉴证服务 进出口税收 IPO财税 全球企业税收征管 个人所得税 并购重组涉税 企业所得税 研发加计扣除 转让定价专题 君恒税务师事务所 经典案例 涉税服务 高新技术企业税务筹划 减税降费

| 财税法律服务

法证会计 税务合规服务 工商法规 行政处罚 经济预警 行政复议 税款征收 民商涉税 虚开发票

| 会计中心

医药会计 成本会计 无形资产会计 交通会计 银行会计 商业智能管理会计 政府管理会计 建设会计 工会会计 会计工厂 国企会计 会计监督 会计信息化 商业会计 教育会计 数字会计 财政会计 农业会计

| 财务咨询

财务顾问 财税金融 财务管理咨询 财会资管 内控审核 公共财务总监 财务分析

| 内部审计专题

内部审计 内部控制审计 内部审计规程 公用经费审计 内部审计准则 银行内部审计 内部审计制度 内部审计指南 内审质量评估 房地产企业内部审计

| 审计创新与全球化

信息技术审计ITA 电子数据处理审计EDPA 数字化函证 国际审计准则与实务 大数据审计 数据采集与审计 区块链审计 信息系统审计 电子数据审计 电子商业汇票跨境支付 可信安全体系

| 代理记账中心

健顺财务咨询 会计园地 会计处理 代理记账 工商注册 账务处理

| 会计师事务所

会计准则 票研社 会计师事务 财务审计 尽职调查

| 审计智库

国际审计

| 审计中心

风险审计 工程造价审计 物流审计 人力资源审计 预算审计 碳审计 固定资产审计 投标审计 政府审计 资金管理审计 工程审计 绩效审计

| 审计及鉴证

审计服务 财务报告审计服务 审计及鉴证服务 上市公司审计 税务审计 风险导向审计

| 专项审计

离任审计 清算审计 专项审计 司法审计 经济责任审计 清产核资 反舞弊审计

| 审计工厂

竣工决算审计 大数据审计 网络安全审计 法证会计 反舞弊中心 财税审计 审计监督 教育内部审计 预决算审计 审计质量评估 绿色审计 审计工程 合规审计 审计信息化 审计之家

| 审计咨询服务

资产评估审计 经济责任审计 资产审计 IPO审计 财务审计 财政审计

| 智能合约漏洞与安全审计手段浅析当前您所在的位置:首页 > 财审 > 审计工厂 > 网络安全审计

关键词:智能合约;攻防技术;以太坊;数字货币

0 引 言

中本聪[1]提出比特币使用的区块链技术实际上是一种特殊的电子账本,账本中公开记录着从区块链建立之初的每一条转帐记录。这是一种去中心化的账本,其完全不依赖中心监管机构的工作,能够完全独立的完成交易的发生和确认,降低了由于单一节点风险引起的安全问题。事实上,由于区块链的用户、买卖双方实际是互相不信任的节点,交易双方均不信任对方能够单独正确记录交易,则衍生出了基于运算能力保证的确认机制,用户、交易、矿工三者构成了基本的加密货币交易。加密货币本质上是区块链技术的一个小的应用方面,此外,依托于区块链中记录信息的不可更改的特性,我们可以在不依赖第三方公证机构的前提下,永久性记录用户双方发生的一切交易、操作、合同等权威性文件、信息。而传统的公证技术往往依赖第三方权威机构的参与,其中第三方机构公信力决定了公正文件的可信度。而基于区块链智能合约的新一代合同、能够摆脱对第三方机构权威的依赖,在增强合约、信息可信度的同时,能够减少实际公证过程的人力物力财力的消耗。

以太坊提供给开发者和用户一套能够构建去中心化应用的完整技术平台。比特币提供了完整的端到端加密交易系统,使用者能够使用其完成完整的交易。以太坊相较于比特币来说,除了提供传统的类似于比特币的交易记录能力——以太币外,同时能够用于创建去中心化的程序、自治组织和智能合约。至今,以太坊已经在金融、物联网、智能电网、游戏开发、智能合同等多领域被广泛应用[2]

智能合约是以太坊应用平台的核心,本质上是以公开的形式随着区块链一同部署在应用网络之中的一段程序代码。能够根据设定的规则,完成决策、资料储存以及以太币的传输。智能合约提供验证及执行智能合约本身所设定的条件,对整个网络的公开性与透明性,允许在没有第三方的情况下完成可信交易,同时这些交易具有高度的匿名性。

尽管智能合约设计本身目的在于减少可能存在的风险问题。但是,类似于以太坊的智能合约仍存在设计上的缺陷,攻击者能够利用设计漏洞,对其进行攻击,导致大量经济损失。例如,以太坊中最大规模的一次攻击致使整个区块链进行了版本回退,降低了人们对智能合约不可逆性质的信任。

本文针对智能合约以及区块链技术的攻击进行分类与介绍,分析至今所进行的智能合约弱点检测技术,提供合约部署之前的安全检查手段,同时提出了智能合约安全研究的未来可能方向。

1 问题与挑战

智能合约存在的安全隐患主要可以被分为四类:恶意软件传播、共识机制缺陷、智能合约漏洞和用户欺诈行为。本节针对每类安全隐患展开了具体介绍。

1.1 恶意软件传播

恶意软件为攻击者开发,通过网络传播,在用户端运行,目的是盗取用户信息或者进行诈骗,其可以伪装成正常的网页页面、邮件等形式,骗取用户下载之后,干预用于在本终端上进行的交易行为[3]。一种常见的形式是将用户数据劫持到刚刚产生的硬分支上,要求用户与该分支进行同步,这样攻击者就能够在该分之上伪造交易记录,骗取用户的所有货币。另外攻击者还常采取加密劫持、通信攻击等技术诱导矿工处理错误分支,从而对自己伪造的数据进行区块验证[4]

此外还有很多恶意软件使用区块链技术帮助自身的传播,他们不对区块链本身进行攻击,而是使用区块链的广播特性,复制、传播自己的拷贝。K-ary恶意软件是一种利用区块链技术的恶意软件,通过将恶意程序的指令分成单独的区块,每个子程序仅包括一部分代码,伪装成正常的软件,进而躲避现存的恶意软件检测技术[5]。Glupteba利用了区块链进行自身的复制和更新,能够建立分散的将是网络。这些恶意软件还能够窃取用户的用户名、密码、Cookie等信息,从而造成更大的用户数据泄露问题[6-7]

1.2 共识机制缺陷

比特币[1]与以太坊[8]最早使用的共识机制为工作量证明(Proof of Work,PoW),依赖散列值函数来确保数据的正确性,由分散在各地的计算机,通过计算找到对应区块的猜测值,获取该区块的打包权,进而获得区块奖励。攻击者可以通过对该机制的攻击获得区块链的完整控制权,可以控制交易记录的记录,甚至完全控制该加密货币的价格。常见的攻击手段包括51%攻击、自私挖矿[9]以及34%攻击[10]

PoW假定整个区块链网络中至少存在 50%的诚信节点,如果单一节点控制超过51%的计算能力,就能控制整个区块链网[11-12]。女巫攻击通过在网络中创建大量的无效节点,消除冗余备份的作用,当攻击者创造足够多的虚假身份,其可以以多数票控制整个区块网络,实现双重花费攻击[13]。日蚀攻击通过将区块链网络分割,进而在子网路中高于51%的计算能力,分别在两个网络中进行51%攻击[14]。此外,BGP劫持[15]通过英特网路由本身的特性,拦截比特币流量,通过干扰关键的比特币消息,减缓广播的传播速度,进而攻击比特币网络。

1.3 智能合约漏洞

区块链技术普遍采用智能合约作为区块自动化运行的机制,不同的区块链拥有自行设计的智能合约,尽管每个合约提出时都不同程度的强调了自身的完备性、隐私性与安全性。其中由于合约设计的问题,常常可以通过对合约本身的分析进而发现该区块链的漏洞。

智能合约应用类似于运行在区块链上的网络应用,如网络应用一样,如果没有正确处理错误或者完全没有处理意外的错误,会导致整个网络受到巨大的影响。例如,The DAO攻击利用了Solidity中的扣除与转帐的顺序错误,多次调用了转帐函数,而扣除函数始终没有调用,导致损失了六千万美元[16],KotET、GovernMental、Rubixi等[17]以太坊应用均因代码设计缺陷遭受了基于智能合约漏洞的攻击。

1.4 用户欺诈行为

比特币要求至少交易在6个区块之后才能完全被确认,但是面对快速支付[18],如果不能在短时间内对交易进行确认,则交易者可以利用这一漏洞,欺骗卖家先支付货物,同时短时间内再次执行相同金额的操作。对于矿工来说,只会打包其中的一条记录,这样,对于卖家来说在交易最终确认之前就已经支付了双份的货物,但是最终只能收到第二条交易的交易费用[19]

2 研究现状分析

2.1 常见攻击手段

本节我们对可能存在的智能合约攻击技术进行了介绍,这些可能存在的攻击手段会使智能合约仍然正常运行,导致错误检测变得尤为困难,因此这些攻击手段会对区块链造成严重的损害。

2.1.1 重入攻击

以太坊智能合约设计时,提供了调用外部其他合约的能力。合约通常也是处理以太币,因此会将这一部分以太币通过外部的合约处理,以太币发送给外部用户地址,调用外部合约。这些外部调用可能被攻击者劫持,迫使合约进一步执行代码,通过回调函数再次调用回调函数本身[17]。这一过程实现了重新进入合约,在余额检查之前重复执行回调函数。攻击者可以发起单次重入和多次重入攻击,通过攻击者设定的特殊函数完成目标任务。

以太坊中著名的The DAO事件即通过重入攻击实现,最终导致六千万美元的以太币被盗,以太坊社区最终采取硬分支以太坊区块链,所有的资金被恢复到攻击进行之前[20]

2.1.2 算法上下溢出

这一漏洞主要是以太坊虚拟机(EVM)为整数制定了固定大小的整数类型。当输入数据超过范围且没有进行检查时,就会导致溢出发生[21]

攻击者可以利用这一漏洞,允许攻击者滥用代码并创建意外的逻辑流程,允许攻击者无视原本的逻辑判断,获得用户的以太币、Token等私密信息。

2.1.3 默认可见性

Solidity中的函数具有可见性说明符,决定了一个函数是否能够由用户或其他的派生智能合约在外部调用、只允许内部调用或只允许外部调用[22]。默认的函数可见默认为puliic,如果没有正确的隐藏有关合约余额更改的函数,则攻击者可以直接调用该函数窃取合约中的货币。

Parity MultiSig Wallet由于没有对初始化函数制定可见性,导致攻击者能够在部署的合约上调用这些初始化函数,并将所有权重置为攻击者,这样攻击者就可以盗取钱包中的所有以太币[23]。在Parity MultiSig Wallet受到的一次攻击中,价值约3100万美元的以太币被盗。

2.1.4 短地址攻击

短地址攻击远离同样是因为以太坊虚拟机(EVM)的设计问题 [24]。ERC20标准 [25]中,transfer函数对于短地址会从转帐金额中取高位的0来补充,转帐金额同时会在地位补上移走的0,等效于转帐金额左移翻倍。攻击者可以通过不填写转帐地址末尾的0完成短地址攻击,这是一种由于未检验用户输入导致的合约漏洞。

2.1.5 时间戳修改

区块链中,时间戳存在着很多的用途,包括生成随机数、锁定一段时间的资金,以及各种给予时间变更的条件语句,如果区块链中的矿工能够调整时间戳,可以发起对交易者不平等的攻击[26]。一方面,矿工可以通过调整时间戳,产生特定需求的随机数,另外,矿工可以依靠时间的控制,在某些以太坊程序操纵获胜机制,进而损害其他玩家利益。

在GovernMental中[27],合约会在一轮内支付给最后一个加入的玩家,这里限制玩家至少需要加入一分钟,如果矿工能够调整时间戳,显示玩家已经加入了一分钟,则矿工可以限制快速满足游戏要求。

2.2 防御手段及其局限性

大部分以太坊智能合约出现问题的本质是智能合约本身的编写存在严重漏洞,其中包括不正确的逻辑关系、未验证的输入行为以及很多未处理的错误类型。这些都会导致智能合约在运行过程中,被攻击者利用,进而影响智能合约的正常运行。本节介绍了多种智能合约审计手段,并对其适用点以及不足进行了分析。

2.2.1 Slither

Slither是一种用于智能合约的静态分析框架[28],用于提供有关以太坊智能合约的有关信息。通过将Solidity智能合约转换成一种称为SlithIR的中间表示来工作,Slither能够获得智能合约的继承图、控制流图,通过预定义的分析列表来对SlithIR进行漏洞分析。能够自动的进行程序分析、数据流和污点追踪,主要可以应用于自动漏洞检测、自动优化检测、辅助用户理解智能合约以及协助代码审查。

但是Slither缺乏形式语义,限制了执行更详细的安全分析[28],不能准确的确定类似gas计算等低级信息。此外如果安全代码不能够吻合外部调用时,扫描进程会被终止[29]

2.2.2 Mythri

Mythri[30]是一种开源工具,利用符号执行技术来确定智能合约中可能存在的错误。其安全分析方法为检查在以太坊虚拟机中执行的字节码。当发现程序中的缺陷时,通过输入的记录分析确定可能存在的原因。能够帮助推断存在的漏洞并帮助减少利用漏洞的可能。

尽管 Mythri是一种启发式检测技术,在安全性分析中具有很高的准确度,但是其仍具有一定的局限性[31]。在执行污点分析的时候,不能够跨越内存区域的限制,如果参数调用方式为引用式,这种限制会更加严重。

2.2.3 Oyente

Oyente是一种符号执行工具,能够直接与以太坊虚拟机一起使用,而无需访问高级语言形式[32]。其不仅可以检测不安全的错误,同时能够分析每条代码的实际执行路径。Oyente对19,366个智能合约进行分析,发现其中8,833个智能合约均存在漏洞问题[32]

Oyente只能够检测20.2%的Parity Wallet攻击[29],无法有效的记录TOD漏洞,仅能够防御诸如重入攻击和时间戳控制的漏洞。

2.2.4 Manticore

Manticore是一种Solidity审计手段,能够对智能合约进行符号分析,自动产生用于漏洞分析的特定输入、记录指令级实现过程,并通过Python API提供对其分析引擎的访问[33-34],对二进制文件和以太坊智能合约进行分析,用户通过API自定义分析内容[35]

Manticore能防御重入攻击和 TX.origin滥用,但是不能检测时间戳控制问题。它需要针对每一种漏洞生成对应的攻击分析,因此它的运行速度较慢[34]

2.2.5 Secruify

Secruify是一种智能合约安全分析工具[36]。能够自动化的分析证明给定智能合约是否是安全的。Secruity主要包括两个步骤,首先分析智能合约的依赖关系图,从中分析精确的语义信息,然后检查特定的用于计算资产拥有者的代码模式,据此给出智能合约的安全性分析结果。与Oyente和 Mythril对比来说,Securify利用静态分析来分析智能合约的每条路径。

Secruify不包含数值分析[36],无法识别智能合约中可能存在的溢出问题。

2.2.6 SmartCheck

SmartCheck是一种能够检测Solidity代码中漏洞的一种可拓展静态分析工具[37]。其通过将源代码转换成基于XML的中间表示形式,并根据XPath模式,分析元素之间的关联关系,进而分析程序漏洞。除了能够检测可能存在的漏洞,SmartCheck同时能解释漏洞造成的原因并给出修改建议[38]

SmartCheck无法检测到一些只能由污点分析或者手动分析处理的严重程序错误[37],能够识别智能合约中低风险的问题包括错误编译器版本、不正确的样式、冗余代码等问题。同时,也有分析指出SmartCheck无法分析重入攻击和自杀合同等问题[39]

3 未来研究方向

智能合约中存在的主要问题来源均为Solidity程序语言以及智能合约开发者未能考虑到所有的漏洞情况。早期Solidity存在着很多的安全问题,包括未经检查的函数回调、溢出未检查以及时间戳修改设计等问题。实际在智能合约的设计过程中,需要设计者充分考虑可能存在于合约代码中的执行漏洞,对错误进行完善的错误处理,并对合约本身执行相关的漏洞分析处理。但根本上应该是Solidity自身进行一定的迭代,从底层对可能发生的错误进行处理,而不应该将这些错误直接暴露给合约设计者。

同时,应该有更多针对新漏洞的分析软件,通过静态、动态代码分析,捕获出现的风险问题,及时给予合约开发者调整修改的建议。另外可以考虑一种事实的合约保护处理方式,对常见的、危害大的漏洞增加新一层接口,使用这层接口首先对输入输出数据进行过滤,之后再输入给底层的智能合约进行合约的处理工作。这样可以实现动态过滤同时能够在不更改底层合约的情况下,完成对用户的保护,还可以根据新风险的出现实时调整过滤手段。

既然智能合约拥有传统合约所不具有的优点,也应对智能合约应用前景进行研究,提早对可能存在的应用场景进行分析,就可以在实际部署之前,对该应用角度进行安全性分析,最终建立安全的智能合约体系。

4 结 论

智能合约给使用者提供方便记录信息的手段,这一手段具有传统协议共识手段所不具备的安全性、便捷性。越来越多的研发力量、资产投入到智能合约的应用研究中,同时也伴随着对更多攻击者的攻击技术研究,更多智能合约的漏洞问题被暴露出来。

本文首先对智能合约技术及其应用场景做了简要概述,接下来针对智能合约的组成分析了其各种攻击的基本分类,之后介绍了针对智能合约程序的各种基本攻击手段。同时分析了多个安全工具以及各自的局限性。最后对该领域可能存在的研究前景做出了展望,为了能够更好地使用智能合约技术提高信息记录的安全性,需要在智能合约技术的风险性研究上投入更多精力。


转创君
企业概况
联系我们
专家顾问
企业文化
党风建设
核心团队
资质荣誉
领导智库
专家库
公司公告
加入转创
战略合作伙伴
质量保证
咨询流程
联系我们
咨询
IPO咨询
中国企业国际化发展战略
投融资规划
企业管理咨询
人力资源管理
风险管理
竞争战略
集团管控
并购重组
家族办公室
资产管理
股权设计
企业管治与内部审计
企业估值
价值办公室
内控咨询
投资银行
管治、内控及合规服务
法律咨询
服务
管理咨询服务
投融资规划
人力资源
资产评估服务
会计服务
科技服务
资质认证
ESG服务
商务咨询
转创法信
内部控制服务
转创投服
金融服务咨询
企业服务
财会服务
翻译服务
财审
金融会计专题
财税中心
国际财务管理
税务师事务所
财税法律服务
会计中心
财务咨询
内部审计专题
审计创新与全球化
代理记账中心
会计师事务所
审计智库
审计中心
审计及鉴证
专项审计
审计工厂
审计咨询服务
金融
纳斯达克
并购交易服务
北交所
IPO咨询
深交所
上交所
直通新三板
董秘工作平台
独立董事事务
SPAC
资本市场服务中心
澳洲上市
加拿大上市
香港联交所
新交所
金融分析师事务所
合规
合规与政府管制
企业合规
网络安全与隐私保护
法证会计与反舞弊
反洗钱与制裁合规
反垄断中心
企业合规管理咨询
合规中心
转创全球企业合规
合规律师事务所
金融安全与合规
海关及全球贸易合规
ESG合规
反欺诈中心
合规中心(产业)
知识产权合规专题
私募股权基金合规
ESG
绿色金融
ESG环境
监督中心
ESG社会
监管中心
全球ESG政策法规
ESG咨询
ESG治理
CRS中心
ESG中心
纪检监察
SDG中心
政府管制
法信
信用中心
知识产权
诚信中心
估值分析
转创信评
资产管理
内控中心
征信中心
转创评值
资产评估事务
金融估值
数据资产评估
信用研究
管理
并购重组
转创国际企业研究所
创新创业
转型升级
投融资规划
管理咨询
企业管理可持续
环境评价与双碳计划
人力资源
咨询与战略
转创产研
法律
刑事法律服务
资本市场法律服务
财税金融法律事务
转创国际合规律师
民商事法律服务
人力资源与劳动法律
公司法律服务
转创法信事务所
科技与知识产权专题
风险
警察中心
危机管理
金融风险专题
风险管理中心
网络安全与隐私保护
法律风险
企业风险管理
风险控制师事务所
国际风险研究
风险管理咨询
风险中心
黑客中心
风控中心
操作风险专题
安全中心
转创
转创深圳(深莞惠)
转创广佛
转创系统
转创梅州
客家经济
转创珠三角
转创潮州
转创网校
转创厦门
转创国际汕头
转创揭阳
转创国际研究院
中国转创科学院
18318889481 17875936848
在线QQ
在线留言
返回首页
返回顶部
留言板
发送