[发明专利]一种针对以太坊智能合约的静态代码审计系统及方法有效
申请号: | 201811404851.7 | 申请日: | 2018-11-23 |
公开(公告)号: | CN109684838B | 公开(公告)日: | 2020-03-27 |
发明(设计)人: | 李洪伟;谈辰;刘森;成艺;龚丽;杨浩淼;任彦之 | 申请(专利权)人: | 电子科技大学 |
主分类号: | G06F21/56 | 分类号: | G06F21/56 |
代理公司: | 电子科技大学专利中心 51203 | 代理人: | 李明光 |
地址: | 611731 四川省成*** | 国省代码: | 四川;51 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 针对 以太 智能 合约 静态 代码 审计 系统 方法 | ||
本发明公开了一种在区块链的以太坊平台上针对智能合约的静态代码审计系统及方法,属于信息安全技术领域。本发明能够检测以太坊平台上使用Solidity语言编写的智能合约上存在的安全威胁,定位到具体位置,阐明危害并给出相应的解决方法。本发明方法:首先,用户将待检测的项目目录或者单个文件的路径输入系统,系统对输入内容进行预处理操作,将整个项目复制到临时工作目录中并删除其中的Solidity文件中的注释内容;其次,系统将通过词法分析和语法分析等操作将每一个Solidity文件都解析成语法树的形式;然后,系统将语法树结构与预先制定的逻辑匹配特征进行静态特征匹配,得到匹配结果;最后,系统将匹配后的结果分类并汇总,生成报告文件,即为检测结果。
技术领域
本发明属于信息安全技术领域,具体涉及一种在区块链的以太坊平台上针对智能合约的静态代码审计系统及方法。
背景技术
区块链技术狭义来讲,是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。广义来讲,区块链技术是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算方式。
以太坊是一个开源的有智能合约功能的公共区块链平台。通过其专用加密货币以太币提供去中心化的虚拟机来处理点对点合约。
智能合约是执行合约条款的计算机交易协议。它本质上就是一段可以执行的代码,当用户访问到该地址上时,智能合约将会自动运行。智能合约是公开的,区块链上的所有用户都可以看到基于区块链的智能合约。
目前已有不少基于区块链的以太坊平台上的智能合约应用,如社会经济平台的Backfeed、去中心化预测市场Augur和智能电网TransActive Grid等,然而在不少应用的开发过程中,设计者只关注其功能性而未考虑其安全问题,导致应用存在有安全隐患,又由于智能合约的内容是公开的,任何人都可以分析其源码从而找到漏洞。
发明内容
本发明的目的是克服上述现有技术的缺陷,提供一种在区块链的以太坊平台上针对智能合约的静态代码审计系统及方法。
本发明所提出的技术问题是这样解决的:
一种在区块链的以太坊平台上针对智能合约的静态代码审计系统,包括预处理模块、语法树生成模块、静态特征匹配模块和报告生成模块;
预处理模块:用于检测用户输入的合法性,将项目整体复制到临时工作目录,删除Solidity文件中的注释部分;
语法树生成模块:用于对预处理后的文件进行词法分析和语法分析,生成语法树;
静态特征匹配模块:用于将语法树与预先制定的逻辑匹配规则相匹配,检查是否命中,若命中匹配则记录对应的代码信息;
报告生成模块:用于分类并汇总匹配成功的代码信息,生成报告结果文件。
一种在区块链的以太坊平台上针对智能合约的静态代码审计方法,包括以下步骤:
步骤1.系统预处理:
系统对用户的输入进行合法性检测,然后将项目整体复制到临时工作目录中,并将其中的Solidity文件中的注释部分删除;
步骤2.语法树生成:
针对每一个Solidity代码文件,首先处理其引用文件,将引用的部分内容复制到当前文件中,然后进行词法分析,把每一个合法的词汇都提取出来,接着对词汇进行再处理操作,将其中的变量和常量封装成对应的结构类型,最后进行语法分析,通过下推自动机等技术将代码表达式转化成语法树的形式;
步骤3.静态特征匹配:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于电子科技大学,未经电子科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811404851.7/2.html,转载请声明来源钻瓜专利网。