目前各个企业对于应用的安全越来越重视,而解决应用漏洞的本质是从代码安全抓起。
通常关于代码的安全问题有两类:代码本身的安全问题和代码依赖包存在的安全问题。
对于代码本身的安全问题,我们可以通过静态代码分析工具解决,可以参考文章:使用神器Spotbugs,轻松入门静态代码分析而对于代码依赖包的安全问题是我们这篇文章重点解决的事情,业界通常使用Dependency-Check来检查代码中是否存在任何已知的,公开披露的安全漏洞。
他检查依赖项中是否存在漏洞的原理也跟我们熟知的病毒查杀软件一样,预先定义好目前已知的安全漏洞库,检查依赖包时,发现这些漏洞就会报错,最后定期更新安全漏洞库即可!工具介绍:Dependency-CheckDependency-Check是OWASP(Open WebApplication Security Project)的一个实用开源程序,用于识别项目依赖项并检查是否存在任何已知的,公开披露的漏洞。
目前,已支持Java、.NET、Ruby、Node.js、Python等语言编写的程序,并为C/C++构建系统(autoconf和cmake)提供了有限的支持。
而且该工具还是OWASP Top 10的解决方案的一部分。
NVDDependency-Check依赖NVD漏洞数据库(美国国家通用漏洞数据库)进行依赖漏洞检查(全球信息安全领域著名的漏洞数据库包括中国国家信息安全漏洞库,美国国家信息安全漏洞库NVD,赛门铁克漏洞库等等)官网:使用本地nvd库,具体命令如下:dependency-check.bat--cveUrlModified 本地nvd库的url/nvdcve-1.1-modified.json.gz --cveUrlbase本地nvd库的url/nvdcve-1.1-2020.json.gz--project test -s D:checkjar -oD:report其中–cveUrlModified和–cveUrlModified指定本地NVD库注意,如果执行命令失败,重新执行一次就OK!报告分析生成的报表文件如下图,一般只需关注HighestSeverity 列中的CRITICAL和HIGH级别漏洞,可以看到检测出2个jar包存在高危漏洞。
点击具体jar包,可以看到具体的修复方案,如下所示:报告中的含义是jackson-xc-1.8.3jar是有安全问题的,这个问题在2.8.10和2.9.1版本之前是存在的,所以我们只要把jar包升级到2.9.1版本以上即可修复这个问题!配置Maven插件方式该方式建议开发人员使用,通过maven方式检测依赖包中是否存在安全问题则需要修改较多pom中的内容。
https://search.maven.org/artifact/org.owasp/dependency-check-maven/5.3.2/maven-plugin总结一般来说对于代码依赖包的安全问题是由开发自己测试的,如果我们测试想要介入的话使用命令行方式即可,把需要检查的jar包放到指定的目录中,然后对所有jar包进行整体扫描。
原创不易,如果文章帮到了你,欢迎转发点赞,让更多的朋友受益!