FreeBuf甲方群话题讨论 | 聊聊软件供应链安全及SCA技术实践

2022-06-08 14:37:35 浏览数 (2)

随着近来开源、云原生等技术的应用,软件供应链开始向多元化发展。此举虽加速了技术的革新和升级,但也让供应链安全成为全球企业的“心腹大患”。

2021年12月,Sonatype 发布了 《2021 年软件供应链状况报告》,报告显示开源供应、需求和安全漏洞全部呈现出“爆炸性”增长,其中开源供应量增加了20%,开源需求增加了73%,开源攻击也随之暴涨650%。在国内,根据2021年7月发布的《2020年中国网络安全报告》称,软件供应链攻击已成为2020年最具影响力的高级威胁之一。

而SCA(Software Composition Analysis)软件成分分析,被认为是目前对应用程序进行安全检测非常有效的办法之一,能对多种开发语言进行分析,通过识别开源软件(OSS)及其版本,发现潜在的安全漏洞和许可证授权问题,将威胁尽量扼杀在事前,增强企业安全合规风险管控和安全态势感知能力。但在实际应用中,SCA是不是应对供应链安全的最佳手段?还有哪些缺点?在实际应用中,SCA与SAST等工具该如何选择?本期话题将主要围绕软件供应链安全及SCA技术实践展开讨论。

(本文所有ID已做匿名处理)

1.开源软件作为软件供应链的重要组成部分,面对近来如Apache log4j等造成严重影响的漏洞,企业应如何判断并定位其中的隐患?对于漏洞审查提出了哪些更高要求?

@两袖清风

日常资产管理应保障软件版本清晰,同时及时关注漏洞情报,做到及时响应定位。供应链的安全应在交付时,提出更高或与现有应用同等的安全检测要求。

@西郊彭于晏

已知软件的开源成分清单和图谱,明确开源成分及依赖链条后,通过相关工具检测或知识库查询,可有效识别已知开源漏洞。已知的开源漏洞修复,相较于代码安全审计,往往是将带有漏洞的组件升级至最新或较安全的组件版本,操作简单,易于实施,是一个投入产出比较高的风控措施。较老的组件往往存在大量的安全漏洞,也存在软件供应链安全隐患(如停止运维更新升级)。 在使用开源软件,应关注其热门程度、受欢迎趋势、社区口碑、更新时效性等因素。应选择较新的安全的开源组件,并到及时安全更新,降低开源安全风险。

@邓布利多

现在的应用程序中使用的开源软件不能很好地被分辨,企业往往并不清楚产品中使用的开源软件类型和数量。甚至软件开发者在面对庞大的开源软件数量时也并不能做到完全准确的统计。所以像楼上所说,明确开源成分及依赖链条是第一步,不然检测一堆,很多还是误报,所以进一步说理清这些资产才能进一步提升漏洞检查的效率。

2.SCA的是不是应对供应链安全的最佳手段?在实际应用中还有哪些缺点?

@平淡无奇

SCA主要还是应对在开发过程中引入的组件和框架安全性评估。其实在整个过程中供应链安全还要包括外采的系统入网进行安全评审一系列制度和执行,包括对供应商的一些安全责任划分。

@两袖清风

SCA的应用只解决了一部分供应链场景,仅限于开源或通用组件,并未从建设采购、安全管理等层面为企业整体考虑供应链面对的安全威胁。

@好奇先生

SCA可以将组件排查的工作从主机上往前到开发测试时,也更方便了解每个业务和应用使用的组件及对应版本,缩短漏洞组件排查时候的排查时间、提高准确率。采购的话,SCA不一定能很好的适应,相关漏洞组件排查工作还是得在主机上进行。

@二狗子

前阵子看到一个讲影响SCA分析准确性的因素分析,这里简单引用一下: 从SCA原理可以知道影响分析准确性的因素分两个方面:其一是SCA工具支持组件的数量和检测算法,其二是应用程序引用开源软件的方式。 因为SCA工具是根据样本组件特征来匹配被测程序中的特征来判断应用程序是否引用该组件的,因此支持组件的数量越多,那么检测率也就越高,支持的组件数量越少,越会导致检测遗漏;另外检测算法和特征设计是否合理也直接影响到分析的准确性和分析效率,不同SCA工具厂商有不同的解决方案,就好比在手机上识别指纹/人脸一样,不同厂商识别的灵敏度和准确度都不一样。 应用程序在引用开源软件时,不同的应用程序即使引用同一个组件也存在引用不同的功能,引用功能的多少也各不相同,这样带来的结果就是在应用程序中包含该组件的特征数量也是大小不同的,引用功能多包含的特征一般也多,引用的功能少包含的特征也少。 而应用程序包含组件特征的多少直接影响到SCA工具的检测的准确性,组件特征越少SCA工具检测越困难,因此即使两个不同应用都引用了相同组件,可能一个应用可以检测到,另外一个应用则无法检测出该组件。这种场景对SCA工具检测二进制文件尤其明显。 由于存在上述SCA分析准确性,在极限情况下如果无法检测出组件,那么也就无法知道应用程序中是否存在该组件的漏洞了。

3.在实际应用中,SCA与SAST等工具该如何选择?

@两袖清风

SCA与SAST坚持只买对的不买贵的,不要唯价格论也不要唯技术论,适合企业的才是最好的,不是所有的良好实践对我而言就是最佳方案,坚持了解最佳实践并打破最佳实践。

@拿破仑

这两个其实都可以,主要是要对开发人员友好,能去主动适应开发人员使用的工作流程和工具,而不是强迫开发人员来适应安全工具。

@邓布利多

二者可以打配合,SAST用于测试源代码以发现安全漏洞,SCA则作为管理开源组件的应用程序安全方法,这两个结合起来可以解决软件开发前期的许多安全问题。

额外话题:IT资产盘点有没有什么好的办法?

@五月飞雪

一个小思路,用攻击者的角度对资产查缺补漏,比如用Goby自动探测当前网络空间存活的 IP 及解析域名到 IP,轻量且快速的分析出端口对应的协议、Mac 地址、证书、应用产品、厂商等信息。

@万里挑一

可以利用配置管理数据库(CMDB)系统,最好是自研,这样更符合企业情况,其次是采购,最后是用开源。

@青柠

个人感觉IT资产管理要管理流程 技术手段相结合。在制度层面,首先要有专门的IT资产管理制度;其次在采购(入库)、人员管理(特别是入职、离职等节点)等制度中要有相应的条款;最后,在考核体系中有相应的体现。在技术层面,首先要能自动化的尽量自动化,降低重复劳动;其次能发现未被管理的资产(结合制度要有处罚)。当然,过于理想化了,最重要的是要获得领导支持或者监管倒逼。

@卡卡

资产管理需要根据企业实际情况出发,有时候受限于组织架构,职责分工,安全很难大包大揽,着眼于现状,建立符合当前需求的资产管理。

本期精彩观点到此结束啦~

0 人点赞