软件漏洞挖掘的动态分析技术

        软件的高复杂性和安全漏洞的多样化给软件安全漏洞的研究带来了严峻的挑战。传统的漏洞挖掘方法效率低下,存在高误报、高漏报等问题,已不能满足日益增长的软件安全需求。目前,大量的研究工作试图将深度学习应用于漏洞挖掘领域,以实现自动化和智能化的漏洞挖掘。对深度学习应用于安全漏洞挖掘领域进行了深入的研究和分析。首先,通过对基于深度学习的软件安全漏洞挖掘现有研究工作的梳理和分析,总结了其一般的工作框架和技术方法;其次,以深度特征表示为切入点,对不同代码表征形式的安全漏洞挖掘模型进行分类阐述和总结;然后,探讨基于深度学习的软件安全漏洞挖掘模型在特定领域的应用,重点关注物联网和智能合约安全漏洞挖掘;最后,根据对现有研究工作的整理和总结,指出该领域面临的不足和挑战,展望未来的研究趋势。

目前,学术界和工业界对软件安全漏洞的定义还没有形成统一而广泛的共识。在安全漏洞定义的基础上,对软件安全漏洞的定义是指软件设计师在软件生命周期的需求、设计、编码、配置和运行阶段有意或无意产生的软件缺陷,使攻击者在未经授权的情况下访问计算机资源。一旦恶意攻击者使用这些软件缺陷,如权限越级、软件用户隐私数据泄露等。,会导致软件系统上的正常服务行为偏离,危及信息系统的机密性、完整性和可用性。由于软件安全漏洞隐藏在软件生命周期的各个阶段,如何利用各种技术手段尽快挖掘潜在的安全漏洞,减少对软件系统的危害是网络空间安全领域的热门研究问题之一。

outputo-20211108-093313-243-lkks.png

软件安全漏洞挖掘是安全研究人员检查和分析软件系统中潜在的安全漏洞的主要技术手段。通过使用各种检测工具对软件、源代码和代码补丁进行审计,或运行可执行文件对软件的执行过程进行测试,找出其软件缺陷。早期的安全漏洞挖掘技术主要分为静态分析技术、动态分析技术和混合分析技术。静态分析技术是指在不运行程序的情况下,分析程序源代码或字节码的语法、语义、控制流和数据流,从而检测目标程序中可能存在的潜在安全漏洞。静态分析技术主要包括基于规则的分析技术、二进制对比技术、静态符号执行技术和静态污点分析技术等。静态分析技术不需要运行程序,可以高效快速地完成对大量程序代码的审计,代码覆盖率高。然而,随着软件复杂性的增加,依靠人工专家提取漏洞规则往往具有主观性,结构成本过高,不可避免地导致漏洞报率高。

动态分析技术一般应用于软件的测试运行阶段,可以从运行程序的状态中跟踪程序的执行路径和数据流,从而提取漏洞特征信息,提高软件漏洞挖掘的准确性。但动态分析技术程序存在路径覆盖率低、路径爆炸等问题,需要消耗大量的计算资源。混合分析技术是指结合静态分析和动态分析技术,对目标程序进行安全漏洞挖掘。混合分析技术主要依靠安全研究人员分析程序源代码或字节码的静态特征和操作程序获得的动态特征,或者通过动态分析验证静态分析的结果,从而提高安全漏洞挖掘的准确性,从而降低静态分析的高漏报率,增加动态分析的代码覆盖率。

分享: