如何对代码中的漏洞进行安全检测

      随着软件定义的概念和技术的发展和应用,设备嵌入式系统的功能主要由软件定义完成,导致设备嵌入式软件的规模和复杂性急剧增加。软件安全问题已成为嵌入式系统乃至设备产品开发、运行和维护的核心关注点。借助主流软件代码安全检测技术,分析设备嵌入式软件的漏洞行为和结构,建立设备嵌入式软件的漏洞特征和系统不安全行为属性规约。通过对软件属性规约的逻辑计算,形成软件安全加固需求,提出基于安全规约属性模板的漏洞加固代码生成技术,修复加固软件代码中潜在的安全漏洞,实现设备嵌入式软件的强制安全保障。

目前,为了保证软件代码的安全,国内外许多研究人员主要利用安全漏洞检测技术和安全漏洞修复手段来提高软件的安全性。安全性漏洞的检测技术可以分为静态和动态两种,其实现方式是通过软件检测、代码分析、符号执行、模式识别。为此,出现了许多优秀的工具。比如SAGE是基于二进制代码的重量级模糊测试工具,PEX是微软将轻量级动态符号执行方法与单元测试领域相结合设计的工具。YOGI是微软基于抽象解释和反例制导的求精方法的模型检验工具。KLEE是基于轻量级动态符号的自动白盒模糊测试工具。

outputo-20211011-085312-592-uhqo.png

WEILE等实现的静态分析检测框架Marple,通过对控制流图中的路径进行分析,将路径分为安全、漏洞、警告、不可达、未知五类,通过自动检测分析,向用户报告路径类型信息、漏洞根源信息和位置信息。航空软件系统往往代码行数巨大,对代码质量要求极高。NASA的BRAT等。针对航空航天软件系统,利用抽象解释构建了误报率低的缓冲区溢出检测方法,并开发了检测框架IKOS。该框架还有助于开发准确可伸缩的静态分析工具。GAO等。提出使用控制流图和函数调用图来执行污染传播分析和数据流分析的检测方法,并实现了静态分析工具Carray-bound。一些研究人员将静态分析技术与机器学习算法相结合。BINDU等。利用易于提取的轻量级静态代码属性,实现了预测缓冲区溢出的输入验证检查,然后利用数据挖掘方法预测应用程序中的缓冲区溢出漏洞。然而,许多软件安全检测技术和工具只提供了检测报告,并没有对软件源代码安全风险进一步研究和相应的结果。

分享: