开源软件漏洞频发,运维如何避免背锅?

引言

开源对软件的发展可以说具有深远的意义,它帮助我们共享成果,重复使用其他人开发的软件库,让我们能够专注于我们自己的创新,它推进了技术的快速发展。据不完全统计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 的安全管理特性,帮助企业轻松管理第三方漏洞,降低企业安全风险,避免含有漏洞的包上线到生产环境或客户环境中。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180709B08FRU00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券