一款牛逼的IDEA插件:检测代码漏洞

Posted Java小叮当

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一款牛逼的IDEA插件:检测代码漏洞相关的知识,希望对你有一定的参考价值。

前言

本插件作为Java项目静态代码安全审计工具,侧重于在编码过程中发现项目潜在的安全风险,并提供一键修复能力。

本插件利用IDEA原生Inspection机制检查项目,自动检查当前活跃窗口的活跃文件,检查速度快,占用资源少。

插件提供的规则名称均以"Momo"开头。

版本支持

Intellij IDEA ( Community / Ultimate ) >=2017.3

IDEA香是香,可能你会说用它要收费,其实它也有开源的社区版本,收费的专业版也很容易申请到激活码。

安装使用

IDEA插件市场搜索"immomo"安装。

效果展示

演示一:XXE漏洞发现与一键修复

演示二:Mybatis XML Mapper SQL注入漏洞发现与一键修复

插件规则

编号规则名称修复建议一键修复1001多项式拼接型SQL注入漏洞T
1002占位符拼接型SQL注入漏洞T
1003Mybatis注解SQL注入漏洞TT1004Mybatis XML SQL注入漏洞TT1005RegexDos风险TT1006Jackson反序列化风险TT1007Fastjson反序列化风险TT1008Netty响应拆分攻击TT1009固定的随机数种子风险TT1010XXE漏洞TT1011XStream反序列化风险TT1014脆弱的消息摘要算法T
1015过时的加密标准T
1016XMLDecoder反序列化风险T
1017LDAP反序列化风险TT1018宽泛的CORS Allowed Origin设置T
1019SpringSecurity关闭Debug模式TT1020硬编码凭证风险T
1021"@RequestMapping" 方法应当为 "public"TT1022Spring 会话固定攻击风险TT1023不安全的伪随机数生成器TT1024OpenSAML2 认证绕过风险TT1025IP地址硬编码T

项目结构

src
├── main
│   ├── java
│   │   └── com
│   │       └── immomo
│   │           └── momosec
│   │               ├── aspect
│   │               ├── entity
│   │               ├── fix
│   │               ├── lang
│   │               │   ├── java
│   │               │   │   ├── rule
│   │               │   │   │   └── momosecurity
│   │               │   │   │       └── InspectionName.java
│   │               │   │   └── utils
│   │               │   └── xml
│   │               │       └── rule
│   │               │           └── momosecurity
│   │               │               └── InspectionName.java
│   │               └── utils
│   └── resources
│       ├── META-INF
│       │   ├── description.html
│       │   ├── pluginIcon.svg
│       │   └── plugin.xml
│       └── inspectionDescriptions
│           └── InspectionName.html
└── test
    ├── java
    │   └── com
    │       └── immomo
    │           └── momosec
    │               └── lang
    │                   ├── java
    │                   │   ├── fix
    │                   │   └── rule
    │                   │       └── momosecurity
    │                   │           └── InspectionNameTest.java
    │                   └── xml
    │                       └── rule
    │                           └── momosecurity
    │                               └── InspectionNameTest.java
    ├── resources
    └── testData
        └── lang
            ├── java
            │   └── rule
            │       └── momosecurity
            │           └── InspectionName
            │               └──...
            └── xml
                └── rule
                    └── momosecurity
                        └── InspectionName
                            └──...

脚手架

# 新增检查规则
> python script/addInspection.py

# 删除检查规则
> python script/deleteInspection.py

单元测试

> ./gradlew :test

预发布打包

  1. PLUGIN_BAN_CONST=true./gradlew --no-daemon clean build -PMOMO_CODE_SEC_INSPECTOR_ENV=pre
  2. build/distributions/*.zip 为待发布插件

预发布情况下,插件上报地址写于src/main/resources/properties/pre.properties

发布打包

  1. PLUGIN_BAN_CONST=true ./gradlew–no-daemon clean build -PMOMO_CODE_SEC_INSPECTOR_ENV=prod
  2. build/distributions/*.zip 为待发布插件

正式发布情况下,插件上报地址写于src/main/resources/properties/prod.properties

注意事项

  • 分支命名规则:

以版本号命名的分支,原则上代表支持的idea版本下限。

如branch为2018.3代表当前分支支持版本范围是>=2018.3 (或说from 183.* to *)。

插件具体支持idea版本范围见gradle.properties中idea_since_build与idea_until_build部分。

  • 插件版本号命名规则:

原则上,插件版本号以支持的idea版本下限为大版本编号。

如插件当前版本为x.1,x为开发时所用IDEA版本编号,.1为插件发布版本。

需要注意的是,因IDEA更新机制问题,插件新版本号只能向上增长

具体见gradle.properties的plugin_version字段。

  • 版本号对应关系

分支名插件版本IDEA版本2018.31932018.3.* <= x2017.31732017.3.* <= x <= 2018.2.*

  • JetBrains Plugins Marketplace版本

发布到插件市场的版本不支持漏洞上报功能。

发布到插件市场的版本不支持白名单签名下发功能。

开源地址获取方式:扫描下方二维码,备注:csdn

以上是关于一款牛逼的IDEA插件:检测代码漏洞的主要内容,如果未能解决你的问题,请参考以下文章

这五款牛逼的 IDEA 插件,堪称代码质量检查利器!

这五款牛逼的 IDEA 插件,堪称代码质量检查利器!

一款牛逼的多级缓存架构设计方案

又一款牛逼的API敏捷开发工具现世~

又发现一款牛逼的 API 敏捷开发工具

如何从零设计一款牛逼的高并发架构(建议收藏)