赞
踩
首先介绍下对应的数据集
首先是源码(图a所示),根据程序语句之间的数据与控制的依赖性,可以将程序语句转化为Contract graph
由于源码中不同语句的重要性不同,原文见解:提取三类节点,由源码构建的Contract graph中也正是这三类节点
即图(b)Contact graph中
- Major Node #主要节点 自定义的函数(如line1 getBonus、line7 withdraw)or内置函数(如line10 call.value)
- Secondary Node #次要节点 关键的变量(如余额Bonus[]、 奖金Reward[])
- Fallback Node #回退节点 模拟攻击合约的回退函数,回退函数可以与被测函数交互,回退也是智能合约很多安全漏洞的原因
也就是Contract graph由函数节点、重要变量节点、fallback节点构成
其中节点之间的变是存在顺序的,即e的下角标,对应了源码语句顺序执行的时序
详细的边的类型如下:
第一个block对应的一些程序语句(如循环,判断,断言)为控制流的边
第二个block(赋值等)为数据流的边
第三个block就是正常的语句,为前向边
第四个block为跟回退功能互动的语句,为回退边
至此,由(a)到(b)过程介绍完毕。
我们可以看到,由(b)到(a)后只有主要节点被保留
其中次要节点被删除,其特征传递给最近的主要节点,如果周围有多个主要节点,都会传递,回退节点也是如此。
ps:对于被删除的节点存在的残留的边的起点or终点会被连接至相应的主要节点
主要节点的特征主要由三部分组成:1.自身特征 2.in-feature(指向主要节点的节点的特征) 3.out-feature(从主要节点指出的节点特征)
上图最右侧的表 第一个表为边,四个属性组成:起始,终止,时序,类型
第二个表为主要节点:记录了对应的指向和指出的主要节点的次要节点和回退节点
至此,数据集部分介绍结束。
如下图 TMP model的输入为归一化后的的图,经过消息传播阶段,最后为计算图的label的读出阶段
Annotation:
在第k步,信息通过第k条边
信息
首先由
然后将乘以权重加bias作为信息
信息
在遍历完图G中所有的边后,TMP计算出每个节点的最终的隐藏状态:
然后通过以下方式计算图G的label:
其中,f为一个映射函数,具体计算公式如下,由于考虑到原始隐藏状态和最终隐藏状态在漏洞检测中都是有信息的,所以采用下面的方式计算label:
其中
最后通过计算出的label与图真实的label做loss,反向传播优化网络参数
TMP model介绍至此结束
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。