MOMO CODE SEC INSPECTOR
本插件作为Java项目静态代码安全审计工具,侧重于在编码过程中发现项目潜在的安全风险,并提供一键修复能力。
本插件利用IDEA原生Inspection机制检查项目,自动检查当前活跃窗口的活跃文件,检查速度快,占用资源少。
插件提供的规则名称均以"Momo"开头。
目录
版本支持
Intellij IDEA ( Community / Ultimate ) >= 2018.3
已停止对2017.*的支持
安装使用
IDEA插件市场安装
IDEA插件市场搜索"immomo"安装。
使用:方法一
该插件会在您编码过程中自动扫描当前编辑的代码,并实时提醒安全风险。
使用:方法二
IDEA 提供Inspect Code
功能支持对整个项目/指定范围文件进行自定义规则的扫描。
效果展示
演示一: XXE漏洞发现与一键修复
演示二: Mybatis XML Mapper SQL注入漏洞发现与一键修复
插件规则
编号 | 规则名称 | 修复建议 | 一键修复 |
---|---|---|---|
1001 | 多项式拼接型SQL注入漏洞 | T | |
1002 | 占位符拼接型SQL注入漏洞 | T | |
1003 | Mybatis注解SQL注入漏洞 | T | T |
1004 | Mybatis XML SQL注入漏洞 | T | T |
1005 | RegexDos风险 | T | T |
1006 | Jackson反序列化风险 | T | T |
1007 | Fastjson反序列化风险 | T | T |
1008 | Netty响应拆分攻击 | T | T |
1009 | 固定的随机数种子风险 | T | T |
1010 | XXE漏洞 | T | T |
1011 | XStream反序列化风险 | T | T |
1014 | 脆弱的消息摘要算法 | T | |
1015 | 过时的加密标准 | T | |
1016 | XMLDecoder反序列化风险 | T | |
1017 | LDAP反序列化风险 | T | T |
1018 | 宽泛的CORS Allowed Origin设置 | T | |
1019 | SpringSecurity关闭Debug模式 | T | T |
1020 | 硬编码凭证风险 | T | |
1021 | "@RequestMapping" 方法应当为 "public" | T | T |
1022 | Spring 会话固定攻击风险 | T | T |
1023 | 不安全的伪随机数生成器 | T | T |
1024 | OpenSAML2 认证绕过风险 | T | T |
1025 | IP地址硬编码 | 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
│ │ └── {InspectionName}Test.java
│ └── xml
│ └── rule
│ └── momosecurity
│ └── {InspectionName}Test.java
├── resources
└── testData
└── lang
├── java
│ └── rule
│ └── momosecurity
│ └── {InspectionName}
│ └──...
└── xml
└── rule
└── momosecurity
└── {InspectionName}
└──...
脚手架
# 新增检查规则
> python script/addInspection.py
# 删除检查规则
> python script/deleteInspection.py
单元测试
> ./gradlew :test
预发布打包
- ./gradlew --no-daemon clean build -PMOMO_CODE_SEC_INSPECTOR_ENV=pre
- build/distributions/*.zip 为待发布插件
发布打包
- ./gradlew --no-daemon clean build -PMOMO_CODE_SEC_INSPECTOR_ENV=prod
- build/distributions/*.zip 为待发布插件
注意事项
- 分支命名规则:
以版本号命名的分支,原则上代表支持的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.3 | 193 | 2018.3.* <= x |
2017.3 | 173 | 2017.3.* <= x <= 2018.2.* |
关于我们
陌陌安全致力于以务实的工作保障陌陌旗下所有产品及亿万用户的信息安全,以开放的心态拥抱信息安全机构、团队与个人之间的共赢协作,以自由的氛围和丰富的资源支撑优秀同学的个人发展与职业成长。
Website:https://security.immomo.com
WeChat: