checkmarx/2ms 是由Checkmarx开发的开源CLI工具,用于识别系统中以未加密文本形式存储的敏感数据,如密钥、认证令牌和密码。该工具支持扫描内部通信平台(Slack、***)、内容管理系统(Confluence、Paligo)和源代码存储位置(Git仓库、本地目录)。
此应用程序采用Go语言编写,基于gitleaks框架构建。
该工具通过一系列规则检查内容,旨在识别各种敏感项,如AWS访问令牌、Bitbucket客户端ID、GitHub PAT等。完整规则列表参见docs/list-of-rules.md。
此外,该工具还整合了基于通用漏洞评分系统(CVSS)的评分机制,帮助优先排序修复工作。
以下部分介绍如何通过以下方法安装2ms:
我们将2ms的容器镜像发布到checkmarx/2ms。
要从Docker容器运行2ms,请使用以下命令:
docker run checkmarx/2ms
您还可以使用-v标志挂载本地目录,语法如下:-v <本地目录路径>:<容器目录路径>
示例:
bashdocker run -v /home/user/workspace/git-repo:/repo checkmarx/2ms git /repo
git命令,需要将Git仓库挂载到容器内的/repo目录以下是创建GitHub Action的模板,该Action从Docker镜像运行2ms以扫描GitHub仓库。
注意: 确保在actions/checkout步骤中通过设置fetch-depth: 0来获取完整历史记录
yamlname: Pipeline Example With 2MS on: pull_request: workflow_dispatch: push: branches: [main] jobs: test: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 with: # 2ms需要可见所有提交历史 fetch-depth: 0 # ... - name: Run 2ms Scan run: docker run -v $(pwd):/repo checkmarx/2ms:2.8.1 git /repo
要在Azure DevOps Pipeline中使用2ms,请创建新管道(查看本教程了解Azure DevOps Pipelines入门)。然后,使用以下模板创建azure-pipelines.yml文件来运行2ms:
yamltrigger: - master pool: vmImage: ubuntu-latest steps: - script: docker run -v $(pwd):/repo checkmarx/2ms:2.8.1 git /repo displayName: Run 2ms
2ms具有用于扫描每个支持平台的专用命令。要运行扫描,您需要输入要扫描的平台的命令,以及与该平台相关的所有参数。扫描命令参数用于身份验证以及提供有关将要扫描的位置的详细信息。这些参数因平台而异。此外,您可以添加全局标志来自定义扫描配置。 扫描命令的基本结构是:
text2ms <扫描命令> [扫描命令参数] [全局标志]
扫描命令参数和全局标志可以作为扫描命令中的标志传递,也可以通过配置文件传递。
以下部分描述用于扫描每个支持平台的参数。
扫描本地Git仓库
text2ms git <Git仓库本地路径> [标志]
| 标志 | 类型 | 默认值 | 描述 |
|---|---|---|---|
--all-branches | - | false - 仅当前检出分支 | 扫描所有分支 |
--depth | int | 无限制 | 限制从HEAD扫描的历史提交数量 |
--base-commit | string | - | 基础提交,用于扫描基础提交和HEAD之间的提交 |
例如
bashgit clone [***] cd my-repo 2ms git .
使用Docker运行示例:
bashdocker run -v $(pwd):/repo checkmarx/2ms git /repo
扫描本地目录
bash2ms filesystem --path PATH [标志]
| 标志 | 类型 | 默认值 | 描述 |
|---|---|---|---|
--path | string | - | 本地目录路径 |
--project-name | string | - | 用于区分不同文件系统扫描的项目名称 |
--ignore-pattern | strings | - | 要忽略的模式 |
使用Docker运行示例:
bashdocker run -v /path/to/local/directory:/scan checkmarx/2ms filesystem --path /scan
下表描述了可与任何扫描命令一起使用的全局标志。
| 标志 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| --config | string | 配置文件路径 | |
| -h, --help | string | 2ms命令帮助 | |
| --ignore-on-exit | None | 定义应忽略哪种非零退出代码。选项包括:all、results、errors、none。例如,如果设置为'results',则只有引擎错误会使2ms退出代码不同于0。 | |
| --log-level | string | info | 返回的日志类型。选项包括:trace、debug、info、warn、error、fatal、none |
| --report-path | strings | 生成报告文件的路径。输出格式由文件扩展名确定(.json、.yaml、.sarif) | |
| --stdout-format | string | yaml | 标准输出格式,可用格式:json、yaml、sarif |

manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务