背景
某个项目的预演环境总是过一段时间就宕机,所有服务都响应超时。经过排查发现是kafka停止运行导致网关卡死,从而所有请求都无法被处理。然后谷歌查了一下发现,这是因为kafka运行在windows平台的一个漏洞,因为未能正常关闭打开的日志文件导致的。网上也有关于这个漏洞的报告以及解决漏洞的合入记录。修改方法也很简单,先下载当前使用的kafka版本源码,根据合入记录把源码修改一下,然后重新打包放到服务器上面,替换掉之前的包再运行即可。但有个问题,我这么操作合规么?
第三方开源软件
项目中肯定会使用很多开源软件,大多情况下都是使用maven进行依赖管理,也有些情况会直接把开源软件的源码复制到项目中,和项目一起编译。少部分情况下会将开源软件源码下载下来,然后编译成包,然后再和项目一起运行。
识别漏洞是否有影响
如果某个时间,官方发布了一个CVE漏洞,那如何确定此漏洞是否会对项目产生影响?针对上述三种情况,识别出风险的难易程度是不同的。
首先是对于使用maven管理jar包的情况,可以非常简单的知道当前使用的版本,再和漏洞影响版本做对比即可确定是否对当前系统有影响。如果是把源代码直接放在项目中的这种使用情况,这就非常棘手了。因为不太容易确定使用的开源软件版本,甚至如果当时的开发走了,都无法确定系统中使用了哪些开源软件,哪些代码是自研的,哪些是第三方的代码。</