JFrog Xray 开源安全管控的哲学

背景

随着开源软件的大量使用,企业生产环境中运行的大部分都是开源代码,但开源并不意味着安全,近年来频繁出现的开源安全漏洞也印证了这一点。在安全问题被发现后,各企业在内部进行自我排查,这种被动的安全管控弊端是显而易见的。是否存在一种主动的防御模式,在交付流程开始的时候就可以洞悉所引用的开源软件的安全状况,并采取合理有效的措施防呢?

传统安全管控的弊端

传统企业安全漏洞扫描是上线前的最后一个环节,一旦发现问题,开发人员需要解决安全风险(替换、修复等方式),然后再次构建、测试和安全检查,直到符合上线安全规范。在前面的流程中,开发并不是有意引入这些依赖,但由于开发并不清楚依赖有哪些,更加不知道这些依赖是否存在安全风险,因此产生大量的开发、测试等计划外工作量。

这里写图片描述

解决之道

从以上的分析可知,问题出在开发端不清楚自己引入的依赖的细节(单纯根据pom文件并不能清晰地了解依赖全貌,因为会有传递依赖)。即使开发很清楚细节,也缺乏扫描引擎帮助开发人员发现安全问题。

如果能够在开发IDE端侦听类似pom的依赖定义文件的变化,一旦该文件发生任何变化,就可以对所有的依赖(定义的依赖和传递依赖)进行深度递归扫描,将扫描结果呈现在IDE上,开发者就可以清楚地知道自己引入了哪些依赖,并且这些依赖有没有安全问题,则开发者不需要等到上线前的安全检查才知道自己引入了错误的依赖。

这里写图片描述

这里我们解决了开发人员这一端的问题,当然我们通过预防措施,知道如何避免引入问题,但如果安全问题一旦发生,我们第一时间需要控制风险范围,比如影响了哪些产品线,部署到了哪些环境,这都是相当棘手的问题。

在容器交付的时代,我们的很多内容都被打成容器镜像层,使得线上运行超过90%的内容并发企业开发者写的代码,排查起来更是难上加难。所以,急需一种跨语言依赖分析工具,这时候市场上常用工具都无能为力。

这里写图片描述

JFrog Xray 很好地解决了这个问题,提供了安全漏洞传递路径的清晰图谱,同时也提供了影响范围的可视化展示,这种分析支持不同语言之间的依赖分析,使得安全分析全面可靠,可以一举扭转安全管控的被动局面,使得安全管控可以有的放矢。

这里写图片描述

到此为止,我们确实实现了由被动为主动,且可以很轻松地知道风险传递路径和影响范围,但这还是需要较大的人工工作量,可否在上线过程中自动化地扫描,并根据结果决定是否继续上线呢?这样就可以将人解放出来,实现真正的自动化,答案自然是可以的。

这里写图片描述

在这里我们唯一要做的就是确定好关注的对象(构建或者制品),关注什么问题(漏洞级别),问题发生之后的响应策略,比如禁止下载、阻断上线、发送邮件,甚至自定义响应事件。

这里写图片描述

所以,从这里我们可以看出,安全和持续发布完全可以结合在一块,通过整合流程,实现自动化安全发布。人发挥决策优势,制订规则给系统,系统则按照规则去执行,最大限度地减少人为干预。

这里写图片描述

总结


第三方安全威胁日趋严重的趋势下,如何从被动局面中解脱出来,一直是大家苦苦寻找的出路。Xray 提供了正确的思路,并且形成了产品化的实践,这个思路给大家带来了希望。

猜你喜欢

转载自blog.csdn.net/afandaafandaafanda/article/details/82229394