你的应用有漏洞吗?使用第三方应用需谨慎
引言
开源对软件的发展可以说具有深远的意义,它帮助我们共享成果,重复使用其他人开发的软件库,让我们能够专注于我们自己的创新,它推进了技术的快速发展。据不完全统计78% 的企业都在使用开源,但是其中有多少企业关注第三方开园依赖的安全呢?其中仅有13%将安全作为第一考虑因素。可喜的是仍然有50% 的企业将安全列为第二或第三位考虑因素,越来越多的公司开始重视第三方依赖的安全性。
为什么要关住第三方依赖的安全性
想象我们交付的软件Application 是一张饼,我们自己开发的代码仅占其中很小一部分,见下图:
而开源依赖并不等于是安全的,当然也不等于不安全,自2000年,仅有几家大厂贡献开源,其中有Apache, Linux, IBM, OpenSSL等,而到了2015年之后,任何人都在贡献开源社区,下图是主流软件库的发展,数量庞大。
而我们在使用这些依赖的时候,一定要意识到:
1. 开源依赖往往很少有进行安全性测试的
2. 开源软件开发人源对安全意识普遍不高
3. 开源软件提供方没有多余的预算进行安全性测试
4. 黑客的主要攻击目标是开源,因为攻击一个,影响范围很大
让我们一起看几组第三方依赖安全的调查数据:
如何管理第三方依赖安全
我们看到第三方依赖是存在非常大的安全隐患的,那我们应该如何做呢?不使用第三方依赖显然是不现实的,我们总结了四个步骤
1. 了解你都使用了哪些依赖
2. 删除你不需要的依赖
3. 查找并修复当前已知的漏洞
4. 持续监听新发现的漏洞,重复前三个步骤
依赖分析
相对简单,我们使用目前的依赖管理工具可以轻松做到,如maven的dependency tree
删除不需要的依赖
我们发现很对开发人员在维护依赖的时候,即使该依赖已经不适用,但不会删除,这显然会扩大黑客的攻击范围,因此我们需要定期检查删除不需要的依赖
发现并修复漏洞
第三步开始较为复杂,所幸已有很多开源组织提供了免费的漏洞库,如US-CERT,NVD,OSVDB等漏洞广播源,该类组织集中维护发现的已知漏洞,对外提供表述漏洞数据描述以及漏洞广播,为开源社区安全提供数据支持,有了漏洞数据源之后,判断我们的依赖中是否有依赖就简单了,我们仅需要根据我们的依赖包与漏洞数据库进行对比,就可以发现我们发布的应用中是否包含已知的漏洞,甚至有些开源组织会在漏洞库的基础上提供关于漏洞的修复建议,如 Synk.io,JFrog 和 Sync合作贡献了一个漏洞数据源(JXray),其中包含主流漏洞数据源,包括刚才提到的几个,这样我们就可以对我们包含对漏洞进行漏洞升级。
JXray 漏洞数据源
持续监听新的漏洞
我们知道漏洞是持续增长的,近几年每年平均都有900左右的新漏洞,我们需要持续监听这些新产生的漏洞,并与我们内部软件生命周期集成,与DevOps有机结合(DevSecOps),这显然需要一套平台或系统帮助我们系统的管理第三方漏洞安全,下面我们整理了一个漏洞扫描平台技术需求设计
漏洞扫描平台技术需求设计
JFrog Xray 介绍
JFrog Xray 是一个通用的漏洞扫描平台,可以满足我们对第三方漏洞安全管理的所有需求,其主要有以下几个特性
支持多语言漏洞扫描
Java,Docker,Npm,Python,Ruby Gems,Nuget,Rpm,Debian等主流语言漏洞扫描,统一对所有开发技术栈进行安全管理
深入扫描能力
我们会深入分析软件的依赖及其传递依赖,甚至是Docker 镜像中的操作系统层,如Docker 镜像中ubuntu操作系统Layer中某一个debian包存在漏洞。下图是一个Docker 镜像中包含的一个基础maven jar包含漏洞的分析图
影响范围分析
当我们监听到一个新的漏洞后,我们往往很难定为其被哪些项目依赖并试用,极为耗时,且总会有遗漏的情况出现,提高了企业损失的几率。
JFrog Xray 会根据所有收集到的依赖拓扑,进行反向依赖性分析,逐层找到所有包含漏洞包的上层应用。快速分析漏洞的影响范围,评估漏洞上线风险,指导企业进行漏洞修复
开放式集成
可以扩展与其他第三方漏洞数据平台集成,如Whitesource,Blackduck等,通过Xray 平台提供的Rest Api,甚至可以与企业自己漏洞数据源进行集成,形成企业安全的统一管理闭环。
DevOps 集成能力(DevSecOps)
我们可以在软件持续交付流水线中集成漏洞扫描能力,将安全机制集成进来,作为企业软件质量关卡中的一部分,当发现漏洞的时候,阻止漏洞包交付到生产环境,如下图
JFrog Xray 架构介绍
JFrog Xray 采用微服务架构设计,其中主要包含以下几个微服务,
·Server,主服务,UI
·Indexer,索引层,进行软件包索引
·Persist,持久层,存储漏洞及扫描结果
·Analysis,分析层,分析依赖拓扑及反向依赖,发现漏洞并告警
JFrog Xray同时支持高可用集群方式,针对企业级安全管理,提高漏洞扫描的效率及稳定性,并且与JFrog Artifactory 通用二进制包管理系统原生集成,共同组成制品管理统一管理方案。
微服务数据流
总结
本次分享,介绍了在使用第三方依赖时的安全隐患,以及针对该类问题,我们应该如何管理第三方依赖的安全,同时介绍了JFrog Xray 的安全管理特性,帮助企业轻松管理第三方漏洞,降低企业安全风险,避免含有漏洞的包上线到生产环境或客户环境中。
扩展阅读
JFrog