用于编译器的漏洞检测方法、插件和非易失性存储介质与流程
本发明涉及计算机软件安全领域,具体而言,涉及一种用于编译器的漏洞检测方法、插件和非易失性存储介质。
背景技术:
1、随着软件开发复杂度的攀升,安全漏洞已成为影响软件质量的主要因素,尤其在供应链安全日益重要的背景下,开发人员需同时关注自身代码及第三方库的安全风险。传统的软件安全开发流程主要依赖手动代码审计、静态/动态分析工具以及外部依赖扫描,但这些方式存在显著缺陷。
2、手动审计成本高且易遗漏;传统静态分析工具多基于预设规则或模式匹配,对新型漏洞(如零日漏洞)或复杂利用链的检测能力有限,难以结合威胁情报进行智能评估;外部依赖扫描往往独立于代码审计,缺乏深度关联分析,无法准确判断第三方库风险对特定代码段的影响;此外,现有工具与开发者工作流(如github)集成度低,自动化程度不足,且报告解读困难,严重依赖安全专家进行定制化验证,导致效率低下。目前,虽有一些研究尝试在编译器层面集成安全防护,但多局限于特定模式匹配或简单静态分析,缺乏对代码上下文的深度理解,无法智能预测漏洞可利用性,且未能有效利用编译器特有的上下文信息(如内联决策、类型推导等)来提升检测精度。
3、针对上述的问题,目前尚未提出有效的解决方案。
技术实现思路
1、本发明实施例提供了一种用于编译器的漏洞检测方法、插件和非易失性存储介质,以至少解决传统安全检测仅关注代码本身的语义而忽略了编译器提供的丰富上下文信息导致检测准确率不足的技术问题。
2、根据本发明实施例的一个方面,提供了一种用于编译器的漏洞检测方法,包括:获取目标编译器中的源代码的序列、抽象语法树、控制流图以及编译上下文信息,其中,抽象语法树表征源代码的语法结构,控制流图表征源代码中所有可能的执行路径;基于源代码的序列、抽象语法树、控制流图,提取源代码的语义特征,得到代码隐藏状态矩阵,其中,代码隐藏状态矩阵用于表征源代码自身的语义特征;将编译上下文信息编码为上下文向量;将代码隐藏状态矩阵和上下文向量进行融合,得到融合表示向量;基于融合表示向量,确定漏洞检测结果,其中,漏洞检测结果包括漏洞类型、漏洞触发条件、影响范围以及可利用性评分。
3、可选地,基于源代码的序列、抽象语法树、控制流图,提取源代码的语义特征,得到代码隐藏状态矩阵,包括:采用预设的图神经网络,分别对抽象语法树和控制流图进行多层消息传递处理并拼接,得到结构特征向量;通过预设的深度神经网络,对源代码序列进行多层编码处理,得到语义特征向量;将结构特征向量和语义特征向量进行加权相加,得到代码隐藏状态矩阵。
4、可选地,将代码隐藏状态矩阵和上下文向量进行融合,得到融合表示向量,包括:基于代码隐藏状态矩阵,确定查询向量、键向量和值向量;基于查询向量、键向量和值向量,通过注意力机制,将代码隐藏状态矩阵和上下文向量进行融合,得到融合表示向量。
5、可选地,基于融合表示向量,确定漏洞检测结果,包括:将融合表示向量输入到预设的多任务学习编码器中,并行通过多个任务头进行处理,得到漏洞检测结果,其中,通过多个任务头进行处理包括:通过第一任务头识别漏洞类型、通过第二任务头预测漏洞触发条件、通过第三任务头评估漏洞被利用后的影响范围、通过第四任务头结合多个任务头中除第四任务头之外的所有任务头的预测结果输出可利用性评分。
6、可选地,编译上下文信息包括内联决策信息、类型推导结果、优化标志影响和符号表信息,其中,内联决策信息表征目标编译器是否将源代码调用的函数内联,类型推导结果表征目标编译器在编译期间推导出的变量类型信息,优化标志影响表征目标编译器的优化级别对应的漏洞触发条件,符号表信息表征目标编译器生成的调试符号对应的结构信息。
7、可选地,在可利用性评分高于预设阈值的情况下,基于漏洞触发条件和影响范围,生成能够触发漏洞的测试用例代码片段;将测试用例代码片段注入源代码并进行符号执行验证,得到符号执行验证结果,其中,符号执行验证结果包括成功触发漏洞的证据或失败信息;基于符号执行验证结果,对可利用性评分进行更新并调整目标编译器的参数。
8、根据本发明实施例的另一方面,还提供了一种用于编译器的漏洞检测插件,漏洞检测插件安装在目标编译器中,在目标编译器运行编译时执行上述中任意一项用于编译器的漏洞检测方法。
9、根据本发明实施例的另一方面,还提供了一种用于编译器的漏洞检测装置,包括:获取模块,用于获取目标编译器中的源代码的序列、抽象语法树、控制流图以及编译上下文信息,其中,抽象语法树表征源代码的语法结构,控制流图表征源代码中所有可能的执行路径;提取模块,用于基于源代码序列、抽象语法树、控制流图,提取源代码的语义特征,得到代码隐藏状态矩阵,其中,代码隐藏状态矩阵用于表征源代码自身的语义特征;编码模块,用于将编译上下文信息编码为上下文向量;融合模块,用于将代码隐藏状态矩阵和上下文向量进行融合,得到融合表示向量;确定模块,用于基于融合表示向量,确定漏洞检测结果,其中,漏洞检测结果包括漏洞类型、漏洞触发条件、影响范围以及可利用性评分。
10、根据本发明实施例的又一方面,还提供了一种非易失性存储介质,非易失性存储介质包括存储的程序,其中,在程序运行时控制非易失性存储介质所在设备执行上述中任意一项用于编译器的漏洞检测方法。
11、根据本发明实施例的再一方面,还提供了一种计算机设备,计算机设备包括处理器,处理器用于运行程序,其中,程序运行时执行上述中任意一项用于编译器的漏洞检测方法。
12、根据本发明实施例的再一方面,还提供了一种计算机程序产品,包括计算机程序,计算机程序被处理器执行时实现上述中任意一项用于编译器的漏洞检测方法。
13、在本发明实施例中,采用用于编译器的漏洞检测方法,通过获取目标编译器中的源代码的序列、抽象语法树、控制流图以及编译上下文信息,其中,抽象语法树表征源代码的语法结构,控制流图表征源代码中所有可能的执行路径;基于源代码的序列、抽象语法树、控制流图,提取源代码的语义特征,得到代码隐藏状态矩阵,其中,代码隐藏状态矩阵用于表征源代码自身的语义特征;将编译上下文信息编码为上下文向量;将代码隐藏状态矩阵和上下文向量进行融合,得到融合表示向量;基于融合表示向量,确定漏洞检测结果,其中,漏洞检测结果包括漏洞类型、漏洞触发条件、影响范围以及可利用性评分,达到了在编译器内部集成智能安全分析的目的,从而实现了显著提升了对新型及复杂漏洞的检测准确率的技术效果,进而解决了传统安全检测仅关注代码本身的语义而忽略了编译器提供的丰富上下文信息导致检测准确率不足的技术问题。
1.一种用于编译器的漏洞检测方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述基于所述源代码的序列、所述抽象语法树、所述控制流图,提取所述源代码的语义特征,得到代码隐藏状态矩阵,包括:
3.根据权利要求1所述的方法,其特征在于,所述将所述代码隐藏状态矩阵和所述上下文向量进行融合,得到融合表示向量,包括:
4.根据权利要求1所述的方法,其特征在于,所述基于所述融合表示向量,确定漏洞检测结果,包括:
5.根据权利要求1所述的方法,其特征在于,所述编译上下文信息包括内联决策信息、类型推导结果、优化标志影响和符号表信息,其中,所述内联决策信息表征所述目标编译器是否将所述源代码调用的函数内联,所述类型推导结果表征所述目标编译器在编译期间推导出的变量类型信息,所述优化标志影响表征所述目标编译器的优化级别对应的漏洞触发条件,所述符号表信息表征所述目标编译器生成的调试符号对应的结构信息。
6.根据权利要求1至5中任意一项所述的方法,其特征在于,还包括:
7.一种用于编译器的漏洞检测插件,其特征在于,所述漏洞检测插件安装在目标编译器中,在所述目标编译器运行编译时执行权利要求1至6中任意一项所述用于编译器的漏洞检测方法。
8.一种用于编译器的漏洞检测装置,其特征在于,包括:
9.一种非易失性存储介质,其特征在于,所述非易失性存储介质包括存储的程序,其中,在所述程序运行时控制所述非易失性存储介质所在设备执行权利要求1至6中任意一项所述用于编译器的漏洞检测方法。
10.一种计算机设备,其特征在于,包括:存储器和处理器,
11.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任意一项所述用于编译器的漏洞检测方法。
版权声明:本站专利文献数据主要来源于国家知识产权局等公开渠道,由 技术新讯 进行整理汇编。页面设计及数据汇编的著作权归本站所有。全部内容仅供个人学习、科研评估与技术交流参考,严禁用于任何商业用途(包括但不限于直接生产制造、技术转让、倒卖数据等)。
免责条款:专利技术具有时效性,本站不对资料的绝对准确性、完整性和可实施性提供任何明示或暗示的担保。因参考本站内容造成的直接或间接损失,本站不承担相关法律责任。若您认为本站内容有侵权问题,请及时提供权属证明与我们联系,本站将在核实后依法处理。反馈意见:yyfuon@163.com