CN111680290B - 一种基于以太坊虚拟机的代码插桩框架系统 - Google Patents
一种基于以太坊虚拟机的代码插桩框架系统 Download PDFInfo
- Publication number
- CN111680290B CN111680290B CN202010489633.9A CN202010489633A CN111680290B CN 111680290 B CN111680290 B CN 111680290B CN 202010489633 A CN202010489633 A CN 202010489633A CN 111680290 B CN111680290 B CN 111680290B
- Authority
- CN
- China
- Prior art keywords
- virtual machine
- module
- analysis script
- transaction
- analysis
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/54—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Devices For Executing Special Programs (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开一种基于以太坊虚拟机的代码插桩框架系统,包括分析脚本载入模块、分析脚本执行模块、以太坊虚拟机插桩模块、动态污点引擎模块、分析脚本接口模块;以太坊虚拟机插桩模块一方面在以太坊虚拟机中插入三类插桩点,用于打断以太坊虚拟机的执行,另一方面为分析脚本接口模块提供虚拟机在执行过程中的各类数据支持;分析脚本载入模块用于载入分析脚本并记录用户在意的插桩点;动态污点引擎模块用于为分析脚本接口模块提供数据流分析相关的各类数据支持;分析脚本接口模块为分析脚本执行模块提供接口查看虚拟机执行过程中各类数据和数据流分析相关的各类数据。本发明通过提供丰富的接口,帮助分析人员减小开发成本,大大减少运行性能损耗。
Description
技术领域
本发明涉及程序分析信息技术领域,具体涉及一种基于以太坊虚拟机的代码插桩框架系统。
背景技术
近年来,随着比特币系统的平稳运行,区块链技术受到世界范围内广泛的关注,而以太坊的诞生又是一个里程碑意义的事件。以太坊作为市值排名第二的区块链平台,最重要的突破和特色就是配备了图灵完备的以太坊虚拟机,可以支持智能合约的执行。以太坊原生的以太币以及在以太坊上发行的众多数字货币已经具备了相当的金融属性。以太坊网络由运行着以太坊客户端软件的节点组成,主要包括Go-Ethereum(简称Geth)和Parity等。
由于区块链技术,以太坊平台,智能合约都是新生事物,又因其具备的金融属性,近些年吸引了许多的恶意攻击者在以太坊平台上兴风作浪,严重地影响了以太坊的生态,比如臭名昭著的重入攻击,曾对以太坊平台造成巨大的影响。
程序插桩技术,是在保证被测程序原有逻辑完整性的基础上在程序中插入一些“探针”,本质上就是进行信息采集的代码段,通过“探针”的执行抛出程序运行的特征数据,通过对这些数据的分析,可以获取程序的控制流和数据流信息,进而得到逻辑覆盖等动态信息。程序插桩被广泛用于传统程序分析中。
随着以太坊平台上各类攻击漏洞层出不穷,结合程序插桩技术检测恶意行为的需求也愈发急迫,而近年来已经出现了一些基于插桩技术的攻击检测方法,不过由于没有成熟的插桩框架出现,目前以太坊与插桩技术的结合仍然是通过直接对以太坊虚拟机插入“探针”的方式,这需要分析人员对以太坊虚拟机的代码逻辑非常了解,并且针对不同类型攻击的检测会需要不同的插桩方式,不仅需要分析人员投入很高的开发成本,而且缺乏可扩展性。
Geth内嵌的trace功能提供了一个朴素的插桩框架,它在执行时会在每一个操作码(opcode)执行之前跳转到插桩代码的执行环境,而不管用户是否在意该种操作码(opcode),此种设计会带来额外的上下文切换开销,无法应对大规模的实验。并且它不具备动态污点引擎,分析人员在使用时仍然需要付出很高的开发成本来追踪程序的数据流。
发明内容
为了解决现有技术中存在的上述缺陷,本发明的公开了一种基于以太坊虚拟机的代码插桩框架系统,该系统可以帮助用户以最低的开发成本深入到以太坊虚拟机层面来理解和检测恶意行为。具体技术方案如下:
一种基于以太坊虚拟机的代码插桩框架系统,其特征在于,该系统包括分析脚本载入模块、分析脚本执行模块、以太坊虚拟机插桩模块、动态污点引擎模块和分析脚本接口模块;
所述的以太坊虚拟机插桩模块一方面在以太坊虚拟机中插入三类插桩点,用于打断以太坊虚拟机的执行,另一方面为所述的分析脚本接口模块提供以太坊虚拟机在执行过程中的各类数据支持;所述的三类插桩点包括常规交易类插桩点、智能合约类插桩点和操作码类插桩点;所述的常规交易指的是由非智能合约账户发起的交易;
所述的分析脚本载入模块用于载入分析脚本并记录用户在意的插桩点;
所述的分析脚本执行模块用于执行分析脚本;
所述的动态污点引擎模块用于为所述的分析脚本接口模块提供数据流分析相关的各类数据支持;
所述的分析脚本接口模块为所述的分析脚本执行模块提供接口,查看以太坊虚拟机在执行过程中的各类数据和数据流分析相关的各类数据。
进一步地,所述的常规交易类插桩点包含常规交易的开始和常规交易的结束。
进一步地,所述的智能合约插桩点包含执行一个智能合约的开始和结束。
进一步地,所述的操作码类插桩点包含操作码执行之前和操作码执行之后。
进一步地,所述的虚拟机在执行过程中的各类数据包括以太坊虚拟机中的栈、内存,交易输入字段、所涉及智能合约的状态变量和交易返回字段、当前交易的交易哈希和所处区块号;
其中,所述的栈、内存指的是以太坊虚拟机中的数据存储结构。
进一步地,所述的数据流分析相关的各类数据指的是动态污点引擎模块自主维护的用于存储和传播污点的影子栈、影子内存、影子交易输入字段、所涉及智能合约的影子状态变量和影子交易返回字段。
本发明的有益效果如下:
本发明的代码插桩框架系统可以帮助分析人员深入到以太坊虚拟机层面来理解和检测恶意行为,通过提供灵活的插桩接口,在完成基于以太坊虚拟机插桩的交易分析任务中可以节省用户大量的开发成本;通过提供查看以太坊虚拟机在执行过程中的各类数据的接口,节省了用户理解以太坊虚拟机底层逻辑的开发成本;通过配备动态污点引擎提供的查看数据流相关的各类数据的接口,节省了用户记录数据流的开发成本;通过提前加载用户脚本并记录用户在意的插桩点,可以做到在执行时按需调用用户的分析脚本,避免不必要的上下文切换而带来的性能损耗。
附图说明
图1为本发明的基于以太坊虚拟机的代码插桩框架系统的示意图。
具体实施方式
下面根据附图和优选实施例详细描述本发明,本发明的目的和效果将变得更加明白,应当理解,此处所描述的具体实施例仅仅用于解释本发明,并不用于限定本发明。
如图1所示,本发明的基于以太坊的代码插桩框架系统,包括:
(1)以太坊虚拟机插桩模块,该模块一方面在以太坊虚拟机中插入三类插桩点,用于打断以太坊虚拟机的执行,另一方面为分析脚本接口模块提供以太坊虚拟机在执行过程中的各类数据支持;所述的三类插桩点包括:
①常规交易类插桩点:常规交易的开始和常规交易的结束。
②智能合约类插桩点:执行一个智能合约的开始和结束。
③操作码类插桩点:操作码执行之前和操作码执行之后。
所述的常规交易指的是由非智能合约账户发起的交易。
所述的虚拟机在执行过程中的各类数据包括以太坊虚拟机中的栈、内存、交易输入字段,所涉及智能合约的状态变量和交易返回字段、当前交易的交易哈希和所处区块号;
所述的栈、内存指的是以太坊虚拟机中的数据存储结构。
(2)分析脚本载入模块,该模块用于载入分析脚本并记录用户在意的插桩点,目的是为了避免不必要的上下文切换而带来的性能损耗;所述的上下文切换指的是从以太坊虚拟机的执行上下文切换到分析脚本引擎的执行上下文。
(3)分析脚本执行模块,该模块用于执行分析脚本。
(4)动态污点引擎模块,该模块用于为分析脚本接口模块提供数据流分析相关的各类数据支持;所述的数据流分析相关的各类数据指的是动态污点引擎模块自主维护的用于存储和传播污点的影子栈、影子内存、影子交易输入字段、所涉及智能合约的影子状态变量和影子交易返回字段。
(5)分析脚本接口模块,该模块用于为分析脚本执行模块提供接口,查看以太坊虚拟机在执行过程中的各类数据和数据流分析相关的各类数据。
如图1所示,本发明的基于以太坊虚拟机的代码插桩框架系统部署在Geth内嵌的以太坊虚拟机中,其中分析脚本执行模块采用的是go-duktape提供的JavaScript执行引擎,为用户提供的开发脚本语言是JavaScript。
本领域普通技术人员可以理解,以上所述仅为发明的优选实例而已,并不用于限制发明,尽管参照前述实例对发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实例记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在发明的精神和原则之内,所做的修改、等同替换等均应包含在发明的保护范围之内。
Claims (6)
1.一种基于以太坊虚拟机的代码插桩框架系统,其特征在于,该系统包括分析脚本载入模块、分析脚本执行模块、以太坊虚拟机插桩模块、动态污点引擎模块和分析脚本接口模块;
所述的以太坊虚拟机插桩模块一方面在以太坊虚拟机中插入三类插桩点,用于打断以太坊虚拟机的执行,另一方面为所述的分析脚本接口模块提供以太坊虚拟机在执行过程中的各类数据支持;所述的三类插桩点包括常规交易类插桩点、智能合约类插桩点和操作码类插桩点;所述的常规交易指的是由非智能合约账户发起的交易;
所述的分析脚本载入模块用于载入分析脚本并记录用户在意的插桩点;
所述的分析脚本执行模块用于执行分析脚本;
所述的动态污点引擎模块用于为所述的分析脚本接口模块提供数据流分析相关的各类数据支持;
所述的分析脚本接口模块为所述的分析脚本执行模块提供接口,查看以太坊虚拟机在执行过程中的各类数据和数据流分析相关的各类数据。
2.根据权利要求1所述的基于以太坊虚拟机的代码插桩框架系统,其特征在于,所述的常规交易类插桩点包含常规交易的开始和常规交易的结束。
3.根据权利要求1所述的基于以太坊虚拟机的代码插桩框架系统,其特征在于,所述的智能合约插桩点包含执行一个智能合约的开始和结束。
4.根据权利要求1所述的基于以太坊虚拟机的代码插桩框架系统,其特征在于,所述的操作码类插桩点包含操作码执行之前和操作码执行之后。
5.根据权利要求1所述的基于以太坊虚拟机的代码插桩框架系统,其特征在于,所述的虚拟机在执行过程中的各类数据包括以太坊虚拟机中的栈、内存,交易输入字段、所涉及智能合约的状态变量和交易返回字段、当前交易的交易哈希和所处区块号;
其中,所述的栈、内存指的是以太坊虚拟机中的数据存储结构。
6.根据权利要求1所述的基于以太坊虚拟机的代码插桩框架系统,其特征在于,所述的数据流分析相关的各类数据指的是动态污点引擎模块自主维护的用于存储和传播污点的影子栈、影子内存、影子交易输入字段、所涉及智能合约的影子状态变量和影子交易返回字段。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010489633.9A CN111680290B (zh) | 2020-06-02 | 2020-06-02 | 一种基于以太坊虚拟机的代码插桩框架系统 |
PCT/CN2020/095248 WO2021243740A1 (zh) | 2020-06-02 | 2020-06-10 | 一种基于以太坊虚拟机的代码插桩框架系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010489633.9A CN111680290B (zh) | 2020-06-02 | 2020-06-02 | 一种基于以太坊虚拟机的代码插桩框架系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111680290A CN111680290A (zh) | 2020-09-18 |
CN111680290B true CN111680290B (zh) | 2023-04-11 |
Family
ID=72434862
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010489633.9A Active CN111680290B (zh) | 2020-06-02 | 2020-06-02 | 一种基于以太坊虚拟机的代码插桩框架系统 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN111680290B (zh) |
WO (1) | WO2021243740A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113919841A (zh) * | 2021-12-13 | 2022-01-11 | 北京雁翎网卫智能科技有限公司 | 一种基于静态特征和动态插桩的区块链交易监测方法及系统 |
CN114756872A (zh) * | 2022-04-28 | 2022-07-15 | 杭州孝道科技有限公司 | 基于go语言的注入式污点数据跟踪方法、装置和电子装置 |
CN116167058B (zh) * | 2023-04-23 | 2023-06-30 | 北京安普诺信息技术有限公司 | 一种基于代码疫苗的运行时漏洞分析方法及装置 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109493226A (zh) * | 2018-11-21 | 2019-03-19 | 北京物资学院 | 一种基于区块链的智能合约状态监测系统及监测方法 |
CN109800175A (zh) * | 2019-02-20 | 2019-05-24 | 河海大学 | 一种基于代码插桩的以太坊智能合约重入漏洞检测方法 |
CN110046089A (zh) * | 2019-03-01 | 2019-07-23 | 华南师范大学 | 一种基于路径覆盖充分性准则的智能合约测试方法 |
CN110427389A (zh) * | 2019-07-26 | 2019-11-08 | 南京安链数据科技有限公司 | 一种用于区块链数字货币的数据处理和查询方法 |
CN110766411A (zh) * | 2019-10-29 | 2020-02-07 | 电子科技大学 | 以太坊代币交易中不一致行为的检测方法 |
CN110866255A (zh) * | 2019-11-07 | 2020-03-06 | 博雅正链(北京)科技有限公司 | 一种智能合约漏洞检测方法 |
CN111177730A (zh) * | 2019-12-19 | 2020-05-19 | 河海大学 | 一种以太坊智能合约问题检测和预防方法与装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10452776B2 (en) * | 2017-07-28 | 2019-10-22 | International Business Machines Corporation | Cognitive mediator for generating blockchain smart contracts |
WO2019096326A1 (en) * | 2017-11-20 | 2019-05-23 | Obook Holdings Inc. | Blockchain-based room inventory management system |
US10880074B2 (en) * | 2018-10-15 | 2020-12-29 | Adobe Inc. | Smart contract platform for generating and customizing smart contracts |
-
2020
- 2020-06-02 CN CN202010489633.9A patent/CN111680290B/zh active Active
- 2020-06-10 WO PCT/CN2020/095248 patent/WO2021243740A1/zh active Application Filing
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109493226A (zh) * | 2018-11-21 | 2019-03-19 | 北京物资学院 | 一种基于区块链的智能合约状态监测系统及监测方法 |
CN109800175A (zh) * | 2019-02-20 | 2019-05-24 | 河海大学 | 一种基于代码插桩的以太坊智能合约重入漏洞检测方法 |
CN110046089A (zh) * | 2019-03-01 | 2019-07-23 | 华南师范大学 | 一种基于路径覆盖充分性准则的智能合约测试方法 |
CN110427389A (zh) * | 2019-07-26 | 2019-11-08 | 南京安链数据科技有限公司 | 一种用于区块链数字货币的数据处理和查询方法 |
CN110766411A (zh) * | 2019-10-29 | 2020-02-07 | 电子科技大学 | 以太坊代币交易中不一致行为的检测方法 |
CN110866255A (zh) * | 2019-11-07 | 2020-03-06 | 博雅正链(北京)科技有限公司 | 一种智能合约漏洞检测方法 |
CN111177730A (zh) * | 2019-12-19 | 2020-05-19 | 河海大学 | 一种以太坊智能合约问题检测和预防方法与装置 |
Non-Patent Citations (1)
Title |
---|
赵淦森 等.ContractGuard:面向以太坊区块链智能合约的入侵检测系统.网络与信息安全学报.2020,第6卷(第2期),P35-P53. * |
Also Published As
Publication number | Publication date |
---|---|
WO2021243740A1 (zh) | 2021-12-09 |
CN111680290A (zh) | 2020-09-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111680290B (zh) | 一种基于以太坊虚拟机的代码插桩框架系统 | |
CN110399730B (zh) | 智能合约漏洞的检查方法、系统及介质 | |
He et al. | {EOSAFE}: security analysis of {EOSIO} smart contracts | |
Fu et al. | Evmfuzzer: detect evm vulnerabilities via fuzz testing | |
Huang et al. | Crax: Software crash analysis for automatic exploit generation by modeling attacks as symbolic continuations | |
CN102693396B (zh) | 一种基于虚拟执行模式的Flash漏洞检测方法 | |
Liao et al. | SmartDagger: a bytecode-based static analysis approach for detecting cross-contract vulnerability | |
CN107193732B (zh) | 一种基于路径比对的校验函数定位方法 | |
CN104834859A (zh) | 一种Android应用中恶意行为的动态检测方法 | |
CN108090360B (zh) | 一种基于行为特征的安卓恶意应用分类方法及系统 | |
CN110728575A (zh) | 一种电力交易平台web安全深度监控方法 | |
CN104184728A (zh) | 一种Web应用系统的安全检测方法及安全检测装置 | |
CN103198260A (zh) | 一种二进制程序漏洞自动化定位方法 | |
CN111523097A (zh) | 基于安卓系统的app刷子用户识别方法、设备及存储介质 | |
Hou et al. | A dynamic detection technique for XSS vulnerabilities | |
CN105740711A (zh) | 一种基于内核对象行为本体的恶意代码检测方法及系统 | |
CN114996126A (zh) | 一种针对eosio智能合约的漏洞检测方法及系统 | |
CN115098863A (zh) | 一种基于静态与动态分析的智能合约重入漏洞检测方法 | |
CN112506564A (zh) | 一种用于建立控制流图的方法、系统和介质 | |
CN108932199B (zh) | 一种基于用户界面分析的自动化污点分析系统 | |
CN113919841A (zh) | 一种基于静态特征和动态插桩的区块链交易监测方法及系统 | |
Kang | A review on javascript engine vulnerability mining | |
Su et al. | DeFiWarder: Protecting DeFi Apps from Token Leaking Vulnerabilities | |
CN110457133A (zh) | 一种操作系统资源异常的处理方法及系统 | |
Min et al. | Android software vulnerability mining framework based on dynamic taint analysis technology |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |