cobra

Source Code Security Audit (源代码安全审计)

View on GitHub

Rule Template(规则模板)

<?xml version="1.0" encoding="UTF-8"?>

<cobra document="https://github.com/WhaleShark-Team/cobra">
    <name value="硬编码Token/Key"/>
    <language value="*"/>
    <match mode="regex-only-match"><![CDATA[(?![\d]{32})(?![a-fA-F]{32})([a-f\d]{32}|[A-F\d]{32})]]></match>
    <level value="2"/>
    <test>
        <case assert="true" remark="sha1"><![CDATA["41a6bc4d9a033e1627f448f0b9593f9316d071c1"]]></case>
        <case assert="true" remark="md5 lower"><![CDATA["d042343e49e40f16cb61bd203b0ce756"]]></case>
        <case assert="true" remark="md5 upper"><![CDATA[C787AFE9D9E86A6A6C78ACE99CA778EE]]></case>
        <case assert="false"><![CDATA[please like and subscribe to my]]></case>
        <case assert="false"><![CDATA[A32efC32c79823a2123AA8cbDDd3231c]]></case>
        <case assert="false"><![CDATA[ffffffffffffffffffffffffffffffff]]></case>
        <case assert="false"><![CDATA[01110101001110011101011010101001]]></case>
        <case assert="false"><![CDATA[00000000000000000000000000000000]]></case>
    </test>
    <solution>
        ## 安全风险
        硬编码密码

        ## 修复方案
        将密码抽出统一放在配置文件中,配置文件不放在git中
    </solution>
    <status value="on"/>
    <author name="Feei" email="feei@feei.cn"/>
</cobra>

规则字段规范

字段(英文) 字段(中文) 是否必填 类型 描述 例子
name 规则名称 string 描述规则名称 <name value="Logger敏感信息" />
language 规则语言 string 设置规则针对的开发语言,参见languages <language value="php" />
match 匹配规则1 string 匹配规则1 <match mode="regex-only-match"><![CDATA[regex content]]></match>
match2 匹配规则2 string 匹配规则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 由第一条规则触发的所在行之下,所在文件之内

下一章:规则样例