开源软件最常见的就是各式各样的漏洞,为了产品的健壮性以及客户安全,我们必须时刻警醒!
1.漏洞扫描与检测
针对开源软件需要经常进行漏洞扫描检测,可以通过一些信息库进行检测,比如:国家信息安全漏洞库或者自己搭建一个类似的漏洞信息库,或者安装对应的插件以及工具进行检测。
2.漏洞处理方案
针对检测出来的漏洞有四种处理方案:
- 网上搜索该软件漏洞触发条件,如果系统不满足该条件,可以暂缓处理或者不处理;
- 版本升级 - 小升级可能有一些东西不兼容,可以进行轻微改动,比如进行某个方法的改造等等;
- 如果是传递依赖进来的,又不需要的,可以进行删除;
- 寻找替换软件或者自研;
3.如何查看漏洞软件依赖情况以及路径?
1. 安装插件Maven Helper
使用Maven Helper查看漏洞软件依赖路径,比如某个工程 的pom文件依赖的itext软件:见下图:
在pom文件点击下方Dependency Analyzer,在右侧展示就是该软件的依赖情况以及路径,详细解释下右侧:2.17版本的itext来自三个地方,最上方的是当前工程主动添加进来的,第二个表示的是由其他工程传递依赖进来的,第三个是由jasperreport6.4.1传递进来的
2. 按照漏洞处理方案2给定的方案进行处理
针对itext软件处理经验分享:
1.首先将其他工程传递依赖进来的和jasperreport6.4.1依赖的itext排除掉exclude,选中右键点击exclude即可;Jump to Source 会跳到该依赖的源码;
2.因为itext我们没有直接使用,是由jasper report底层调用,所以针对itext进行版本升级,需要查询jasper report对应版本是否支持高版本的itext,我们可以通过https://mvnrepository.com/
进行查询:
通过上面的截图可以看到jasperreport6.4.1依赖的itext版本是2.1.7,可以更新的最高版本是5.5.13.3;
而itext最高版本目前是4.2.2,使用率最高的版本是2.1.7,我们尝试将itext版本升级到最高,发现功能不好使!!!
3.步骤2满足条件还得进行验证,我们将itext单独进行升级后,最终发现其实不好使,原因是jasper report虽然依赖了itext,但是没有对itext进行升级维护,而itext版本差异很大,有一些类或者方法都重构或者删掉了;
4.由于jasper report问题导致itext不能进行升级,但是考虑到自研或者寻找替换软件难度大,最终只能搁浅。
版本漏洞解决后,需要验证功能是否受影响,如果功能正常,则本次升级成功。