一种智能合约污点追踪方法及装置制造方法及图纸

技术编号:25835305 阅读:30 留言:0更新日期:2020-10-02 14:16
本发明专利技术实施例提供了一种智能合约污点数据追踪方法及装置,该智能合约被编译为字节码部署在区块链上,该方法通过所述区块链的节点中部署的虚拟机执行,该方法包括,响应于调用智能合约的交易,执行所述字节码,其中,执行字节码的过程包括:通过执行用于引入外部输入数据的第一虚拟机指令,获取外部输入数据,并生成外部输入数据对应的污点标识;将外部输入数据,及其对应的污点标识存入第一存储空间,其中第一存储空间具有存储污点标识的存储区域;在执行用于传递数据的第二虚拟机指令时,在确定待传递数据为外部输入数据的情况下,在第一存储空间中传递所述外部输入数据及其对应的污点标识。

【技术实现步骤摘要】
一种智能合约污点追踪方法及装置
本说明书一个或多个实施例涉及区块链领域,尤其涉及一种智能合约污点追踪方法及装置。
技术介绍
智能合约(smartcontract),一种基于区块链技术的分布式程序,允许在没有第三方的情况下完成程序实现的决策,存储资料等功能,智能合约的执行结果可追踪且不可逆转。执行智能合约的虚拟机,是一种在区块链上使用的栈式虚拟机。现有技术中,在虚拟机对智能合约的执行中,通过模糊测试来分析数据流中的虚拟机指令执行依赖关系,从而判断合约执行中存在的风险性因素,但是在实际的合约检测场景中,上述方法存在较高的误报和漏报率。因此,需要一种新的跟踪指令执行数据流的方法。
技术实现思路
本说明书一个或多个实施例描述了一种智能合约污点数据追踪方法及装置,对外部输入数据附着污点标识,在将外部输入数据放入存储空间时,亦将污点标识放入存储空间;然后,在存储空间中传递外部输入数据时,也传递其对应的污点标识。通过该方法,可以通过污点标识,准确的追踪智能合约执行中的污点数据。根据第一方面,提供了一种智能合本文档来自技高网...

【技术保护点】
1.一种智能合约污点数据追踪方法,所述智能合约被编译为字节码部署在区块链上,所述方法通过所述区块链的节点中部署的虚拟机执行,该方法包括,响应于调用智能合约的交易,执行所述字节码,其中,执行所述字节码的过程包括:/n通过执行用于引入外部输入数据的第一虚拟机指令,获取外部输入数据,并生成所述外部输入数据对应的污点标识;/n将所述外部输入数据,及其对应的污点标识存入第一存储空间,其中所述第一存储空间具有存储所述污点标识的存储区域;/n在执行用于传递数据的第二虚拟机指令时,在确定待传递数据为外部输入数据的情况下,在所述第一存储空间中传递所述外部输入数据及其对应的污点标识。/n

【技术特征摘要】
1.一种智能合约污点数据追踪方法,所述智能合约被编译为字节码部署在区块链上,所述方法通过所述区块链的节点中部署的虚拟机执行,该方法包括,响应于调用智能合约的交易,执行所述字节码,其中,执行所述字节码的过程包括:
通过执行用于引入外部输入数据的第一虚拟机指令,获取外部输入数据,并生成所述外部输入数据对应的污点标识;
将所述外部输入数据,及其对应的污点标识存入第一存储空间,其中所述第一存储空间具有存储所述污点标识的存储区域;
在执行用于传递数据的第二虚拟机指令时,在确定待传递数据为外部输入数据的情况下,在所述第一存储空间中传递所述外部输入数据及其对应的污点标识。


2.根据权利要求1所述的方法,还包括:
执行用于调用所述第一存储空间中的存储数据的第三虚拟机指令;
根据被调用数据是否具有对应的污点标识,确定是否进行漏洞报告。


3.根据权利要求2所述的方法,其中,所述第三虚拟机指令包括CALL指令、JUMP指令。


4.根据权利要求1所述的方法,其中,所述外部输入数据包括:通过所述交易传入的用户输入数据。


5.根据权利要求1所述的方法,其中,所述外部输入数据包括,记账节点打包交易时生成的外部变量,所述外部变量包括以下中的一个或多个:时间戳、区块哈希值、区块号、难度值。


6.根据权利要求1所述的方法,其中,所述第一虚拟机指令,包括CALLDATALOAD指令、BLOCKHASH指令、TIMESTAMP指令、NUMBER指令、DIFFICULTY指令。


7.根据权利要求1所述的方法,其中,所述第一存储空间包括操作栈空间,所述操作栈空间在原有栈之外还包括污点栈;所述污点栈用于保存外部输入数据对应的污点标识。


8.根据权利要求7所述的方法,其中,所述将外部输入数据,及其对应的污点标识存入第一存储空间,包括,
将外部输入数据存入所述原有栈,将其对应的污点标识存入所述污点栈;
所述在第一存储空间中传递外部输入数据及其对应的污点标识,包括:
在所述原有栈中,对所述外部输入数据进行移出/复制/交换操作;并且在污点栈中,对所述外部输入数据对应的污点标识进行移出/复制/交换操作。


9.根据权利要求1所述的方法,其中,所述第一存储空间包括操作栈空间,所述操作栈空间包括若干操作栈,所述若干操作栈中设置有污点结构区,所述污点结构区用于保存外部输入数据对应的污点标识。


10.根据权利要求1所述的方法,其中,所述第一存储空间包括非持久化存储空间,所述非持久化存储空间包括数据区和污点区;所述污点区用于保存外部输入数据在所述数据区中的存储地址,以及该外部输入数据对应的污点数据。


11.根据权利要求10所述的方法,其中,所述污点区包含链表,所述链表用于保存外部输入数据在所述数据区中的起始存储地址和结尾存储地址,以及该外部输入数据对应的污点标识;
所述将外部输入数据,及其对应的污点标识存入第一存储空间,包括,
将外部输入数据存入所述数据区,并将外部输入数据...

【专利技术属性】
技术研发人员:刘地军程岩张中文
申请(专利权)人:支付宝杭州信息技术有限公司
类型:发明
国别省市:浙江;33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1