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

基于多模态学习的少样本智能合约漏洞检测方法 

买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!

申请/专利权人:广西师范大学

摘要:本发明公开了一种基于多模态学习的少样本智能合约漏洞检测方法,包括如下步骤:1)处理智能合约的源代码;2)处理智能合约的字节码;3)处理智能合约的操作码序列数据;这种方法能全面评估智能合约中潜在的漏洞,语言、序列和结构信息的融合综合兼顾智能合约的语义信息和语句的执行顺序、数据流或控制流能提高检测的精度和效率。

主权项:1.一种基于多模态学习的少样本智能合约漏洞检测方法,其特征在于,包括如下步骤:1处理智能合约的源代码:采用图卷积网络GCN模型处理基于智能合约源代码构建代码图CG,包括:1-1构建代码图CG:针对函数中不同的程序元素,定义三种类型的结点:核心节点corenodes、普通节点normalnodes和回退节点fallbacknodes,核心节点corenodes表示对于检测特定漏洞至关重要的关键调用和变量,对于重入漏洞,核心节点corenodes包括:金钱转账函数的调用或者内置call.value函数的调用;对应用户账户余额的变量;会直接影响用户余额的变量;普通节点normalnodes被用于建模在检测漏洞时扮演辅助角色的调用和变量,即没有作为核心节点corenodes提取的调用和变量被建模为普通节点normalnodes;回退节点fallbacknodes表示fallback函数并能与被测试函数交互,定义三类边:控制流边:控制流边捕获代码的语义控制;数据流边:数据流边跟踪变量的使用情况;fallback边:表示fallback函数的使用过程;1-2对代码图CG实施交互增强进行数据增强:基于步骤1-1构建的代码图CG,首先确定需要增强交互性的目标过程节点并预定义需要的元路径,不同的元路径代表不同的语义信息,核心节点C指向核心节点C的元路径描述“核心节点之间的调用关系”这一语义;核心节点C指向普通节点N再指向核心节点C的元路径描述“核心节点与普通节点之间的调用关系”;核心节点C指向回退节点F的元路径描述“核心节点与回退节点之间的调用关系”这一语义,从目标过程节点开始,根据预定义的3种类型的元路径,在控制流图中进行随机游走,选择下一个节点进行访问,在随机游走的过程中,记录访问到的节点序列作为交互邻域,随后将交互邻域转换为交互图,根据交互图中的交互关系,构建新的代码图CG’;1-3特征提取:采用图卷积网络从代码图CG’中提取函数之间的特征,对于具有n个节点的代码图CG’,将图特征矩阵表示为Z0∈Rn×c0,其中c0是节点特征的维度,采用多层叠加的图卷积层如下: 其中,f是激活函数,~A是带自环的邻接矩阵,~D是对应的度矩阵,Zt∈Rn×ct是第t个图卷积层的输出,ct是第t个图卷积层的输出通道数,而Wt∈Rct×ct+1表示从ct个通道到ct+1个通道的参数映射;2处理智能合约的字节码:采用图神经网络GNN模型处理基于智能合约字节码构建的智能合约图SCG,包括:2-1构建SCG:首先将源代码编译为字节码,并基于字节码采用SolidityParser工具为智能合约源代码生成抽象语法树AST,然后将控制流、数据流结合到抽象语法树AST上构建智能合约图SCG,采用每个语句的AST子树替换控制流图CFG中相应节点的内容;然后,将每个语句的属性描述合并到智能合约图SCG中相应的节点中,在合并以上代码信息后,此代码图中的节点以树形形式反映语句的语法信息,有向边表示语句之间的控制流和数据流,形成图结构Gi,表示为Ai,Xi;2-2对智能合约图SCG实施属性屏蔽进行数据增强:对给定图结构GiAi,Xi进行属性屏蔽,转换函数Tmask,表示为: 将节点属性遮罩在带属性图中扩展,对节点属性矩阵Xi进行转换,随机遮罩所有节点的一部分属性,形式上,有: 其中,*表示乘法;Lm表示遮罩位置矩阵,V表示遮罩的高斯噪声,生成的图记作SCG’;2-3特征提取:采用OpenAI的嵌入API将SCG’的节点和边编码为向量:encode=Encoderedges,nodes,编码向量的长度为1536,然后,这些向量通过3个具有ReLU激活函数的GCN层传递,其中第一层的输入长度为1536,输出长度为一个自定义的隐藏通道hc变量:GCN1=GCNConv1536,reluencode,GCN2=GCNConvhc,reluGCN1,GCN3=GCNConvhcGCN2,最后,GCN层的输出被送入到两个密集层中,分别具有3个和64个单元:d1_gnn=Dense3,reluGCN3,gnn_output=Dense64,relud1_gnn,3处理智能合约的操作码序列数据:采用双向长短期记忆网络BiLSTM用于分析操作码的上下文关系,包括:3-1生成操作码:采用vandal工具,将字节码反编译为操作码;3-2数据增强:对操作码进行标记化,将功能上相似的操作码合并为一个类别,并将操作码序列中的操作数移除,LOG1-LOG4四个操作码处理为LOG,SWAP1-SWAP16十六个操作码处理为SWAP;3-3特征提取:通过一个嵌入层,将标记化的操作码特征嵌入到稠密的向量空间中,该向量空间具有200个维度:token=Tokenizeopcode,vector-space=Embeddingtoken,接下来,操作码向量被分别输入到具有128个和64个单元的两个BiLSTM层中,在第一个BiLSTM层后应用Dropout层:bi-lstm1=Bi_LSTM128vector_space,r=Dropoutdensebi_lstm1,bi-lstm2=Bi_LSTM128r,最后一个BiLSTM层的输出被输入到一个具有64个单元和ReLU激活函数的密集层中:lstm-output=Dense64,relubi_lstm2。

全文数据:

权利要求:

百度查询: 广西师范大学 基于多模态学习的少样本智能合约漏洞检测方法

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