logo
登录 / 注册

二进制SCA与源代码SCA产品的区别

头像
墨云科技
2024-01-05 · 人力资源(HR)/人事

点击↑ 蓝字

关注 墨云安全

在软件开发和安全领域,软件构建中的组件分析SCA(Software component analysis)是一种用于检测和管理软件项目中使用的第三方组件(如开源库、框架等)的方法。SCA 工具帮助开发者识别项目中使用的组件,并检查这些组件是否包含已知的漏洞或安全问题,有助于提高应用程序的安全性,防范潜在的攻击。




SCA,一种跨开发语言的分析技术

SCA理论上来说是一种通用的分析方法,可以对Java、C/C++、Golang、Python、JavaScript等任何开发语言对象,从文件层面的文件内容,文件与文件之间的关联关系,以及彼此组合成目标的过程细节进行分析。SCA分析的目标程序形式既可以是源代码,也可以是编译出来的各类的二进制文件,分析的数据对象对程序架构、编译方式都是不敏感的,无论目标程序运行在x86平台还是ARM平台,windows系统或是Linux系统,简而言SCA是一种跨开发语言的应用程序分析技术。

SCA分析过程中首先对目标源代码或二进制文件进行解压,并从文件中提取特征,再对特征进行识别和分析,获得各个部分的关系,从而获得应用程序的画像—–组件名称+版本号,进而关联出存在的已知漏洞清单。由于SCA分析过程中不需要把目标程序运行起来,因此具有分析过程对外部依赖少,分析全面,快捷、效率高的优点。

二进制静态代码分析(Binary Static Code Analysis)和源代码静态代码分析(Source Code Static Code Analysis)是SCA中两个重要概念。




源代码静态代码分析

源代码静态代码分析(Static Code Analysis)是一种通过对程序的源代码进行分析来检测潜在问题和漏洞的方法,这种分析方法主要关注在程序编译之前,通过对源代码文件进行静态检查,以识别代码中的安全漏洞、潜在错误、不良编程实践和其他问题。

源代码包含了变量符号类型、函数名称、类名称、代码逻辑结构等大量丰富的代码信息,分为大颗粒度检测方法与细颗粒度检测方法。

大颗粒度检测方法可以根据源代码文件的相似度来判断其属于何种组件和版本。这包括文件相似度的两种主要匹配方法:基于 hash 的严格匹配和基于文本相似度的匹配。虽然基于 hash 的方法效率高,匹配速度快,但容易漏报。基于文本相似度的方法准确率较低,因为只考虑文本结构而不涵盖语法和语义方面的考量。

细颗粒度检测方法则经过源代码处理流程,包括词法分析、Token 提取、语法分析、抽象语法树(AST)生成和语义分析等步骤,以提取更丰富的程序信息。通过机器学习、NLP、CFG 调用图、DFG 数据流图等算法,细颗粒度检测方法可以更准确地进行代码相似度检测,克服了大颗粒度方法的一些限制,如仅考虑文件结构而不涉及语法和语义。

对于具备包管理机制的语言,如Java和Go,还可以利用该机制实现开源软件的关联分析,通过分析引用的开源软件包信息,可以准确地分析出引用的开源软件名称,提供更精确的关联信息。




二进制代码分析

二进制SCA(Static Code Analysis)是一种用于检测二进制文件(机器码或可执行文件)中的潜在安全漏洞和问题的方法。与源代码SCA不同,它专注于分析已编译的程序而不依赖于源代码。

首先,二进制SCA通常从反汇编开始,将二进制文件的机器码转化为更易于理解的汇编语言,这个过程将程序的底层表示形式转变为人类可读的指令序列,为后续分析奠定基础。

随后的控制流分析是二进制SCA的关键步骤之一。通过确定程序的执行路径,分析工具可以建立起对程序结构的理解。这有助于发现潜在的漏洞,尤其是与程序执行流程相关的问题。同时,数据流分析被用来追踪数据在程序中的传递路径,以便检测潜在的数据泄露和未初始化变量等安全问题。

二进制SCA还包括漏洞扫描和模式匹配,其中预定义的规则和模式被用于寻找已知的安全漏洞和恶意代码模式,有助于快速识别程序中存在的已知风险,及时进行安全评估。

高级的二进制SCA工具中,还可能包括抽象语法树(AST)分析。通过对程序结构的更深层次理解,工具可以更准确地推断语法和语义,提高对代码的分析深度。




源代码SCA VS 二进制SCA

源代码层面检测通过代码比对直接分析,能够利用导入的依赖包来判定其是否引入恶意环境;二进制层面的检测主要优势则是能够实现深度分析,针对编译好的程序,实现对已编译程序的反汇编,判定其汇编代码与库中汇编指令的相似性,确定其引用关系,从而剖析出软件组成、依赖关系、复用关系以及是否存在恶意程序等。

二进制SCA与源代码SCA各有千秋,适用于不同的场景。对于闭源软件,二进制SCA可能是更实用的选择,二进制文件的SCA检测能发现构建过程中工具链引入的安全问题,而源代码的SCA则不能。在选择使用哪种方法时,需要根据项目需求、可用资源和安全要求来进行权衡。

《Hype Cycle for Securityin China, 2022》中认为,SCA 可以帮助应用开发团队发布更安全的代码,并为安全团队提供主动的风险管理方法。企业可以选择合适的 SCA 工具,在使用开源组件前对其进行主动评估,以避免在生产环境中引入风险,进一 步确保软件供应链安全。
结合人工智能技术与威胁情报数据,墨云科技自主研发VackSCA(深链)智能软件供应链安全分析平台,依托基于 AI 的二进制代码相似性对比技术,无需源代码便能够全面高效地检测软件组成,深层次剖析软件依赖关系进行安全风险评估,并提供专业、有效的安全分析和修补建议,实现软件供应链问题的及时预警与修复。


软件成分分析: 提供软件物料清单,支持400多种文件格式的深入分析,提供准确的软件组件版本,具备对开源组件进行跟踪管理的能力。
供应链攻击审查: 通过及时对软件、系统组件的详细成分分析,可定制待审查供应链模块或文件,实现供应链攻击的预防及修复。
关联漏洞分析: 自动化二进制代码分析,检测三方引用及开源二进制软件漏洞,通过关联性分析消除漏洞误报,根据依赖组件的组成信息,判断漏洞对软件的真实影响。
风险预警: 利用威胁情报数据,通过严重性、漏洞利用普遍性及恶意软件应用程度等维度确定软件中已知漏洞的修复优先级,实现风险预警。
数据可视化: 提供软件成分分析图谱,能够支持多维度数据统计,通过对比历史各项数据,可清晰获得风险趋势。

参考链接:http://www.huaweicloud.com/zhishi/vss-010.html



往期回顾

墨云科技获得金融科技国际创新大赛一等奖

勒索软件攻击分析报告出炉,墨云提供针对性检查

墨云科技 | 与人工智能勒索软件的对抗


让网络攻防更智能



点击 在看
分享给小伙伴

↓↓点击 阅读原文 ,了解更多墨云信息

二进制SCA与源代码SCA产品的区别脉脉
阅读 8
声明:本文内容由脉脉用户自发贡献,部分内容可能整编自互联网,版权归原作者所有,脉脉不拥有其著作权,亦不承担相应法律责任。如果您发现有涉嫌抄袭的内容,请发邮件至maimai@taou.com,一经查实,将立刻删除涉嫌侵权内容。
头像
我来说几句...
脉脉App内打开