TCA-Armory-R 使用手册

TCA独立工具TCA-Armory-R,别名RegexScanner,正则匹配工具,支持扫描文件名称和文本内容,支持页面直接自定义创建规则

适用场景

  • 检测项目中的文件名,比如漏洞文件log4j-core-2.10.1.jar
  • 检测代码文件中的文本内容,比如高危函数vsscanf
  • 检测配置文件中的文本内容,比如账号密码明文

对比RegexScan、RegexFileScan

  • 单个工具即可完成文件名和文件内容的检查
  • 扫描速度更快,大概减少60%的耗时
  • 只支持go的正则语法,会比python的少一些

快速接入

以下是接入步骤:

  1. 属于增强分析模块,需要先部署CLS
  2. 在代码分析创建项目,自定义规则包里添加想要进行扫描的TCA-Armory-R规则
  3. 启动分析即可

自定义规则

1. 开放支持自定义规则权限

开放支持自定义规则权限,需平台管理员在管理入口-工具管理中找到TCA-Armory-R工具,并将其权限状态调整为支持自定义规则

规则权限详见自定义规则权限说明

2. 添加规则

进入工具管理入口,进入TCA-Armory-R工具页面,选择上方的“自定义规则”,然后点击“添加规则”:

添加自定义规则

3. 填写规则信息

进入“创建规则”页面,按照需求填写相关信息,完成后,点击页面最后的“确定”按钮提交。

规则示例:

规则扫描场景:扫描代码中的 github token,如果token以明文形式写在源码文件中,会造成隐私泄露,可能造成严重的安全事故。

正则表达式:匹配 github token 字符串,根据github token的一般形式,可以推断出正则表达式 ((ghp|gho|ghu|ghs)_[0-9a-zA-Z]{36})。

TIP

只支持go正则语法: regexpopen in new window

建议先测试好正则表达式是否正确,正则表达式测试网站推荐:http://tool.oschina.net/regex

填写自定义规则

字段解释

规则名称、前端展示名称:建议使用单词首字母大写的格式,如 DetectedGithubToken

规则简述:作为扫描出来到问题标题

规则参数:

  • (1) 参数格式类似ini的格式, 也就是key = value的格式

  • (2) [必选] regex 参数,用于指定扫描的正则表达式, 例如: regex=((ghp|gho|ghu|ghs)_[0-9a-zA-Z]{36})只支持go正则语法: regexpopen in new window。建议先测试好正则表达式是否正确,正则表达式测试网站推荐:http://tool.oschina.net/regexopen in new window

  • (3) [必选] msg 参数,用于展现issue说明, 例如: msg=检测到高危函数%s,建议替换。

    • msg中的“%s”使用regex中的group(用“()"括起来的部分)一一匹配

    • 如果regex没有定义group,则msg最多有一个%s, 并由整个regex匹配的字符串替代

    • 如果msg里没有包含“%s”,则直接显示msg

    • 如果msg没有提供,则会给出默认信息

  • (4) [可选] ignore_comment 参数,用于指定是否忽略注释代码,可选值:True、true、False、false 。例如: ignore_comment=True, 默认是False

  • (5) [可选] file_scan 参数,用于指定是否扫描文件名称,可选值:True、true、False、false 。例如: file_scan=True, 默认是False

  • (6) [可选] include 参数,用于指定只扫描的文件匹配范围,基于相对路径,使用通配符格式,多项使用英文分号(;)隔开。例如: include=src/test;src/main.*;*.cpp

  • (7) [可选] exclude 参数,用于指定不扫描的文件匹配范围,格式同include参数,例如: exclude=tests;*.json

    路径过滤(exclude, include)采用Glob-Style的匹配模式,详见 Go-filepath-Matchopen in new window, 除了 ** 用来匹配零或多个目录,本工具会默认匹配前后目录。举例:

    1. exclude=*.py 会忽略以下文件: main.py, src/main.py, main.py/install.sh
    2. exclude=tests 会忽略以下文件: tests/test.py, a/tests/b/test.py
    3. include=main.* 会只扫描以下文件: src/main.py, app/main.go
    4. include=srcexclude=src/lib 会只扫描以下文件: src/main.py, src/project/proj.py; 忽略以下文件: src/lib/lib.py, src/lib/package/pack.js

4. 将自定义规则添加到项目分析方案中

进入 代码分析 - 分析方案 - 代码检查 - 自定义规则包 - 查看详细规则,添加规则。

点击自定义规则包

添加规则