当前位置: 首页 > 网络应用技术

如何选择漏洞检测方法?详细说明源代码和二进制SCA检测原理

时间:2023-03-05 21:46:51 网络应用技术

  摘要:本文讨论了SCA的特定检测原理,源代码SCA检测和二进制SCA测试,以及在安全审核和漏洞检测中各自的优势和适用方案。

  SCA(软件组成分析)软件组成分析,普遍的理解是分析软件中包含的一些信息和特征,以实现软件的识别,管理和跟踪技术。如何实现SCA的特定检测原则?源代码和二进制文件的SCA检测的相同点和不同点是什么,以下内容将回答上述问题。

  相应地编译的语言类型(C/C ++/GO/RUST)如下:源代码 - > compilation-> link-> link->二进制文件。影响二进制文件的因素包括不同的CPU架构(ARM,X86,PPC,MIPS,MIPS。。- 提及的影响因素不涉及Java语言

  上面的源代码和二进制文件之间存在巨大差异。源代码是基于高端语言编写的,该语言供人们查看。人们很方便地了解句子的语义。

  源代码包含许多丰富的代码信息,例如可变符号类型,函数名称,类名称,代码逻辑结构。相反,为了保留二进制文件的紧凑性,将丢弃许多可以在编译和生成的二进制文件中丢弃的信息。只能正确保留所需的信息,例如废弃的信息包括可变类型,可变类型名称和其他符号信息,可以保留诸如班级名称,功能名称等的信息。将保留字符串数据的常见量相应的配置信息,例如清单信息,POM信息,Maven信息,JAR软件包中的资源文件。基于这些特征源代码SCA和二进制SCA的检测原理也有很大不同。

  由于源代码包含丰富的程序信息,因此源代码的SCA检测既具有较大的粒度检测方法,又具有细粒径检测方法。

  根据源代码文件的相似性,确定哪些组件和版本是基于哪些组件和版本;文件相似性可以基于严格的哈希匹配方法,也可以根据文本相似性匹配方法;这也很明显。基于哈希的简单遗漏,文本相似性的准确性很低。

  源代码 - >词法分析 - >令牌提取 - >语法分析 - > AST抽象语法树 - >语义分析过程以提取相应的数据,然后匹配机器学习,NLP,NLP,CFG呼叫图,DFG数据流程图等等。算法测试代码相似性。基于语义代码的代码相似性检测高于基于文本的相似性检测的准确性。

  例如,Java和Go可以通过参考开源软件包信息实现开源软件的关联分析。该方法几乎可以准确地分析引用的开源软件名称几乎100%。

  不同汇编优化选项的影响很小。因此,二进制SCA主要从二进制文件中从这些方面提取不同的特征,然后使用匹配算法进行相似性计算,并根据相似性限制检测引用的开源软件名称和版本号。

  结合对二进制代码中CFG呼叫图和DFG数据流图的分析,以进行更准确的测试,但是由于这些分析需要编译二进制文件的说明,从而导致长时间的分析时间和较低的分析效率。因此,这种严重的检测方法不适合扫描大型二进制文件。

  您可以尝试以下泄漏服务以查看系统中是否存在安全风险:>>>漏洞扫描服务

  本文分享了华为云社区的诚意,作者:安全技术猿。