CN110766402B - 交易顺序依赖漏洞检测方法、系统、电子装置及存储介质 - Google Patents

交易顺序依赖漏洞检测方法、系统、电子装置及存储介质 Download PDF

Info

Publication number
CN110766402B
CN110766402B CN201910567667.2A CN201910567667A CN110766402B CN 110766402 B CN110766402 B CN 110766402B CN 201910567667 A CN201910567667 A CN 201910567667A CN 110766402 B CN110766402 B CN 110766402B
Authority
CN
China
Prior art keywords
parameter
information
transaction
current stack
variable
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
Application number
CN201910567667.2A
Other languages
English (en)
Other versions
CN110766402A (zh
Inventor
万丽
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Runpeng Huatong Creative Technology Co ltd
Original Assignee
Shenzhen Runpeng Huatong Creative Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shenzhen Runpeng Huatong Creative Technology Co ltd filed Critical Shenzhen Runpeng Huatong Creative Technology Co ltd
Priority to CN201910567667.2A priority Critical patent/CN110766402B/zh
Publication of CN110766402A publication Critical patent/CN110766402A/zh
Application granted granted Critical
Publication of CN110766402B publication Critical patent/CN110766402B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Business, Economics & Management (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Accounting & Taxation (AREA)
  • Computing Systems (AREA)
  • Finance (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种交易顺序依赖漏洞检测方法,涉及漏洞检测技术领域,用于检测交易顺序依赖漏洞,包括:获取交易池当前堆栈信息中消息调用的目标地址及消息调用附带发送的以太信息,并将目标地址及以太信息分别作为第二参数及第三参数;若第二参数及第三参数与正则表达式相匹配,从第二参数及第三参数对应的区块链存储槽位中取出参数变量;在预定的区块链节点约束条件下,参数变量可以改变,将参数变量保存在预设的参数列表中;将当前堆栈栈顶的前两个元素出栈作为第一参数,若第一参数写入区块链的存储槽位后,第一参数存在参数列表中,则确定合约存在交易顺序依赖漏洞;从而能够及时地检测出交易顺序依赖漏洞,降低区块链上的信息被盗取的风险。

Description

交易顺序依赖漏洞检测方法、系统、电子装置及存储介质
技术领域
本发明涉及漏洞检测技术领域,尤其涉及一种交易顺序依赖漏洞检测方法、系统、电子装置及存储介质。
背景技术
区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。
随着区块链的发展,在一些信息被放入区块链的交易池后,矿工会以交易手续费为基准对交易池中的所有交易信息进行降序排序,然后根据该排序对信息进行打包。
然而,若交易合约内部存储变量的值依赖于交易被打包的顺序,那么交易合约就可能存在交易顺序依赖漏洞,若无法及时检测出交易顺序依赖漏洞,则会增加了区块链上的信息被盗取的风险。
发明内容
本发明的主要目的在于提供一种交易顺序依赖漏洞检测方法、系统、电子装置及存储介质,旨在解决现有技术中交易合约就可能存在交易顺序依赖漏洞,从而增加了区块链上的信息被盗取的风险的技术问题。
为实现上述目的,本发明第一方面提供一种交易顺序依赖漏洞检测方法,包括:获取交易池的当前堆栈信息中消息调用的目标地址及消息调用附带发送的以太信息,并将所述目标地址及所述以太信息分别作为第二参数及第三参数;若所述第二参数及所述第三参数与匹配字符串的正则表达式相匹配,则从所述第二参数及所述第三参数对应的区块链存储槽位中取出参数变量;若在预定的区块链节点的约束条件下,所述参数变量可以改变,则将所述参数变量保存在预设的参数列表中;将所述当前堆栈栈顶的前两个元素出栈作为第一参数,若所述第一参数写入区块链的存储槽位后,所述第一参数存在于所述参数列表中,则确定合约存在交易顺序依赖漏洞。
进一步地,所述获取交易池的当前堆栈信息中消息调用的目标地址及消息调用附带发送的以太信息包括:遍历交易池的状态空间,找出所有包含CALL函数或/及DELEGATECALL函数操作码的第一全局状态;在所述第一全局状态中,获取交易池的当前堆栈信息;提取所述当前堆栈信息,得到消息调用的目标地址及消息调用附带发送的以太信息。
进一步地,所述将所述当前堆栈栈顶的前两个元素出栈作为第一参数包括:遍历状态空间,找出所有包含SSTORE函数操作码的第二全局状态及相应的节点信息;在所述第二全局状态中,将所述当前堆栈栈顶的前两个元素出栈作为第一参数,所述第一参数作为SSTORE函数操作码的参数。
进一步地,所述正则表达式为“storage_[a-z0-9_&^]*[0-9]+”;其中,“a-z”表示匹配小写字母,“0-9”表示匹配数字,“^”表示在首位时开始匹配,“+”表示匹配1次或多次,“a-z0-9”表示匹配任意小写字母或数字,“storage”表示永久存储在区块链中的变量,“[a-z0-9_&^]*[0-9]”表示以任意小写字母或数字开头,随后紧跟任意一个数字的字符串。
本发明第二方面提供一种交易顺序依赖漏洞检测系统,包括:参数获取模块,用于获取交易池的当前堆栈信息中消息调用的目标地址及消息调用附带发送的以太信息,并将所述目标地址及所述以太信息分别作为第二参数及第三参数;参数变量提取模块,用于在所述第二参数及所述第三参数与匹配字符串的正则表达式相匹配的情况下,从所述参数获取模块获取的第二参数及所述第三参数对应的存储槽位中取出参数变量;参数变量保存模块,用于在给定节点约束条件的情况下,所述参数变量提取模块取出的参数变量可以改变,则将所述参数变量保存在列表中;参数对比模块,用于在将所述当前堆栈栈顶的前两个元素出栈作为第一参数后,若所述第一参数写入存储槽位后,存在于所述参数变量保存模块保存的列表中,则表明合约存在交易顺序依赖漏洞。
进一步地,所述参数获取模块包括:第一遍历单元,用于遍历交易池的状态空间,找出所有包含CALL函数或/及DELEGATECALL函数操作码的第一全局状态;堆栈信息获取单元,用于在所述第一遍历单元获取的第一全局状态中,获取交易池的当前堆栈信息;堆栈信息提取单元,用于提取所述堆栈信息获取单元获取的当前堆栈信息,得到消息调用的目标地址及消息调用附带发送的以太信息。
进一步地,所述参数对比模块包括:第二遍历单元,用于遍历状态空间,找出所有包含SSTORE函数操作码的第二全局状态及相应的节点信息;第一参数获取单元,用于在所述第二遍历单元获取的第二全局状态中,将所述堆栈信息获取单元获取的当前堆栈栈顶的前两个元素出栈作为第一参数,所述第一参数作为SSTORE函数操作码的参数;判断单元,用于判断所述第一参数获取单元获取的第一参数写入存储槽位后,是否存在于所述参数变量保存模块保存的列表中,若存在,则表明合约存在交易顺序依赖漏洞。
进一步地,所述系统还包括:正则表达式构建模块,用于构建正则表达式“storage_[a-z0-9_&^]*[0-9]+”,其中,“a-z”表示匹配小写字母,“0-9”表示匹配数字,“^”表示在首位时开始匹配,“+”表示匹配1次或多次,“a-z0-9”表示匹配任意小写字母或数字。
本发明第三方面提供一种电子装置,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时,实现前述中的交易顺序依赖漏洞检测方法。
本发明第四方面提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,实现前述中的交易顺序依赖漏洞检测方法。
本发明提供一种交易顺序依赖漏洞检测方法、系统、电子装置及存储介质,有益效果在于:第二参数及第三参数来自于交易池的当前堆栈信息,因此第二参数及第三参数的值代表了交易池的交易合约内部的存储变量,而在交易合约实行后,堆栈内的数据会出栈,即生成了第一参数,因此第一参数的值代表了打包时出现的变量值,在将第一参数写入存储槽位后,若第一参数存在于列表中,则表明第一参数与第二参数、第三参数的值相对应,从而表明了栈顶出的前两个元素与第二参数、第三参数相对应,若每次交易合约中,第一参数均存在于列表中,则表明在每次交易合约中,第二参数、第三参数的值均与第一参数相对应,即表明了交易合约内部存储变量的值依赖于交易被打包的顺序,因此就确定存在交易顺序依赖漏洞,从而及时地检测出交易顺序依赖漏洞,在将交易顺序依赖漏洞传输至工作人员修复后,可以降低区块链上的信息被盗取的风险。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例交易顺序依赖漏洞检测方法的流程示意框图;
图2为本申请实施例交易顺序依赖漏洞检测系统的结构示意框图;
图3为本发明实施例电子装置的结构示意框图。
具体实施方式
为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而非全部实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1,本申请实施例提供一种交易顺序依赖漏洞检测方法,包括:S1、获取交易池的当前堆栈信息中消息调用的目标地址及消息调用附带发送的以太信息,并将目标地址及以太信息分别作为第二参数及第三参数;S2、若第二参数及第三参数与匹配字符串的正则表达式相匹配,则从第二参数及第三参数对应的区块链存储槽位中取出参数变量;S3、若在预定的区块链节点的约束条件下,参数变量可以改变,则将参数变量保存在预设的参数列表中;S4、将当前堆栈栈顶的前两个元素出栈作为第一参数,若第一参数写入区块链的存储槽位后,第一参数存在于参数列表中,则确定合约存在交易顺序依赖漏洞。
获取交易池的当前堆栈信息中消息调用的目标地址及消息调用附带发送的以太信息包括:遍历交易池的状态空间,找出所有包含CALL函数或/及DELEGATECALL函数操作码的第一全局状态;在第一全局状态中,获取交易池的当前堆栈信息;提取当前堆栈信息,得到消息调用的目标地址及消息调用附带发送的以太信息。
将当前堆栈栈顶的前两个元素出栈作为第一参数包括:遍历状态空间,找出所有包含SSTORE函数操作码的第二全局状态及相应的节点信息;在第二全局状态中,将当前堆栈栈顶的前两个元素出栈作为第一参数,第一参数作为SSTORE函数操作码的参数。
正则表达式为“storage_[a-z0-9_&^]*[0-9]+”;其中,“a-z”表示匹配小写字母,“0-9”表示匹配数字,“^”表示在首位时开始匹配,“+”表示匹配1次或多次,“a-z0-9”表示匹配任意小写字母或数字,“storage”表示永久存储在区块链中的变量,“[a-z0-9_&^]*[0-9]”表示以任意小写字母或数字开头,随后紧跟任意一个数字的字符串。
在本实施例中,还对交易顺序依赖漏洞检测方法的有效性进行的衡量,交易顺序依赖漏洞检测方法是否可以准确的定位合约中的漏洞是衡量交易顺序依赖漏洞检测方法有效性非常重要的一个指标,本实施例选取了三个包含交易顺序依赖漏洞的合约作为测试样本,并将使用交易顺序依赖漏洞检测方法的测试结果与人工审计合约结果进行比对,判断交易顺序依赖漏洞检测方法是否可以准确命中存在漏洞的函数,同时将测试结果与Oyente中的交易顺序漏洞检测算法进行对比,以此证明本实施例提供的交易顺序依赖漏洞检测方法的优势。
交易顺序依赖漏洞检测方法的有效性衡量依赖于以下两个参数,分别为:
TP:如果算法准确的判断出合约存在交易顺序依赖漏洞,则为1,反之为0;
FN:如果算法无法准确判断出合约存在交易顺序依赖漏洞,则为1,反之为0;
因此,交易顺序依赖漏洞检测方法的有效性可通过公式1计算可得,公式1表示如下:
Figure GDA0002298352120000061
在公式1中,n表示合约测试样本数量。
第一个测试样本:针对EthTxOrderDependenceMinimal进行测试,EthTxOrderDependenceMinimal是一个以太坊交易合约,通过对该合约进行审计,发现产生漏洞的函数为setReward以及claimReward,因为合约拥有者可以通过提高交易的手续费使得其对setReward函数的调用先于用户对claimReward函数的调用,从而导致合约拥有者发起的交易优先被打包进区块,这时如果合约拥有者将reward设置为0,那么用户将一无所获,即存在交易顺序依赖漏洞,使得信息被盗取。
第二个测试样本:针对call进行测试,call合约也是一个以太坊的交易合约,通过对该合约进行审计,发现产生漏洞的函数为calluseraddress以及setstoredaddress,由于stored_address是可以通过调用setstoredaddress函数进行修改的,如果用户在调用calluseraddress函数的同时,不法分子以更高的交易费用调用setstoredaddress函数,那么用户调用的地址不再是原来的stored_address,而是变成了修改后的stored_address,用户最终调用的很可能是一个恶意的合约地址,即存在交易顺序依赖漏洞,使得信息被盗取。
通过对上述两个测试样本的测试,证明本实施例提供的交易顺序依赖漏洞检测方法具有有效性。
请参阅图2,本申请实施例提供一种交易顺序依赖漏洞检测系统,包括:参数获取模块1、参数变量提取模块2、参数变量保存模块3及参数对比模块4;参数获取模块1用于获取交易池的当前堆栈信息中消息调用的目标地址及消息调用附带发送的以太信息,并将目标地址及以太信息分别作为第二参数及第三参数;参数变量提取模块2用于在第二参数及第三参数与匹配字符串的正则表达式相匹配的情况下,从参数获取模块1获取的第二参数及第三参数对应的区块链存储槽位中取出参数变量;参数变量保存模块3用于在预定的区块链节点的约束条件下,参数变量提取模块2取出的参数变量可以改变,则将参数变量保存在预设的参数列表中;参数对比模块4用于在将当前堆栈栈顶的前两个元素出栈作为第一参数后,若第一参数写入区块链的存储槽位后,第一参数存在于参数变量保存模块3的参数列表中,则确定合约存在交易顺序依赖漏洞。
参数获取模块1包括:第一遍历单元、堆栈信息获取单元及堆栈信息提取单元;第一遍历单元用于遍历交易池的状态空间,找出所有包含CALL函数或/及DELEGATECALL函数操作码的第一全局状态;堆栈信息获取单元用于在第一遍历单元获取的第一全局状态中,获取交易池的当前堆栈信息;堆栈信息提取单元用于提取堆栈信息获取单元获取的当前堆栈信息,得到消息调用的目标地址及消息调用附带发送的以太信息。
参数对比模块4包括:第二遍历单元、第一参数获取单元及判断单元;第二遍历单元,用于遍历状态空间,找出所有包含SSTORE函数操作码的第二全局状态及相应的节点信息;第一参数获取单元,用于在第二遍历单元获取的第二全局状态中,将堆栈信息获取单元获取的当前堆栈栈顶的前两个元素出栈作为第一参数,第一参数作为SSTORE函数操作码的参数;判断单元,用于判断第一参数获取单元获取的第一参数写入存储槽位后,是否存在于参数变量保存模块3保存的列表中,若存在,则表明合约存在交易顺序依赖漏洞。
交易顺序依赖漏洞检测系统还包括:正则表达式构建模块,正则表达式构建模块用于构建正则表达式“storage_[a-z0-9_&^]*[0-9]+”,其中,“a-z”表示匹配小写字母,“0-9”表示匹配数字,“^”表示在首位时开始匹配,“+”表示匹配1次或多次,“a-z0-9”表示匹配任意小写字母或数字,“storage”表示永久存储在区块链中的变量,“[a-z0-9_&^]*[0-9]”表示以任意小写字母或数字开头,随后紧跟任意一个数字的字符串。
请参阅3,本申请实施例提供一种电子装置,该电子装置包括:存储器601、处理器602及存储在存储器601上并可在处理器602上运行的计算机程序,处理器602执行该计算机程序时,实现前述中描述的交易顺序依赖漏洞检测方法。
进一步的,该电子装置还包括:至少一个输入设备603以及至少一个输出设备604。
上述存储器601、处理器602、输入设备603以及输出设备604,通过总线605连接。
其中,输入设备603具体可为摄像头、触控面板、物理按键或者鼠标等等。输出设备604具体可为显示屏。
存储器601可以是高速随机存取记忆体(RAM,Random Access Memory)存储器,也可为非不稳定的存储器(non-volatile memory),例如磁盘存储器。存储器601用于存储一组可执行程序代码,处理器602与存储器601耦合。
进一步的,本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质可以是设置于上述各实施例中的电子装置中,该计算机可读存储介质可以是前述中的存储器601。该计算机可读存储介质上存储有计算机程序,该程序被处理器602执行时实现前述中描述的交易顺序依赖漏洞检测方法。
进一步的,该计算机可存储介质还可以是U盘、移动硬盘、只读存储器601(ROM,Read-Only Memory)、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上为对本发明所提供的一种交易顺序依赖漏洞检测方法、系统、电子装置及存储介质的描述,对于本领域的技术人员,依据本发明实施例的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本发明的限制。

Claims (6)

1.一种交易顺序依赖漏洞检测方法,其特征在于,包括:
获取交易池的当前堆栈信息中消息调用的目标地址及消息调用附带发送的以太信息,并将所述目标地址及所述以太信息分别作为第二参数及第三参数;
若所述第二参数及所述第三参数与匹配字符串的正则表达式相匹配,则从所述第二参数及所述第三参数对应的区块链存储槽位中取出参数变量;
若在预定的区块链节点的约束条件下,所述参数变量可以改变,则将所述参数变量保存在预设的参数列表中;
将所述当前堆栈栈顶的前两个元素出栈作为第一参数,若所述第一参数写入区块链的存储槽位后,所述第一参数存在于所述参数列表中,则确定合约存在交易顺序依赖漏洞;
其中,所述获取交易池的当前堆栈信息中消息调用的目标地址及消息调用附带发送的以太信息包括:
遍历交易池的状态空间,找出所有包含CALL函数或/及DELEGATECALL函数操作码的第一全局状态;
在所述第一全局状态中,获取交易池的当前堆栈信息;
提取所述当前堆栈信息,得到消息调用的目标地址及消息调用附带发送的以太信息;
所述将所述当前堆栈栈顶的前两个元素出栈作为第一参数包括:
遍历状态空间,找出所有包含SSTORE函数操作码的第二全局状态及相应的节点信息;
在所述第二全局状态中,将所述当前堆栈栈顶的前两个元素出栈作为第一参数,所述第一参数作为SSTORE函数操作码的参数。
2.根据权利要求1所述的交易顺序依赖漏洞检测方法,其特征在于,
所述正则表达式为“storage_[a-z0-9_&^]*[0-9]+”;
其中,“a-z”表示匹配小写字母,“0-9”表示匹配数字,“^”表示在首位时开始匹配,“+”表示匹配1次或多次,“a-z0-9”表示匹配任意小写字母或数字,“storage”表示永久存储在区块链中的变量,“[a-z0-9_&^]*[0-9]”表示以任意小写字母或数字开头,随后紧跟任意一个数字的字符串。
3.一种交易顺序依赖漏洞检测系统,其特征在于,包括:
参数获取模块,用于获取交易池的当前堆栈信息中消息调用的目标地址及消息调用附带发送的以太信息,并将所述目标地址及所述以太信息分别作为第二参数及第三参数;
参数变量提取模块,用于在所述第二参数及所述第三参数与匹配字符串的正则表达式相匹配的情况下,从所述参数获取模块获取的第二参数及所述第三参数对应的区块链存储槽位中取出参数变量;
参数变量保存模块,用于在预定的区块链节点的约束条件下,所述参数变量提取模块取
出的参数变量可以改变,则将所述参数变量保存在预设的参数列表中;
参数对比模块,用于在将所述当前堆栈栈顶的前两个元素出栈作为第一参数后,若所述第一参数写入区块链的存储槽位后,所述第一参数存在于所述参数变量保存模块的参数列表中,则确定合约存在交易顺序依赖漏洞;
其中,所述参数获取模块包括:
第一遍历单元,用于遍历交易池的状态空间,找出所有包含CALL函数或/及
DELEGATECALL函数操作码的第一全局状态;
堆栈信息获取单元,用于在所述第一遍历单元获取的第一全局状态中,获取交易池的当前堆栈信息;
堆栈信息提取单元,用于提取所述堆栈信息获取单元获取的当前堆栈信息,得到消息调用的目标地址及消息调用附带发送的以太信息;
所述参数对比模块包括:
第二遍历单元,用于遍历状态空间,找出所有包含SSTORE函数操作码的第二全局状态及相应的节点信息;
第一参数获取单元,用于在所述第二遍历单元获取的第二全局状态中,将所述堆栈信息获取单元获取的当前堆栈栈顶的前两个元素出栈作为第一参数,所述第一参数作为SSTORE函数操作码的参数;
判断单元,用于判断所述第一参数获取单元获取的第一参数写入存储槽位后,是否存在于所述参数变量保存模块保存的列表中,若存在,则表明合约存在交易顺序依赖漏洞。
4.根据权利要求3所述的交易顺序依赖漏洞检测系统,其特征在于,
所述系统还包括:正则表达式构建模块,用于构建正则表达式“storage_[a-z0-9_&^]*[0-9]+”,其中,“a-z”表示匹配小写字母,“0-9”表示匹配数字,“^”表示在首位时开始匹配,
“+”表示匹配1次或多次,“a-z0-9”表示匹配任意小写字母或数字,“storage”表示永久存储在区块链中的变量,“[a-z0-9_&^]*[0-9]”表示以任意小写字母或数字开头,随后紧跟任意一个数字的字符串。
5.一种电子装置,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时,实现权利要求1至2中的任意一项所述方法。
6.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,实现权利要求1至2中的任意一项所述方法。
CN201910567667.2A 2019-06-27 2019-06-27 交易顺序依赖漏洞检测方法、系统、电子装置及存储介质 Active CN110766402B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910567667.2A CN110766402B (zh) 2019-06-27 2019-06-27 交易顺序依赖漏洞检测方法、系统、电子装置及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910567667.2A CN110766402B (zh) 2019-06-27 2019-06-27 交易顺序依赖漏洞检测方法、系统、电子装置及存储介质

Publications (2)

Publication Number Publication Date
CN110766402A CN110766402A (zh) 2020-02-07
CN110766402B true CN110766402B (zh) 2021-09-03

Family

ID=69329008

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910567667.2A Active CN110766402B (zh) 2019-06-27 2019-06-27 交易顺序依赖漏洞检测方法、系统、电子装置及存储介质

Country Status (1)

Country Link
CN (1) CN110766402B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112306496A (zh) * 2020-10-30 2021-02-02 深圳前海微众银行股份有限公司 区块链运行信息分析方法、装置、设备及计算机存储介质
CN112669156A (zh) * 2020-12-31 2021-04-16 北京知帆科技有限公司 一种区块链待确认交易确定方法、装置及电子设备
CN112348681B (zh) * 2021-01-11 2021-05-11 北京知帆科技有限公司 一种区块链交易手续费确定方法、装置及电子设备
CN114612102A (zh) * 2022-03-17 2022-06-10 中山大学 一种恶意节点检测方法、装置、设备和存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107329888A (zh) * 2017-05-31 2017-11-07 深圳前海微众银行股份有限公司 智能合约操作码覆盖率计算方法和系统
CN108985073A (zh) * 2018-07-18 2018-12-11 成都链安科技有限公司 一种高度自动化的智能合约形式化验证系统及方法
CN109446814A (zh) * 2018-09-30 2019-03-08 北京金山安全软件有限公司 一种漏洞检测方法及装置
CN109460663A (zh) * 2018-11-12 2019-03-12 北京知道创宇信息技术有限公司 一种智能合约审计方法、装置及其存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6503084B2 (ja) * 2015-10-09 2019-04-17 日本電信電話株式会社 脆弱性発見装置、脆弱性発見方法、および、脆弱性発見プログラム

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107329888A (zh) * 2017-05-31 2017-11-07 深圳前海微众银行股份有限公司 智能合约操作码覆盖率计算方法和系统
CN108985073A (zh) * 2018-07-18 2018-12-11 成都链安科技有限公司 一种高度自动化的智能合约形式化验证系统及方法
CN109446814A (zh) * 2018-09-30 2019-03-08 北京金山安全软件有限公司 一种漏洞检测方法及装置
CN109460663A (zh) * 2018-11-12 2019-03-12 北京知道创宇信息技术有限公司 一种智能合约审计方法、装置及其存储介质

Also Published As

Publication number Publication date
CN110766402A (zh) 2020-02-07

Similar Documents

Publication Publication Date Title
CN110766402B (zh) 交易顺序依赖漏洞检测方法、系统、电子装置及存储介质
CN108763928B (zh) 一种开源软件漏洞分析方法、装置和存储介质
Liao et al. Soliaudit: Smart contract vulnerability assessment based on machine learning and fuzz testing
CN104123493B (zh) 应用程序的安全性检测方法和装置
CN110474900B (zh) 一种游戏协议测试方法及装置
US8931092B2 (en) System and method for computer inspection of information objects for shared malware components
RU2722692C1 (ru) Способ и система выявления вредоносных файлов в неизолированной среде
CN111414374B (zh) 一种区块链交易并发处理方法、装置及设备
CN114598504B (zh) 一种风险评估方法、装置、电子设备及可读存储介质
CN111949803A (zh) 一种基于知识图谱的网络异常用户检测方法、装置和设备
CN106789837B (zh) 网络异常行为检测方法及检测装置
CN110414277B (zh) 基于多特征参数的门级硬件木马检测方法
JP2009093615A (ja) 仮想環境を利用した非実行ファイル内のエクスプロイトコード分析方法及び装置
JP6777612B2 (ja) コンピュータシステムにおけるデータ損失を防止するためのシステム及び方法
CN105653949B (zh) 一种恶意程序检测方法及装置
CN107491691A (zh) 一种基于机器学习的远程取证工具安全分析系统
CN116610326A (zh) 区块链智能合约的安全性检测方法、设备及存储介质
CN114579965A (zh) 一种恶意代码的检测方法、装置及计算机可读存储介质
CN113886832A (zh) 智能合约漏洞检测方法、系统、计算机设备和存储介质
CN114297665A (zh) 基于深度学习的智能合约漏洞检测方法和装置
CN111898126B (zh) 一种基于动态获取用户界面的Android重打包应用检测方法
CN114676231A (zh) 一种目标信息检测方法、设备和介质
CN112181479A (zh) 代码文件版本间差异的确定方法、装置及电子设备
CN117216765A (zh) 一种漏洞可达性检测方法、装置、设备及可读存储介质
CN107402883B (zh) 一种数据测试处理方法和装置

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
CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: 1107-1108, Tower B, Hongrongyuan North Station Center, North Station Community, Minzhi Street, Longhua District, Shenzhen City, Guangdong Province, 518000

Patentee after: SHENZHEN RUNPENG HUATONG CREATIVE TECHNOLOGY CO.,LTD.

Country or region after: China

Address before: 518000 803, venture capital building, No. 9, Tengfei Road, Longcheng street, Longgang District, Shenzhen, Guangdong Province

Patentee before: SHENZHEN RUNPENG HUATONG CREATIVE TECHNOLOGY CO.,LTD.

Country or region before: China