团体标准网
(19)中华 人民共和国 国家知识产权局 (12)发明 专利申请 (10)申请公布号 (43)申请公布日 (21)申请 号 202111669478.X (22)申请日 2021.12.31 (71)申请人 北京工业大 学 地址 100124 北京市朝阳区平乐园10 0号 (72)发明人 何泾沙 王雅静 朱娜斐 何琳  张晴晴  (74)专利代理 机构 北京汇信合知识产权代理有 限公司 1 1335 代理人 孙民兴 (51)Int.Cl. G06F 21/56(2013.01) G06F 21/57(2013.01) G06F 40/253(2020.01) G06F 40/30(2020.01) G06K 9/62(2022.01)G06N 3/04(2006.01) G06N 3/08(2006.01) (54)发明名称 一种源代码层级的智能合约漏洞检测方法 及系统 (57)摘要 本发明公开了一种源代码层级的智能合约 漏洞检测方法及系统, 方法包括: 获取智能合约 样本数据并进行预处理, 检测和分析是否存在漏 洞以及漏洞类型, 并进行多标签标记, 作为样本 集合; 针对样本集合生成抽象语法树, 生成词法 单元序列文本并进行向量化, 经打包填充形成样 本数据集; 结合注意力机制, 构建基于深度神经 网络的漏洞检测模型; 针对每种漏洞类型持续训 练及优化对应的二元分类器, 选取分类效果最好 的作为多标签 分类器; 将需要检测的智能合约源 代码的向量化数据输入多 标签分类器, 得到漏洞 检测结果。 通过本发明的技术方案, 提高了漏洞 检测的准确率和 效率, 降低了漏报率和误报率, 以尽早发现漏洞并及时采取补救措施。 权利要求书2页 说明书8页 附图2页 CN 114297654 A 2022.04.08 CN 114297654 A 1.一种源代码层级的智能合约漏洞检测方法, 其特 征在于, 包括: 通过爬虫 方式获取智能合约样本数据, 并对所述智能合约样本数据进行 预处理; 检测和分析预处理后的所述智能合约样本数据中是否存在漏洞以及漏洞类型, 并进行 多标签标记, 作为样本集 合; 针对所述样本集合进行词法分析和语法分析生成抽象语法树, 并对所述抽象语法树进 行深度优先遍历生成词法单 元序列文本; 采用词嵌入模型对所述词法单元序列文本进行向量化, 并对向量化数据打包填充, 形 成样本数据集; 结合注意力机制, 构建基于深度神经网络的漏洞检测模型; 针对每种漏洞类型在所述漏洞检测模型中持续训练及优化对应的二元分类器, 选取分 类效果最好的漏洞检测模型作为多标签分类 器; 将需要进行漏洞检测的智能合约源代码进行上述预处理和向量化操作, 并将向量化数 据输入所述多标签分类 器, 输出得到所述智能合约源代码的漏洞检测结果。 2.根据权利要求1所述的源代码层级的智能合约漏洞检测方法, 其特征在于, 若获取到 的所述智能合约 样本数据为字节码形式, 则通过反汇编和反编译的逆向分析操作将字节码 形式的数据还原为源代码, 若获取到的所述智能合约样本数据为源代码形式, 则无需进行 逆向分析操作。 3.根据权利要求1所述的源代码层级的智能合约漏洞检测方法, 其特征在于, 所述检测 和分析预处理后的所述智能合约样本数据中是否存在漏洞以及漏洞类型的具体过程包括: 基于预设的漏洞库, 采用多种检测和分析方式判断预处理后的所述智能合约样本数据 中是否存在所述漏洞库中的漏洞, 生成是否存在漏洞的标签, 并对存在漏洞的样本数据细 化得到漏洞类型; 将不同方式得到的样本数据的检测和分析结果进行汇总, 针对同一样本数据的所有检 测结果中是否存在同一种 漏洞类型的标签的比例达到预设比例时, 以该标签作为当前样本 数据是否存在该种类型漏洞的标签。 4.根据权利要求1所述的源代码层级的智能合约漏洞检测方法, 其特征在于, 所述针对 所述样本集 合进行词法分析和语法分析生成抽象语法树的具体过程包括: 利用语法解析工具, 根据自定义的文法规则生成词法分析器和语法分析器; 利用所述词法分析器将所述样本集 合中的智能合约源代码转 化为对应的To ken流; 利用所述语法分析器分析 所述Token流中语法单 元的关系, 生成所述抽象语法树。 5.根据权利要求1所述的源代码层级的智能合约漏洞检测方法, 其特征在于, 所述采用 词嵌入模型对所述词法单元序列文本进行向量化, 并对向量化数据打包填充, 形成样本数 据集的具体过程包括: 采用Word2vec算法的CBOW模型作为词嵌入模型, 获取所述词法单元序列文本的词向量 特征文本, 将每 个特征文本转换为词向量; 采用打包填充方式对所述词向量进行统一长度处理, 以完整保留特征数据, 形成样本 数据集。 6.根据权利要求1或5所述的源代码层级的智能合约漏洞检测方法, 其特征在于, 还包 括:权 利 要 求 书 1/2 页 2 CN 114297654 A 2针对打包填充得到的所述样本数据 集, 采用SMOTETomek方式对存在漏洞的合约和不存 在漏洞的合约进行组合采样, 并利用组合采样后的样本数据对所述漏洞检测模型进行训 练。 7.根据权利要求6所述的源代码层级的智能合约漏洞检测方法, 其特征在于, 所述漏洞 检测模型的神经网络结构包括循环神经网络、 长短期记忆网络、 双向长 短期记忆网络、 门控 循环单元、 双向门控循环单 元以及Wide&Deep。 8.根据权利要求6所述的源代码层级的智能合约漏洞检测方法, 其特征在于, 所述针对 每种漏洞类型在所述漏洞检测模型中持续训练及优化对应的二元分类 器的具体过程包括: 在所述样本数据集中随机选取80%的样本数据作为训练数据集, 剩余20%的样本数据 作为测试 数据集; 利用所述训练数据集以及相应样本数据标记的标签, 对所述漏洞检测模型中针对每种 漏洞类型的二元分类 器进行训练; 利用所述测试数据集对二元分类器组合形成的漏洞检测模型进行评估, 根据评估结果 反馈调整与优化所述漏洞检测模型的参数。 9.根据权利要求8所述的源代码层级的智能合约漏洞检测方法, 其特征在于, 根据多标 签分类器的输出结果, 确定需要检测的智能合约源代码中是否存在漏洞以及具体的漏洞类 型; 基于注意力机制, 确定该智能合约源代码中漏洞存在的位置 。 10.一种源代码层级的智能合约漏洞检测系统, 应用如权利要求1至9中任一项所述的 源代码层级的智能合约漏洞检测方法, 其特 征在于, 包括: 样本数据获取模块, 用于通过爬虫方式获取智能合约样本数据, 并对所述智能合约样 本数据进行 预处理; 样本集合标记模块, 用于检测和分析预处理后的所述智能合约样本数据中是否存在漏 洞以及漏洞类型, 并进行多标签标记, 作为样本集 合; 代码中间表示模块, 用于针对所述样本集合进行词法分析和语法分析生成抽象语法 树, 并对所述抽象语法树进行深度优先遍历生成词法单 元序列文本; 样本数据向量化模块, 用于采用词嵌入模型对所述词法单元序列文本进行向量化, 并 对向量化数据打包填充, 形成样本数据集; 检测模型构建模块, 用于结合注意力机制, 构建基于深度神经网络的漏洞检测模型; 模型训练优化模块, 用于针对每种漏洞类型在所述漏洞检测模型中持续训练及优化对 应的二元分类 器, 选取分类效果 最好的漏洞检测模型作为多标签分类 器; 代码漏洞检测模块, 用于将需要进行漏洞检测的智能合约源代码进行上述预处理和向 量化操作, 并将向量化数据输入所述多标签分类器, 输出得到所述智能合约源代码的漏洞 检测结果。权 利 要 求 书 2/2 页 3 CN 114297654 A 3

.PDF文档 专利 一种源代码层级的智能合约漏洞检测方法及系统

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