腾讯云代码分析腾讯云代码分析
指南
API
  • AI 能力概述
  • AI 修复建议
  • AI 问题审计
  • AI 分析工具
  • IDE

    • Visual Studio Code TCA 插件
    • JetBrains IDEs TCA 插件
  • CNB

    • CNB TCA 插件
    • CNB TCA 徽章
  • Jenkins

    • Jenkins TCA 插件
  • MCP

    • TCA MCP 服务器
  • 工具概述
  • TCA-Armory-C2
  • TCA-Armory-R
  • TCA-Armory-Xcheck
  • RegexScan
  • 深入

    • 内网仓库分析
    • API 触发分析
    • 分析速度优化
    • 问题检出率提升
  • 其他

    • 问题忽略方式
立即体验
  • 服务协议
  • 隐私协议
  • 简体中文
  • English
指南
API
  • AI 能力概述
  • AI 修复建议
  • AI 问题审计
  • AI 分析工具
  • IDE

    • Visual Studio Code TCA 插件
    • JetBrains IDEs TCA 插件
  • CNB

    • CNB TCA 插件
    • CNB TCA 徽章
  • Jenkins

    • Jenkins TCA 插件
  • MCP

    • TCA MCP 服务器
  • 工具概述
  • TCA-Armory-C2
  • TCA-Armory-R
  • TCA-Armory-Xcheck
  • RegexScan
  • 深入

    • 内网仓库分析
    • API 触发分析
    • 分析速度优化
    • 问题检出率提升
  • 其他

    • 问题忽略方式
立即体验
  • 服务协议
  • 隐私协议
  • 简体中文
  • English
  • 工具

    • 工具概述
    • TCA-Armory-C2
    • TCA-Armory-R
    • TCA-Armory-Xcheck
    • RegexScan

TCA-Armory-R

工具介绍

TCA-Armory-R 是 TCA 自研商业工具,是一款增强正则匹配工具,通过正则规则来匹配检出项目中的文件或代码问题。

工具支持 Go 正则语法 Regexp ,并兼容.NET 正则引擎 Regexp2(支持零宽断言等正则表达式)。

自定义规则自定义框架适配
✅❌

正则工具对比

相较于 RegexScan、RegexFileScan 两款自研非商业工具,TCA-Armory-R 工具:

  • 扫描速度更快,平均减少 60% 的耗时。

  • 单个工具即可完成文件名称和文件内容的检查。

  • 单条规则内支持多条正则表达式。

  • 支持正则过滤。

  • 支持匹配分组和熵检测。

自定义规则

适用场景

  • 检测项目中的文件名,比如漏洞文件 log4j-core-2.10.1.jar

  • 检测代码文件中的文本内容,比如高危函数 vsscanf

  • 检测配置文件中的文本内容,比如账号密码明文

以下是自定义规则流程:

  1. 点击添加规则

    访问 TCA 平台工具管理页面,找到 TCA-Armory-R 工具并进入自定义规则列表页,点击添加规则按钮。

  2. 填写规则信息

    按业务需求设计规则并配置规则信息,配置完毕后点击确认按钮,完成规则创建。

    需根据规则参数配置说明设计规则,参见:规则参数配置说明。

  3. 使用自定义规则

    进入团队/项目分析方案,在分析方案规则配置中点击添加规则按钮,搜索并选中该规则,完成规则添加。

规则参数配置说明

