一、背景
在当下软件应用的开发过程当中,自研的内部代码所占的比例逐步地减少,开源的框架和共用库已经得到了广泛的引用。如下图所示,在一个Kubernetes部署的应用当中,我们自己开发代码所占的比例可能连0.1%都不到。
![1.png](https://static.studygolang.com/200429/8974fd989d6461129cda4b78828fecd5.png)
开源软件能够帮助开发者共享彼此的成果,使得我们能够快速复用其他人开发并已得到验证的软件库,从而能够集中精力专注于创新性的工作。然而,开源软件的大量引用也给我们的应用带来了安全隐患。安全检测已成为当前DevOps流程的重要组成部分。
二、你的应用安全吗
据不完全统计,现在有78%的企业都在使用开源软件。但是,大家在享受开源软件带来的研发便利的同时,是否也意识到开源软件带来的安全隐患呢?
![2.png](https://static.studygolang.com/200429/87d3224b068621c1cea31f4b49b67b3b.png)
从上图的统计数据可以看出,只有13%的企业会把安全放在引用开源软件时的首要关注点。大部分的使用者选择相信开源软件的创造和维护者会保证其安全性。然而,下图的统计数据表明,安全性并不是开源软件维护者的维护重点。
![3.png](https://static.studygolang.com/200429/0ed787427e31c28d930c855d747243aa.png)
这样的现状导致我们常用的开源软件库包含了各种各样的安全漏洞,例如,据统计,目前14%的NPM包、30%的Docker Hub镜像都包含安全漏洞。而且在这些漏洞被发现之后,也得不到及时的修复。据统计,Maven包里有59%的已知安全漏洞还没有得到修复,而漏洞的平均修复时间是290天,最严重级别漏洞的平均修复时间也仅是265天。黑客们已逐渐把开源软件作为了主要的攻击目标。
该怎么样保证我们上线应用的安全呢?
三、JFrog Xray,监测安全漏洞的利器
JFrog公司提供的Artifactory+Xray是一个很好的产品组合。Artifactory是全语言的制品仓库,能够在同一个仓库中存储和管理我们应用研发中使用的所有外部依赖包。而Xray通过对Artifactory的监视,能够在构建,甚至开发阶段就发现安全漏洞问题,使得安全监测前置,避免了在应用上线前紧急排查问题的窘境。
![4.png](https://static.studygolang.com/200429/e6f987a74f78adb78eed6fa3239ccc1d.png)
如上图所示,当Artifactory仓库中新加入了制品包,设置了对其监视的Xray就会启动安全检查,并报告查到的安全漏洞和License授权情况。而针对安全漏洞,Xray会提供详细的漏洞信息,以及在应用中的准确定位来辅助我们对其进行分析和检查。5
![5.png](https://static.studygolang.com/200429/7c92f1b288aceba4776a9889a9a41fef.png)
同时,针对查出来的安全漏洞,Xray还提供了针对其扩散范围的分析。也就是说,可以帮助我们分析,出了被检查的这个制品包外,还有哪些其他的应用也包含了这个安全漏洞。
![6.png](https://static.studygolang.com/200429/892caf59324c9ce9dd3a5b01f9e8fae9.png)
除了安全漏洞及其扩散范围的分析,Xray还提供自定义问题的能力。我们可以把用其他工具发现的安全问题,或者如性能过低、版本过老等非安全问题定义在对应的制品包上,同样也可以利用Xray的能力检查这些问题在我们的应用中的扩散范围。7
![7.png](https://static.studygolang.com/200429/8c8dd28ba0ef21c9b3bdcb588ad0fc54.png)
四、Snyk, 不仅仅是监测漏洞
JFrog
Xray是基于开源的NVD开源漏洞数据库来监测安全漏洞的,而Snyk(https://snyk.io)提供了额外的商业漏洞数据库。Xray可以通过和Snyk的集成,实现利用Snyk的商业漏洞数据库进行安全漏洞检查。
![8.png](https://static.studygolang.com/200429/51ce4f6a6dab0a64b482f0f638fa4158.png)
当然,基于自身的商业漏洞数据库,Snyk也提供了安全漏洞的扫描和监测能力。Snyk提供了与各种各样平台的集成,帮助我们监测部署在这些平台上的应用安全。
9.png
然而,Snyk的能力不仅如此,他还能帮助我们修复安全漏洞。例如,当和我们的Github Enterprise集成后,我们可以选择我们需要监测的项目。
![10.png](https://static.studygolang.com/200429/cfae516ce21eabd199cf1ecae7f44029.png)
选定后,Snyk就会自动扫描我们的代码并报告在项目当中发现的安全漏洞。
11.png
Snyk最大的特色是,针对这些安全漏洞,能够自动给出PR(Pull Request)形式的修复建议。PR既可以针对所有发现的漏洞,也可以只针对某一个具体的漏洞。
![12.png](https://static.studygolang.com/200429/84f14400536580200c1a45282a0e702b.png)
13.png
直接Merge这些PR就可以帮助我们替换使用已修复安全漏洞的依赖包,实现安全隐患的自动消除。
五、总结
开源软件的大量引用,在方便了应用开发的同时,也带来了安全的隐患。利用JFrog Xray和Snyk等工具,能够帮助我们尽早地发现开源依赖引入的安全漏洞,分析漏洞的扩散范围,也可以给出修复建议,实现安全隐患的自动消除。
参考文献
Xray and Snyk - Don’t justscan … Fix!
https://www.youtube.com/watch?v=jlUQd1l2j40&list=PLY0Zjn5rFo4OuGDcUEgb48JcObItA4TLW&index=46
JFrogXray试用地址
http://www.jfrogchina.com/artifactory/free-trial/
更多精彩内容可以专注我们的在线课堂
微信搜索公众号:jfrogchina 获取课程通知
有疑问加站长微信联系(非本文作者)