静态代码分析:开发工具中的安全检查插件(Findbugs等)

2024-06-13 367 0

近 期 使 用 和 研 究 了 几 个 常 用 的 代 码 安 全 审 计 的 I D E 开 发 工 具 的 插 件:

Findbugs

Findbugs是一个静态分析工具,它检查类或者JAR 文件,将字节码与一组缺陷模式进行对比以发现可能的问题。

基于字节码分析,大量使用数据流分析技术,侧重运行时错误检测,如空指针引用等

Findbugs自带检测器,其中有60余种Bad practice,80余种Correctness,1种 Internationalization,12种Malicious code vulnerability,27种Multithreaded correctness,23种Performance,43种Dodgy。

我们还可以自己配置检查规则(做哪些检查,不做哪些检查),也可以自己来实现独有的校验规则(用户自定义特定的bug模式需要继承它的接口,编写自己的校验类,属于高级技巧)。

SpotBugs

SpotBugs是Findbugs的继任者(Findbugs已经不再维护),用于对Java代码进行静态分析,查找相关的漏洞,SpotBugs比Findbugs拥有更多的校验规则。

SpotBugs 需要当前的JDK环境为 1.8以上,但可以对1.0~1.9的代码来进行检查。SpotBugs是对.class文件进行扫描的,所以工程必须成功完成编译并生成.class文件。可以通过如下方式使用Spotbugs:Ant、Maven、Gradle、Eclipse

SpotBugs是可扩展的,可以通过插件添加新的检测器

spotbugs主要包括10大类bug

静态代码分析:开发工具中的安全检查插件(Findbugs等)插图

目前SpotBugs 3.1.3 自带检测器,其中有90余种Bad practice,155余种Correctness,9种Experimental, 2种 Internationalization,17种Malicious code vulnerability,46种Multithreaded correctness,4种 Bogus random noise,37种Performance,11种 Security,87种Dodgy。

1、Bad practice(90余种)不良的实践,违反常识性的或者必要的代码惯例,比如重写了equals却没有重写hashcode。

2、Correctness (150余种) 此处的代码有可能在运行时导致错误,与预期不符,比如空指针错误。

3、Experimental(9种)spotbugs在此处不适用,大概是匹配模式不太适用于此处。

4、Internationalization(2种)原文是:code flaws having to do with internationalization and locale,没有遇到过类似的错误。

5、Malicious code vulnerability(17种)代码具有被恶意代码攻击的风险。比如返回一个可变类型引用并保存在对象字段中。

6、Multithreaded correctness(46种)线程安全,比如可能造成死锁的代码。

7、Bogus random noise(4种)并不是软件中的实际错误。

8、Performance(37种)性能不好的代码,比如在迭代中使用“+”连接字符串。

9、Security(11种)使用了不安全的外部输入,可能导致远程控制的漏洞。

10、Dodgy(87种)导致自身混乱的代码

可以提升扫描效率,不进行所有规则的扫描,重点选择top10关注的规则进行分析,设置如下:

静态代码分析:开发工具中的安全检查插件(Findbugs等)插图1

还可以添加插件,

如Find Security Bugs 是SpotsBug的插件,

他主要用来做web和android应用的代码安全测试。目前可以检测出 141 种不同类型的安全漏洞。它支持大量的使用主流的框架和库的代码检测,如包括 Spring-MVC,Struts,Tapestry等,并可以与 IDE 集成,可用于 Eclipse,IntelliJ,Android Studio 和 NetBeans 中的 findbug并提供命令行接口以便用于 maven 和 ant,支持与 Jenkins 和 SonarQube 等系统进行持续集成。针对检测同的漏洞进行了 OWASP TOP 10 和 CWE 覆盖分类并提供了修复参考。

静态代码分析:开发工具中的安全检查插件(Findbugs等)插图2

常用的安全检测项如下图所示,我们只需要在IDE中配置的对应列进行匹配勾选即可。

静态代码分析:开发工具中的安全检查插件(Findbugs等)插图3

SonarLint

更偏代码质量方面,但是也会包含一些代码安全方面的规则

SonarLint 是一个免费的开源IDE 扩展,可识别并帮助您在编写代码时解决质量和安全问题。像拼写检查器一样,SonarLint 会显示缺陷并提供实时反馈和清晰的修复指导,以便从一开始就提供干净的代码。

可以直接 ctrl +shift+s对当前文件扫描质量
或者右键文件夹对整个包或者模块项目全部质量扫描

静态代码分析:开发工具中的安全检查插件(Findbugs等)插图4

在扫描过后下面会有提示
像下面这些头部显示的图标就是有问题有严重的有不严重的,bug检测出来是一个小虫,如果是漏洞问题会显示一个锁。

静态代码分析:开发工具中的安全检查插件(Findbugs等)插图5

也选择和禁用某些规则:

静态代码分析:开发工具中的安全检查插件(Findbugs等)插图6


4A评测 - 免责申明

本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。

不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。

本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!

程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。

侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)

相关文章

webpack打包站点,js文件名批量获取思路
加密对抗靶场enctypt——labs通关
【论文速读】| 注意力是实现基于大语言模型的代码漏洞定位的关键
蓝队技术——Sysmon识别检测宏病毒
内网渗透学习|powershell上线cs
LLM attack中的API调用安全问题及靶场实践

发布评论