买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】一种智能合约权限管理漏洞检测方法及装置_北京大学_202210150834.5 

申请/专利权人:北京大学

申请日:2022-02-18

公开(公告)日:2024-04-16

公开(公告)号:CN114510723B

主分类号:G06F21/57

分类号:G06F21/57;G06F11/36

优先权:

专利状态码:有效-授权

法律状态:2024.04.16#授权;2022.06.03#实质审查的生效;2022.05.17#公开

摘要:本发明公开了一种智能合约权限管理漏洞检测方法及装置,属于区块链安全技术领域。本发明分为两个阶段,第一阶段是将智能合约solidity源码编译成操作码指令序列,在操作码指令序列中找到表示构造函数结束的指令,在构造函数结束指令之前的指令中找到与关键权限变量“owner”初始化相关的指令,并确定“owner”初始化时的存储位置;第二阶段是通过符号执行的方法,遍历构造函数之外所有可能修改“owner”存储位置所存储的值的路径,进行约束求解,得到智能合约权限管理漏洞。本发明可以检测出智能合约中定义的特殊权限变量“owner”的值是否可以被修改,并增加特定约束条件来提高检测准确率。

主权项:1.一种智能合约权限管理漏洞的检测方法,其特征在于,分为两个阶段,第一阶段是将智能合约solidity源码编译成操作码指令序列,在操作码指令序列中找到表示构造函数结束的指令,在构造函数结束指令之前的指令中找到与关键权限变量“owner”初始化相关的指令,并确定“owner”初始化时的存储位置;第二阶段是通过符号执行的方法,遍历构造函数之外所有可能修改“owner”存储位置所存储的值的路径,进行约束求解,得到智能合约权限管理漏洞,其中:第一阶段具体步骤包括:步骤1.根据智能合约的操作码指令序列,确定构造函数分界点,即确定构造函数内指令和构造函数外指令;具体为,以CODECOPY所在的位置为分界点,根据合约编译后的操作码指令序列,从中找到CODECOPY操作码所在位置的序号,小于该序号的指令为构造函数内指令,大于该序号的指令为构造函数外指令;步骤2.对构造函数内指令初始化的变量进行筛查,确定“owner”变量,并确定其初始化时的存储位置,具体为,在构造函数内指令中对“owner”变量赋值为msg.sender,msg.sender由CALLER操作码压入EVM栈中,赋值操作由SSTORE操作码完成,在指令集中寻找小于分界点序号的CALLER操作码,CALLER操作码会将msg.sender的值放入栈中,对栈中该数据进行跟踪,在指令集中寻找序号小于分界点序号的SSTORE操作码,SSTORE操作会从栈中获取key和value,如果value为msg.sender,key就是“owner”在storage中的存储位置;第二阶段具体步骤包括:步骤3.对构造函数外指令的写操作指令进行判断,根据“owner”变量的存储位置,判断写操作的存储位置是否是该位置;步骤4.判断写操作这笔交易是否为任意地址可以调用;步骤5.对满足上述条件的路径进行约束求解,有解则报告该漏洞。

全文数据:

权利要求:

百度查询: 北京大学 一种智能合约权限管理漏洞检测方法及装置

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。