前言
是否有在开发完项目发布以后才被告知你的项目代码存在安全问题,还要回去重温代码逻辑,重新修改发布,是不是特别不想做这一件重复劳动的事情?
这边给大家介绍一款可在本地使用的代码安全扫描插件,方便在开发阶段自动化安全检查,降低漏洞修复时间和减少漏洞出现的概率。
插件简介
插件介绍:Find-Sec-Bugs 是一款本地 bug 扫描插件 “FindBugs-IDEA” 的 Java 安全漏洞规则扩展库,它支持在多种主流 IDE 环境进行安装:Eclipse, IntelliJ, Android Studio 和 NetBeans。
扫描范围:只扫描 Java 代码,支持主流的 Java 开发框架,比如 Spring-MVC, Struts 等。
扫描漏洞类型:通过扫描源代码,能够发现128种不同的安全漏洞类型,关于漏洞类型请参考:https://find-sec-bugs.github.io/bugs.htm。
插件安装扫描配置介绍
IntelliJ IDEA 配置介绍
1)版本需求:IntelliJ IDEA 13.0或以上(16年以后发布的版本基本都支持)
2)准备工作:IntelliJ IDEA:https://www.jetbrains.com/idea/;
FindBugs-IDEA 安装包:https://plugins.jetbrains.com/plugin/3847-findbugs-idea;
Find-Sec-Bugs 安装包:http://find-sec-bugs.github.io/。
插件安装
演示版本:IntelliJ IDEA 2018.1.3(Community Edition)
IntelliJ 安装 FindBugs-IDEA 插件步骤:
“File” -> “Settings” -> “Plugins”.
插件安装方式有在线和离线两种。
在线安装:直接在 “Plugins” 搜索栏输入“Findbugs” ,点击 “Search in repositories”,选中 “Findbugs-IDEA” 后点击 Install:
离线安装:若已经下载了插件压缩文件可在 “Plugins” 窗口点击 “Install plugin from disk” 选择离线安装。
注意1:FindBugs-IDEA 安装完成,需要重启后才可使用。
注意2:FindBugs-IDEA 只针对代码规范进行扫描,规则库内缺乏安全漏洞的规则,因此需要添加安全漏洞规则库 “Find-Sec-Bugs。
接下来介绍下漏洞规则库的添加方法。
添加漏洞规则库
点击 “File” -> “Settings” 会发现 “Settings” 面板新增了 “FindBugs-IDEA” 选项。
选择 “FindBugs-IDEA” 选项即可在 “Plugins” 内添加相应的扫描规则库,方法同上,在这边添加安全漏洞规则库 “Find-Sec-Bugs”:
未下载的在此处选择在线安装:
已下载jar包的可以在此处选择本地安装:
扫描配置
“File” -> “Settings” -> “FindBugs-IDEA” -> “Report”.
可根据需求选取要扫描的相关主题,风险警告和准确率,如图配置选择进行安全漏洞扫描。
我们这里关注安全类型的 bug,所以勾选 “Security” 选项。默认报告配置最低风险警告(Minimum rank)是20,准确率(Minimum confidence)是 Medium。
开始源码扫描
在项目目录右键会发现多了一个 “FindBugs” 选项,可以选择分析某个模块或者整个项目。选择如下所示选项后便开始进行安全扫描:
注意:第一次进行扫描时 IntelliJ 会先对项目进行编译和检测依赖包,编译完成后需要再次运行才会进行真正的扫描。
扫描结果
扫描完成后 “FindBugs-IDEA” 会显示相应结果,选择新增安全类相关内容其中一个即可在中间窗口查看问题代码以及对应文章,右侧窗口会显示对应漏洞解释,解决方案和风险程度。
Eclipse 配置介绍
1)版本需求:Eclipse 3.3 以上的版本,且安装 JRE/JDK 1.5 以上版本。
2)准备工作:Eclipse:https://www.eclipse.org;
FindBugs-IDEA 安装包:http://findbugs.sourceforge.net/downloads.html;
Find-Sec-Bugs 安装包:http://find-sec-bugs.github.io/;
插件安装
演示版本: Eclipse Oxygen.3a Release (4.7.3a)
插件安装步骤:“Help” -> “Eclipse Marketplace” -> 搜索 “FindBugs-IDEA” 插件。
插件安装方式有在线和离线两种,若已经下载了插件压缩包,可将压缩包解压至 Eclipse 安装目录下的 Plugin 文件夹内。
注意1:FindBugs(新版本已改名为SpotBugs)安装完成,重启后即可使用。
注意2:FindBugs 只针对代码规范进行扫描,规则库内缺乏安全漏洞的规则,因此需要添加安全漏洞规则库 “Find-Sec-Bugs”。
“Window” -> “Preferences”,会发现 “Preferences” 面板新增了 “FindBugs” 选项。
“FindBugs” -> “Plugins and misc. Settings” -> “Add”;添加相应的扫描规则库。
本文添加了安全漏洞规则库 “Find-Sec-Bugs”:
“Window” -> “Preferences” -> “FindBugs” -> “Reporter Configuration”;可根据需求选取要扫描的相关主题,风险警告和可信度。
如图配置选择进行安全漏洞扫描,默认配置最低风险警告是15,最低可信度为Medium。配置好以后即可对源码开始进行安全扫描。
开始源码扫描
选中需要扫描的项目右键选择:“Find Bugs” -> “Find Bugs”;则开始对项目进行安全扫描。
扫描进度将在窗口右下角显示:
扫描结果
点击 “Bug Explorer” 可看到以可信度和漏洞类型区分的列表树:
双击对应文件,可以定位到具体代码位置:
右键对应文件,点击 “Show Bug Info” 可查看对应的漏洞详情和参考解决方案:
总结
综合分析 Find-Sec-Bugs 插件各有优缺点。
优点:允许开发人员在项目开发上线前进行自检并及时更正,避免上线后的修复流程。可以手动更新规则,提高准确率。
缺点:只支持JAVA适用性较低。扫描原理采用语义分析的方式,项目越大,扫描速度也会随之降低。