發(fā)現(xiàn)一款牛逼的 IDEA 插件:檢測代碼漏洞,一鍵修復!

本插件作為Java項目靜態(tài)代碼安全審計工具,側(cè)重于在編碼過程中發(fā)現(xiàn)項目潛在的安全風險,并提供一鍵修復能力。
本插件利用IDEA原生Inspection機制檢查項目,自動檢查當前活躍窗口的活躍文件,檢查速度快,占用資源少。
插件提供的規(guī)則名稱均以"Momo"開頭。
版本支持
Intellij IDEA ( Community / Ultimate ) ?>= 2017.3
IDEA 香是香,可能你會說用它要收費,其實它也有開源的社區(qū)版本,收費的專業(yè)版也很容易申請到激活碼,關注公眾號Java技術棧,回復:IDEA,可以閱讀我分享過的獲取正版 IDEA 激活碼的教程,很多粉絲都反饋說輕松得到了,感興趣的都可以去申請,不能太容易了。
安裝使用
IDEA插件市場搜索"immomo"安裝。

效果展示
演示一:XXE漏洞發(fā)現(xiàn)與一鍵修復

演示二:Mybatis XML Mapper SQL注入漏洞發(fā)現(xiàn)與一鍵修復

插件規(guī)則
| 編號 | 規(guī)則名稱 | 修復建議 | 一鍵修復 |
|---|---|---|---|
| 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 | 固定的隨機數(shù)種子風險 | 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 | 不安全的偽隨機數(shù)生成器 | 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}
????????????????????????????└──...
腳手架
#?新增檢查規(guī)則
>?python?script/addInspection.py
#?刪除檢查規(guī)則
>?python?script/deleteInspection.py
單元測試
>?./gradlew?:test
預發(fā)布打包
PLUGIN_BAN_CONST=true ./gradlew --no-daemon clean build -PMOMO_CODE_SEC_INSPECTOR_ENV=pre build/distributions/*.zip 為待發(fā)布插件
預發(fā)布情況下,插件上報地址寫于src/main/resources/properties/pre.properties
發(fā)布打包
PLUGIN_BAN_CONST=true ./gradlew --no-daemon clean build -PMOMO_CODE_SEC_INSPECTOR_ENV=prod build/distributions/*.zip 為待發(fā)布插件
正式發(fā)布情況下,插件上報地址寫于src/main/resources/properties/prod.properties
注意事項
分支命名規(guī)則:
以版本號命名的分支,原則上代表支持的idea版本下限。
如branch為2018.3代表當前分支支持版本范圍是>=2018.3 (或說from 183.* to *)。
插件具體支持idea版本范圍見gradle.properties中idea_since_build與idea_until_build部分。
插件版本號命名規(guī)則:
原則上,插件版本號以支持的idea版本下限為大版本編號。
如插件當前版本為x.1,x為開發(fā)時所用IDEA版本編號,.1為插件發(fā)布版本。
需要注意的是,因IDEA更新機制問題,插件新版本號只能向上增長。
具體見gradle.properties的plugin_version字段。
版本號對應關系
| 分支名 | 插件版本 | IDEA版本 |
|---|---|---|
| 2018.3 | 193 | 2018.3.* <= x |
| 2017.3 | 173 | 2017.3.* <= x <= 2018.2.* |
JetBrains Plugins Marketplace 版本
發(fā)布到插件市場的版本不支持漏洞上報功能。
發(fā)布到插件市場的版本不支持白名單簽名下發(fā)功能。
開源地址:https://gitee.com/mirrors/momo-code-sec-inspector-java






關注Java技術??锤喔韶?/strong>


