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