【技术实现步骤摘要】
基于字节码重写的智能合约漏洞自动化修复系统及方法
[0001]本专利技术属于区块链智能合约漏洞检测与修复
,主要涉及了一种基于字节码重写的智能合约漏洞自动化修复系统及方法。
技术介绍
[0002]对智能合约的安全研究一直是近年来极为重要的任务。然而,尽管在漏洞检测方面做出了诸多努力,但许多众所周知的漏洞仍然出现在新部署的智能合约中。一个突出的例子是2020年在Uniswap合约中发生的重入攻击,该漏洞早在2019年4月就被发现,但一直没有正确修复,造成该问题的根本原因是很多开发者没有专业的漏洞修复技术。即使在自动检测工具的帮助下发现了漏洞,大多数开发人员也没有能力对其进行修补。因此,对自动修复技术的研究与漏洞检测技术一样迫切。
[0003]现有的智能合约自动修复技术主要有两个研究方向。一种是在源代码级别插入补丁,缺点是过分依赖合约源码,通用性较差。另一个研究方向是在字节码级别插入补丁,其典型实现包括EVMPatch、Elysium和SmartShield。现有的方法有着共同的缺点,即缺乏对合约字节码的语义分析, ...
【技术保护点】
【技术特征摘要】
1.基于字节码重写的智能合约漏洞自动化修复系统,其特征在于:至少包括虚拟执行引擎组件、漏洞检测器组件和字节码重写器组件,所述虚拟执行引擎组件包括符号执行和语义提取,跟踪每条指令的栈状态,并记录当前的memory和storage使用情况,实现在字节码层面挖掘出更多的语义信息;所述漏洞检测器组件具有嵌入式的指令过滤器,负责解析从虚拟执行引擎组件中提取的语义信息并找到敏感指令,根据敏感指令过滤规则进行过滤;所述字节码重写器组件结合基于蹦床注入和基于偏移修正注入两种修正方案,实现字节码重写;所述系统接受原始合约字节码和可选的控制策略文件作为输入,经由虚拟执行引擎组件在字节码层面挖掘更多的语义信息,再经由漏洞检测器组件鉴别漏洞相关语义并过滤敏感指令,最后通过字节码重写器进行字节码重写,输出加固后的合约字节码和修复报告。2.基于字节码重写的智能合约漏洞自动化修复方法,其特征在于,包括如下步骤:S1:输入原始合约字节码和控制策略文件;S2:启动本地虚拟执行引擎组件,进行符号执行和语义提取并生成控制流图;S3:通过漏洞检测器组件鉴别漏洞相关语义,并基于多条敏感指令过滤规则进行过滤,找到需要修复的位置;S4:通过结合基于蹦床注入和基于偏移修正注入两种修正方案的字节码重写器,进行字节码重写,实现gas开销最小化的自动化修复;S5:输出加固后的合约字节码和修复报告。3.如权利要求2所述的基于字节码重写的智能合约漏洞自动化修复方法,其特征在于:所述步骤S1中,原始合约字节码为后缀名为.bin的字节码文件;所述控制策略文件是可选的,辅助用户明确指定字节码中需要修复的特定函数。4.如权利要求2或3所述的基于字节码重写的智能合约漏洞自动化修复方法,其特征在于:所述步骤S2具体为:截断原始合约字节码中的metadata hash和deploymentcode,得到剩余部分,进行检测并加固的runtimecode;通过识别特征指令,将所有指令拆分为多个基本块;启动本地虚拟执行引擎,开辟全局调用栈,从runtimecode的第一条指令开始进行读取做符号执行,在符号执行的过程中,针对所有基本块,标识其前置基本块和后置基本块,最终构建原始合约字节码的控制流图CFG。5.如权利要求4所述的基于字节码重写的智能合约漏洞自动化修复方法,其特征在于:所述步骤S2的符号执行过程中,若...
【专利技术属性】
技术研发人员:秦中元,史亚东,张群芳,陈玉清,杨继斌,
申请(专利权)人:东南大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。