Rule Template(规则模板)

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <cobra document="https://github.com/WhaleShark-Team/cobra">
  3. <name value="硬编码Token/Key"/>
  4. <language value="*"/>
  5. <match mode="regex-only-match"><![CDATA[(?![\d]{32})(?![a-fA-F]{32})([a-f\d]{32}|[A-F\d]{32})]]></match>
  6. <level value="2"/>
  7. <test>
  8. <case assert="true" remark="sha1"><![CDATA["41a6bc4d9a033e1627f448f0b9593f9316d071c1"]]></case>
  9. <case assert="true" remark="md5 lower"><![CDATA["d042343e49e40f16cb61bd203b0ce756"]]></case>
  10. <case assert="true" remark="md5 upper"><![CDATA[C787AFE9D9E86A6A6C78ACE99CA778EE]]></case>
  11. <case assert="false"><![CDATA[please like and subscribe to my]]></case>
  12. <case assert="false"><![CDATA[A32efC32c79823a2123AA8cbDDd3231c]]></case>
  13. <case assert="false"><![CDATA[ffffffffffffffffffffffffffffffff]]></case>
  14. <case assert="false"><![CDATA[01110101001110011101011010101001]]></case>
  15. <case assert="false"><![CDATA[00000000000000000000000000000000]]></case>
  16. </test>
  17. <solution>
  18. ## 安全风险
  19. 硬编码密码
  20. ## 修复方案
  21. 将密码抽出统一放在配置文件中,配置文件不放在git中
  22. </solution>
  23. <status value="on"/>
  24. <author name="Feei" email="feei@feei.cn"/>
  25. </cobra>

规则字段规范

字段(英文)字段(中文)是否必填类型描述例子
name规则名称string描述规则名称<name value="Logger敏感信息" />
language规则语言string设置规则针对的开发语言,参见languages<language value="php" />
match匹配规则1string匹配规则1<match mode="regex-only-match"><![CDATA[regex content]]></match>
match2匹配规则2string匹配规则2<match2 block="in-function-up"><![CDATA[regex content]]></match2>
repair修复规则string匹配到此规则,则不算做漏洞<repair block=""><![CDATA[regex content]]></repair>
level影响等级integer标记该规则扫到的漏洞危害等级,使用数字1-10。<level value="3" />
solution修复方案string该规则扫描的漏洞对应的安全风险修复方案<solution>详细的安全风险和修复方案</solution>
test测试用例case该规则对应的测试用例<test><case assert="true"><![CDATA[测试存在漏洞的代码]]></case><case assert="false"><![CDATA[测试不存在漏洞的代码]]></case></test>
status是否开启boolean是否开启该规则的扫描,使用on/off来标记<status value="1" />
author规则作者attr规则作者的姓名和邮箱<author name="Feei" email="feei@feei.cn" />

核心字段<match>/<match2>/<repair>编写规范

<match> Mode(<match>的规则模式)

用来描述规则类型,只能用在<match>中。

Mode类型默认模式支持语言描述
regex-only-match正则仅匹配默认是此模式,但需要显式的写在规则文件里。以正则的方式进行匹配,匹配到内容则算作漏洞
regex-param-controllable正则参数可控PHP/Java以正则模式进行匹配,匹配出的变量可外部控制则为漏洞
function-param-controllable函数参数可控PHP内容写函数名,将搜索所有该函数的调用,若参数外部可控则为漏洞。
find-extension寻找指定后缀文件找到指定后缀文件则算作漏洞

<match2>/<repair> Block(<match2>/<repair>的匹配区块)

用来描述需要匹配的代码区块位置,只能用在<match2><repair>中。

区块描述
in-current-line由第一条规则触发的所在行
in-function由第一条规则触发的函数体内
in-function-up由第一条规则触发的所在行之上,所在函数体之内
in-function-down由第一条规则触发的所在行之下,所在函数体之内
in-file由第一条规则触发的文件内
in-file-up由第一条规则触发的所在行之上,所在文件之内
in-file-down由第一条规则触发的所在行之下,所在文件之内

下一章:规则样例