【技术实现步骤摘要】
基于超图卷积的源代码过程间漏洞检测方法和装置
[0001]本专利技术涉及软件分析领域,尤其涉及到软件源代码漏洞检测
,更具体地说涉及一种基于超图卷积的源代码过程间漏洞检测方法和装置。
技术介绍
[0002]软件程序规模的爆炸式增长,是对软件安全提出的严峻挑战。一方面,软件开发人员话费超过50%的时间检测代码缺陷,他们依靠自动化代码审计工具,通过检测和修复代码漏洞来提高软件代码的安全性和可靠性;另一方面,软件供应链攻击以650%的速率增加。此类攻击通常具有广泛的影响并且难以检测,因为攻击者将漏洞或恶意代码注入受信任供应商的软件源代码中。因此,尽早识别源代码漏洞以确保软件安全至关重要。静态检测已被证明是漏洞或错误检测的有效措施。它可以轻松应用于漏洞检测,因为不需要执行代码,其可以覆盖更广泛的代码错误。尽管已经存在用于代码漏洞检测的静态方法,但目前的静态检测方法误报率仍普遍较高,因为这些方法为了确保检测的性能和扩展能力通常只分析较小范围的漏洞相关代码,这使得检测结果不准确进而无助于提高软件安全性。
[0003]根据触发漏洞的代码范围软件漏洞可分为过程内漏洞和过程间漏洞。过程内漏洞是代码的交互仅涉及单个程序。由于此类漏洞的相关代码仅在一个过程内,并且处理边界相对简单,因此大量研究集中在处理此类漏洞上,针对此类漏洞已有多个研究成果。然而,一些统计数据表明,过程间漏洞也值得关注。
[0004]Meta公司统计了5个漏洞类型的近100次修复,其中49.9%是跨过程代码漏洞。另一项研究使用Infer分析了Ope
【技术保护点】
【技术特征摘要】
1.基于超图卷积的源代码过程间漏洞检测方法,其特征在于,该检测方法具体包括以下步骤:S1、使用基于分离逻辑的工具对待检测源代码进行过程间分析,并利用基于分离逻辑的工具对待检测源代码中存在的可疑漏洞进行初步定位;S2、根据S1步骤中基于分离逻辑的工具初步定位到的可疑漏洞对应代码的Trace重构弱过程间控制流图;S3、将S2步骤重构的弱过程间控制流图中节点代码中所具有的初始特征信息进行向量化表示;具体的,提取节点代码初始的语义信息,并向量化节点代码的语法信息,将节点代码初始的语义信息和语法信息拼接,形成初始化的弱过程间控制流图节点特征信息的向量化表示;S4、首先在S3步骤初始化后的弱过程间控制流图上,进行简单图卷积操作,以捕获过程内代码的特征;然后在S3步骤初始化后的弱过程间控制流图上运用超图卷积以捕获过程间代码的特征,以实现对弱过程间控制流图中多级信息的细粒度捕获;S5、读出经S4步骤卷积操作更新后的弱过程间控制流图的嵌入作为整个图的特征表示,然后将获得的特征表示输入到多层全连接层构建的检测器中进行检测,根据检测器输出的检测结果判断是否存在漏洞。2.如权利要求1所述的基于超图卷积的源代码过程间漏洞检测方法,其特征在于:S2步骤中,重构弱过程间控制流图具体包括以下子步骤:S201、根据S1步骤中基于分离逻辑的工具初步定位到的可疑漏洞对应代码的Trace,定位代码涉及的每一个执行过程,并重构每一个过程的控制流图;S202、根据Trace中的代码执行顺序,确定过程间的调用点,然后依据确定的调用点位置在每个调用点增加调入和调出两条连边,将多个过程的控制流图连接起来形成弱过程间控制流图。3.如权利要求1或2所述的基于超图卷积的源代码过程间漏洞检测方法,其特征在于:S3步骤中,将S2步骤重构的弱过程间控制流图中节点代码中所具有的初始特征信息进行向量化表示,具体包括:S301、使用词法分析器抽取节点代码中的基本单元,并对基本单元中存在的变量名和函数名进行符号化处理;S302、对符号化处理后的基本单元,使用预先训练好的Word2vec模型抽取对应的初始嵌入,捕获代码初始的语义信息;将节点代码中存在的多个基本单元对应的嵌入按相同维度计算平均值,形成节点代码初始的语义嵌入;S303、对节点代码抽取规范的LLVM语法树基本单元,每个节点对应的多个规范基本单元构成一个集合;S304、统计每个节点对应的LLVM基本单元集合中不同类型基本单元的数量,对每一类基本单元的数量进行归一化处理,然后按特定的基本单元类型顺序进行One
‑
hot编码,形成节点初始的语法嵌入;S305、将S302步骤中获取的节点代码初始的语义嵌入和S304步骤中获取的节点初始的语法嵌入拼接,形成节点初始的特征表示,即初始化的弱过程间控制流图节点特征信息的向量化表示。
4.如权利要求3所述的基于超图卷积的源代码过程间漏洞检测方法,其特征在于:S4步骤具体包括以下子步骤:S401、将S3步骤初始化后的弱过程间控制流图视为简单图G=(V,E),其中,V表示节点集,E表示边集;初始化后的弱过程间控制流图中所有节点的初始嵌入表示为其中d表示词嵌入向量的维度,表示是实数集,其维度为|V|
×
|d|;对于节点v
i
,初始的嵌入表示为k
‑
1次卷积后节点v
i
的特征嵌入表示为因此节点v
i
在k次卷积后的特征嵌入表示为具体地,在简单图上进行卷积操作由以下公式计算:式中,N(i)表示节点v
i
邻居节点的集合,表示对节点v
i
的任意邻居节点v
j
,其k
‑
1次卷积后的特征嵌入表示为M(
·
)为聚合均值聚合函数,W表示可训练的权重,σ(.)表示激活函数;初始化后的弱过程间控制流图在进行...
【专利技术属性】
技术研发人员:王俊峰,宋紫华,王继刚,王诗蕊,张哲宇,
申请(专利权)人:四川大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。