全网唯一标准王
(19)国家知识产权局 (12)发明 专利申请 (10)申请公布号 (43)申请公布日 (21)申请 号 202211244063.2 (22)申请日 2022.10.12 (71)申请人 鹏城实验室 地址 518000 广东省深圳市南 山区兴科一 街2号 (72)发明人 冯禹铭 张伟哲 邱志豪 张宇  刘鹏辉  (74)专利代理 机构 深圳市世纪恒程知识产权代 理事务所 4 4287 专利代理师 罗秋莲 (51)Int.Cl. G06F 21/57(2013.01) G06F 11/07(2006.01) G06F 8/41(2018.01) G06Q 40/04(2012.01) (54)发明名称 智能合约漏洞修复方法、 设备以及 介质 (57)摘要 本申请公开了一种智能合约漏洞修复方法、 设备以及介质, 涉及智能合约领域。 方法包括: 获 取以太坊虚拟机运行智能合约时的运行数据, 运 行数据包括区块信息、 交易信息和指令信息; 根 据运行数据, 检测出智 能合约的漏洞, 并确定漏 洞对应的指令执行序列; 根据运行数据, 从智能 合约的控制流图中确定出指令执行序列所在的 目标基本块, 并获得漏洞的上下文逻辑关联信 息; 根据漏洞的类型、 字节码级关联信息和预设 补丁模板, 生成目标补丁; 根据目标补丁和执行 顺序信息, 对智 能合约的原程序代码进行修复, 得到漏洞修复后的智能合约。 本申请在修复后不 改变智能合约的运行逻辑, 进而实现智能合约的 自动修复。 权利要求书2页 说明书13页 附图5页 CN 115310100 A 2022.11.08 CN 115310100 A 1.一种智能合约漏洞修复方法, 其特 征在于, 所述方法包括: 获取以太坊虚拟机运行智能合约 时的运行数据, 所述运行数据包括区块信息、 交易信 息和指令信息; 根据所述运行数据, 检测出所述智能合约的漏洞, 并确定所述漏洞对应的指令执行序 列; 根据所述运行数据, 从所述智能合约的控制流图中确定出所述指令执行序列 所在的目 标基本块, 并获得所述漏洞的上下文逻辑关联信息, 所述上下文逻辑关联信息包括所述 目 标基本块在所述控制流图中的执 行顺序信息以及所述指令执 行序列的字节码级关联信息; 根据所述漏洞的类型、 所述字节码级关联信息和预设补丁模板, 生成目标补丁; 根据所述目标补丁和所述执行顺序信息, 对所述智能合约的原程序代码进行修复, 得 到漏洞修复后的智能合约。 2.根据权利要求1所述的智能合约漏洞修复方法, 其特征在于, 所述根据 所述目标补丁 和所述执行顺序信息, 对所述智能合约的原程序代码进行修复, 得到漏洞修复后的智能合 约, 包括: 从所述原程序代码中确定出 所述目标基本块对应的目标代码段; 在所述原程序代码的末尾处创建所述目标代码段的复制副本; 根据所述目标补丁对所述复制副本进行 更改, 得到修复后代码段; 利用第一预设跳转指令替换所述目标代码段中的入口指令, 所述第 一预设跳转指令指 向所述修复后代码段的入口指令; 利用预设无效指令替换 所述目标代码段中除所述入口指令之外的剩余指令; 根据所述执行顺序信息, 将所述修复后代码段与目标基本块的后续基本块相关联, 得 到漏洞修复后的智能合约。 3.根据权利要求2所述的智能合约漏洞修复方法, 其特征在于, 所述根据 所述执行顺序 信息, 将所述修复后代码段与目标基本块的后续基本块相关联, 得到漏洞修复后的智能合 约, 包括: 根据所述执 行顺序信息, 判断所述目标基本块是否存在待跳转的所述后续基本块; 若存在, 则在所述修复后代码段后新增第二预设跳转指令, 得到漏洞修复后的智能合 约; 其中, 所述第二预设跳转代码指向所述后续基本块中的入口指令 。 4.根据权利要求3所述的智能合约漏洞修复方法, 其特征在于, 所述判断所述目标基本 块是否存在待跳转的所述后续基本块之后, 所述方法还 包括: 若不存在, 则根据所述执行顺序信息, 判断所述目标基本块的下一基本块的入口指令 是否为预设跳转 地址指令; 若所述目标基本块的下一基本块的入口指令为所述预设跳转地址指令, 则在所述修复 后代码段后新增第二预设跳转指 令, 得到漏洞修复后的智能合约; 其中, 所述第二预设跳转 代码指向所述预设跳转 地址指令; 若所述目标基本块的下一基本块的入口指令不为所述预设跳转地址指令, 则在所述修 复后代码段之后新增所述下一基本块的复制代码段, 得到漏洞修复后的智能合约。 5.根据权利要求1所述的智能合约漏洞修复方法, 其特征在于, 所述根据 所述漏洞的类 型、 所述字节码级关联信息和预设补丁模板, 生成目标补丁, 包括:权 利 要 求 书 1/2 页 2 CN 115310100 A 2若所述漏洞的类型为重入漏洞, 则根据所述字节码级关联信息, 确定所述预设补丁模 板中第一修复操作的类型为第一新增操作、 所述第一新增操作对应的位置为CA LL指令的上 一指令以及所述第一 新增操作对应指令为状态变量更新指令序列; 根据所述字节码级关联信 息, 确定所述预设补丁模板 中第二修复操作的类型为删除操 作、 所述删除操作对应的位置为CA LL指令的下一指 令以及所述删除操作对应指 令为所述状 态变量更新指令序列, 以生成所述目标补丁。 6.根据权利要求5所述的智能合约漏洞修复方法, 其特征在于, 所述获得所述漏洞的上 下文逻辑关联信息, 包括: 确定所述目标基本块在所述控制流图中的执 行顺序信息; 根据所述 运行数据, 对数据的存 储过程进行模拟, 获得任一所述数据关联的两个指令; 根据所有所述数据关联的两个指令, 确定指令间的依赖关系, 以得到所述指令执行序 列的字节码级关联信息 。 7.根据权利要求1所述的智能合约漏洞修复方法, 其特征在于, 所述根据 所述漏洞的类 型、 所述字节码级关联信息和预设补丁模板, 生成目标补丁, 包括: 若所述漏洞的类型为整数溢出漏洞, 则根据所述字节码级关联信息, 确定所述预设补 丁模板中修复操作为第二新增操作, 所述第二新增操作对应的位置为运算指令的上一指令 以及所述第二 新增操作对应指令为预设判断指令和修复序列, 以生成所述目标补丁。 8.根据权利要求7所述的智能合约漏洞修复方法, 其特征在于, 所述获得所述漏洞的上 下文逻辑关联信息, 包括: 若监测到所述 运行数据中包括PUSH和AND 指令, 则确定整数类型为无符号整数; 若监测到所述 运行数据中包括SIGNEXTEND 指令, 则确定所述整数类型为有符号整数。 9.一种智能合约漏洞修复设备, 其特征在于, 包括: 处理器, 存储器以及存储在所述存 储器中的智能合约漏洞修复程序, 所述智能合约漏洞修复程序被所述处理器运行时实现如 权利要求1 ‑8中任一项所述智能合约漏洞修复方法的步骤。 10.一种计算机可读存储介质, 其特征在于, 所述计算机可读存储介质上存储有智能合 约漏洞修复程序, 所述数据缓存程序被处理器执行时实现如权利要求 1至8任一项 所述的智 能合约漏洞修复方法。权 利 要 求 书 2/2 页 3 CN 115310100 A 3

.PDF文档 专利 智能合约漏洞修复方法、设备以及介质

文档预览
中文文档 21 页 50 下载 1000 浏览 0 评论 309 收藏 3.0分
温馨提示:本文档共21页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
专利 智能合约漏洞修复方法、设备以及介质 第 1 页 专利 智能合约漏洞修复方法、设备以及介质 第 2 页 专利 智能合约漏洞修复方法、设备以及介质 第 3 页
下载文档到电脑,方便使用
本文档由 人生无常 于 2024-03-17 23:43:44上传分享
友情链接
站内资源均来自网友分享或网络收集整理,若无意中侵犯到您的权利,敬请联系我们微信(点击查看客服),我们将及时删除相关资源。