1、SCA简介
SCA,Software Composition Analysis,软件成本分析是一种对二进制软件的组成部分进行识别、分析和追踪的技术。
SCA定义:软件成分分析产品通常在开发过程中对应用程序进行分析,以检测开源软件组件是否带有已知的漏洞,例如具有可用安全补丁程序的过期库,以及需要相应授权许可(法律风险)的商业软件或第三方产品。对其的说明是:提供了远程评估和验证配置的功能,例如Windows域组策略中的密码复杂性;经常用于实现法规遵从性,例如PCI或内部安全策略合规性。
SCA致力于确保企业软件供应链的安全,从而支撑安全的应用程序开发和组装。
2、SCA解决的问题
- 应用第三方组件中的已知漏洞。
- 第三方组件中本身存在的漏洞,攻击者可以利用这些已知的漏洞,对应用系统进行攻击破坏。
- 第三方组件的软件许可问题。
- 这方面主要是分析调用的第三方组件的许可证类型。目前,国际公认的开源许可证共有80多种。有的许可证对软件的使用方式几乎没有限制,用户几乎不用关心需要承担的责任,但是也存在一些限制性比较强的许可证,如果不小心调用,可能会带来较大的法律风险和知识产权的损失。
- 第三方组件中的恶意代码问题。
- 这方面的问题不算普遍,但是危害也比较大。风险的来源主要是在非正规渠道获取被篡改的第三方组件,或使用了恶意开发者提供的第三方组件,未经确认就引入开发的业务系统中会带来极大风险。
- 引用版本过旧的第三方组件。
- 版本过旧从表面来看,跟安全好像关系不大,但是仔细想想,比较老旧的第三方组件有可能会存在一些未知的、开发者没有公布的、且已修复的0day,所以这方面可以当作是不重要不紧急的风险来对待。
3、SCA工具
3.1 开源SCA工具
OWASP的Dependency-Check
Dependency-Track
3.2 商业SCA工具
Checkmarx
CxSCA
4、SCA的应用场景
4.1 传统场景下的应用
1.1 合规中SCA
等保1.0和等保2.0中涉及到SCA的部分要求对比如下:
1.2 脆弱管理中的SCA
安全配置核查,也就是我们的SCA,主要的检查范围是由人为疏忽造成的配置问题,主要包括了账号、口令、授权、日志、IP通信等方面内容。安全配置与系统的相关性非常大,同一个配置项在不同业务环境中的安全配置要求是不一样的,如在WEB系统边界防火墙中需要开启HTTP通信,但一个WAP网关边界就没有这样的需求,因此在设计系统安全基线的时候,安全配置是一个关注的重点。
系统脆弱性由安全基线来评估,系统实现层中的安全基线要求主要是由安全漏洞方面、安全配置方面等检查项构成,这些检查项的覆盖面、有效性成为了基线安全实现的关键,如下图所示:
4.2 新技术中的应用
4.2.1 物联网(IOT)中的SCA
通过对物联网中的一些设备,比如摄像头,智能恒温器等的信息采集,可直接或间接地暴露用户的隐私信息。如果生产商缺乏安全意识,很多设备缺乏加密、认证、访问控制管理的安全措施,物联网中的数据就会很容易被窃取或非法访问,造成数据泄露。这种新型的信息网络往往会遭受有组织的 APT 攻击。
物联网不同层次可能有着相同的安全需求,下表对物联网可能涉及到的SCA相关问题的威胁和对策做了总结:
4.2.2 工控中的SCA
根据工业网络安全合规标准和国内外的最佳实践,通过常态化的工业网络安全评估,查找突出问题和薄弱环境,排查安全隐患和安全漏洞,分析安全状况和防护水平,有针对性地采取管理和技术防护措施,是提升工业企业网络安全保障能力,切实保障网络安全的有效途径。在监管机构的安全检查和工业企业自查过程中,复杂多样的工业环境和数量巨大的评估对象都对评估人员的技术水平和工作量提出了很大的考验。SCA在其中发挥的作用如下:
4.2.3 容器中SCA
Kubernetes(k8s)是自动化容器操作的开源平台,这些操作包括部署,调度和节点集群间扩展。Kubernetes加快了容器部署,还让用户能够管理大规模的多容器集群。它便于持续集成和持续交付,处理网络、服务发现和存储,还能够在多云环境中执行所有这些任务。Kubernetes中涉及到的配置问题及对策如下表:
除了认真遵循Kubernetes安全文档外,确保Kubernetes安装部署的最佳方法是,尽早将安全纳入到部署的环境中,通过正确配置主动保护环境比数据泄密发生后试图应对要简单得多,也省钱得多。另外,通过积极主动的监控来充分利用高级的安全运维(SecOps)实践,提供了保护日益Serverless的环境所需要的那种可见性。
4.2.4 云环境中的SCA
Dome9安全公司首席执行官Zohar Alon表示:“配置错误导致了目前云中的大部分数据被盗和泄露事件。”
提供云服务的方式多样化也导致这个问题更加严重。开发人员创建了虚拟服务器和容器,以便快速推出应用程序,存储数据。业务部门通过自己注册来使用服务,个人用户也是如此。但本地数据中心所采用的传统配置管理方法并不适用于云服务。云平台通常有自己的系统来监视配置的更改。例如,AWS有AWS Cloud Trail和AWS Config。微软的Azure云平台有其运营管理套件。其他流行的SaaS云提供商没有集中的管理工具,而是让个人用户负责自己的安全和共享设置。
云计算系统的配置核查对象如下表所示: