前言:
最近升级了dependency-check到12.1.0,发现初始化漏洞库的时候会出现卡死或者报错的问题,每次测试更新又要等很久,用了几天算是解决了更新出错的问题,下面对12.1.0版本初始化中会出现的问题进行分析和解决
更新卡死:
更新的时候会出现更新到50%左右就会出现卡死,官方也有人提出了这个问题
NVD download not setting read timeout for HTTP5 Client · Issue #7418 · dependency-check/DependencyCheck · GitHub
和我这里出现的问题相同,不过我要好点,到70%多会出现卡死,然后就不动了
抓包看了一下卡死后,程序会进入阻塞,不会在进行下载,分析应该是多次超时后进入等待,没有重新挂起,然后看了下官方的更新解释,估计应该是第三方jar包的问题,直接列出出问题的jar
问题就出现在httpclient5-5.4.2.jar;httpcore5-5.3.3.jar;httpcore5-h2-5.3.3.jar
原因如下,5.4.2版本要求如果 `Connection` 标头已经存在,则不要添加 `Upgrade` 标头(调用者手动管理连接状态),由此由于调用者接管了连接状态,当超时次数过多或其他异常没有处理就会进入等待状态,反应到前端就是卡死不动了
解决办法也很简单,不使用最新版本的,降低版本到如下三个
httpclient5-5.4.1.jar;httpcore5-5.3.2.jar;httpcore5-h2-5.3.1.jar
更新代理问题:
更新完成漏洞库后可能会出现如下漏洞
[ERROR] Failed to initialize the RetireJS repo
org.owasp.dependencycheck.data.update.exception.UpdateException: Failed to initialize the RetireJS repo
这是因为如下地址无法打开,即无法获取到jsrepository.json文件
https://raw.githubusercontent.com/Retirejs/retire.js/master/repository/jsrepository.json
解决办法,科学上网,使用代理访问
--proxyserver 127.0.0.1 --proxyport 7890
或者通过其他渠道下载后放到data文件中
但是直接下载放进去可能不认,最好还是使用代理下载