规则参数字段:

  • [必选] regex 参数 :用于指定扫描的正则表达式。例如:regex=((ghp|gho|ghu|ghs)_[0-9a-zA-Z]{36})。

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

  • [必选] msg 参数:用于自定义提示信息,例如:msg = 函数方法 %s 已经废弃,请使用 xxx 方法。

    • 如果正则表达式(regex)中定义了捕获组(group,即使用 () 括起来的部分),则 msg 中的 %s 会按顺序依次替换为这些捕获组匹配的内容。

    • 如果正则表达式未定义捕获组(group),则 msg 中最多只能包含一个 %s,并将替换为整个正则匹配到的字符串。

    • 如果 msg 中不包含 %s,则会直接完整显示该信息。

    • 如果未提供 msg 参数,将使用默认提示:发现不规范代码:%s(建议根据具体场景自定义提示信息,避免默认描述过于笼统)。

  • [可选] regex{N} 参数:需已有 regex 参数,用于扩展扫描的正则表达式,其中 N >= 1,例如:regex1=EAAAACZAVC6ygB[0-9A-Za-z]+、regex2=EAAAAZAw4[0-9A-Za-z]+。

    regex{N} 和 regex 参数的表达式均为或关系。

  • [可选] regex_not 参数:用于指定过滤的正则表达式,例如:regex_not=(?i)example。

    用于对 regex{N} 和 regex 正则匹配的字符串进行过滤,如果匹配则过滤该结果。

  • [可选] regex_not{N} 参数,需已有 regex_not 参数,用于扩展过滤的正则表达式,例如:regex_not1=(?i)test、regex_not2=(?i)fake。

    regex_not{N} 和 regex_not 参数的表达式均为或关系。

  • (可选) match_group 参数:用于指定正则匹配的分组,数值不能大于正则匹配分组数,例如:regex=(aws_account_id)\s{0,50}(:|=>|=)\s{0,50}([0-9]{12}),match_group=3,则匹配到第 3 个分组([0-9]{12})。

  • (可选) entropy 参数:用于指定正则匹配结果的最小信息熵,例如:entropy=3,熵不大于 3 的匹配结果将被过滤。

    • 信息熵:熵(信息论) 可用于敏感信息(密钥、token)的检测,可以理解为字符串的混乱程度,字符越随机,熵越大。因此,设置合适的熵,可以过滤掉一些误报或者人为测试用例。
  • [可选] ignore_comment 参数:用于指定是否忽略注释代码,可选值:True、true、False、false,默认 False。例如:ignore_comment=True。

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

  • [可选] include 参数:用于指定分析的文件范围,使用 unix 的文件匹配格式(通配符格式),多项使用英文分号 ; 分隔。例如:include=path/to/dir;path/to/\*.cpp。

  • [可选] exclude 参数:用于指定不分析的文件范围。格式同 include 参数。

提示

include、exclude 参数采用 Glob-Style 的匹配模式,除了 ** 用来匹配零或多个目录,本工具会默认匹配前后目录,如:

  • exclude=*.py:会忽略诸如 main.py、src/main.py、main.py/install.sh 等文件。

  • exclude=tests:会忽略诸如 tests/test.py、a/tests/b/test.py 等文件。

  • include=main.*:会只扫描诸如 src/main.py、app/main.go 等文件。

  • include=src + exclude=src/lib:则会只扫描诸如 src/main.py、src/project/proj.py;忽略诸如 src/lib/lib.py、src/lib/package/pack.js 等文件。

规则示例:

用于检测项目代码中是否存在明文的 github token,是则会检出风险。

regex=((ghp|gho|ghu|ghs)_[0-9a-zA-Z]{36})
msg=found github token: %s
ignore_comment=false
exclude=tests/*
match_group=1
entropy=3.5

环境变量参数

  • REGEXSCANNER_ALL:默认工具会限制扫描文件的后缀,只会扫描通用的后缀文件,如果需要扫描所有文件,需要在分析方案添加环境变量:REGEXSCANNER_ALL=true。以下是默认会扫的文件后缀清单:

    CPP_EXT = ('.c', '.cpp', '.h', '.hpp', '.m', '.mm', '.swift', '.go', '.cxx', '.cc', '.cs', '.json', '.proto', '.pch', '.mod')
    HTML_EXT = ('.html', '.htm')
    XML_EXT = ('.xml', '.vcproj', '.vcxproj')
    JAVA_EXT = ('.java', '.kt')
    LUA_EXT = ('.lua',)
    PY_EXT = ('.py',)
    JS_EXT = ('.js', '.jsbundle', '.jsx', '.ts', '.tsx', '.vue', '.css')
    PHP_EXT = ('.php',)
    RUBY_EXT = ('.rb',)
    RUST_EXT = ('.rs',)
    SCALA_EXT = ('.scala',)
    SQL_EXT = ('.sql',)
    DART_EXT = ('.dart',)
    YAML_EXT = ('.yml', '.yaml', '.toml', '.conf', '.properties', '.sh')
    MARKDOWN_EXT = ('.md',)
    DOCKFILE_EXT = ('dockerfile',)
    NPMRC_EXT = ('.npmrc',)
    INI_EXT = ('.ini',)
    OTHER_EXT = ('.tpc', '.idl', '.txt', '.gradle')
    
最近更新时间: 2026/3/6 17:47
贡献者: nickctang
上一页
TCA-Armory-C2
下一页
TCA-Armory-Xcheck