trailofbits/mrva

GitHub: trailofbits/mrva

一款命令行优先的 CodeQL 多仓库变体分析工具,支持通过 GitHub API 批量下载数据库并在本地运行查询。

Stars: 10 | Forks: 0

# mrva `mrva` 是一种终端优先的 CodeQL [多仓库变体分析](https://docs.github.com/en/code-security/codeql-for-vs-code/getting-started-with-codeql-for-vs-code/running-codeql-queries-at-scale-with-multi-repository-variant-analysis) 方法。你可以通过 GitHub API 下载现有的 CodeQL 数据库,运行变体分析,并在本地机器上查看所有结果。该工具的灵感来源于 VSCode [CodeQL 扩展](https://github.com/github/vscode-codeql),但它是作为独立的 CLI 工具运行的。 目录: - [安装](#installing) - [使用](#using) - [开发](#developing) - [测试](#testing) - [Linting](#linting) ## 安装 首先,从 [PyPI](https://pypi.org/project/mrva/) 安装 `mrva`: ``` $ python -m pip install mrva $ mrva -h ``` _或者,使用你喜欢的 Python 包安装器,如 `pipx` 或 `uv`。_ ## 使用 `mrva` 具有以下命令树: - `mrva` - `download` - `top` - `org` - `repo` - `query` - `from-file` - `analyze` - `pprint` - `print-ast` (实验性) 使用 `mrva` 通常需要三个步骤: 1. 通过 GitHub API 下载现有的 CodeQL 数据库 2. 针对这些数据库运行 CodeQL 变体分析 3. 查看结果 首先,请确保你的 `$PATH` 中有一个 `codeql` 二进制文件(发布版本在[这里](https://github.com/github/codeql-cli-binaries/releases))。 接下来,创建一个目录来存储 `mrva` 数据: ``` $ mkdir dbs/ ``` 该目录最终将包含 CodeQL 数据库、工具配置、SARIF 结果以及 `mrva` 运行所需的其他信息。 使用 `mrva download` 命令下载 CodeQL 数据库: ``` $ mrva download --token $GITHUB_TOKEN --language ruby dbs/ top --limit 100 ``` 此命令将下载前 100 个 GitHub Ruby 项目(按 star 数量排序)的 CodeQL 数据库。你可以通过指定不同的 `--language`,或使用不同的下载策略(如 `download org` 或 `download repo`)来下载其他数据库。 使用 `mrva analyze` 命令分析已下载的数据库: ``` $ mrva analyze dbs/ /path/to/queries -- --rerun --threads=0 ``` 包含在 `--` 之后的任何标志都会直接传递给 CodeQL 二进制文件。 使用 `mrva pprint` 命令查看分析结果: ``` $ mrva pprint dbs/ ``` 你也可以使用 `pprint` 命令打印原始的 CodeQL SARIF 结果: ``` $ codeql database analyze \ --format sarif-latest \ --sarif-add-file-contents \ --output output.sarif \ -- db/ query.ql $ mrva pprint output.sarif ``` 其中许多命令接受额外的标志来修改其功能。例如,`analyze` 和 `pprint` 接受 `--select` 和 `--ignore` 标志来过滤仓库。使用 `--help` 标志探索给定命令提供的所有功能。 ## 开发 `mrva` 使用 [`poetry`](https://python-poetry.org/) 进行依赖和配置管理。 在继续之前,请使用以下命令安装项目依赖: ``` $ poetry install --with dev ``` ### Linting 使用以下命令对所有项目文件进行 Lint: ``` $ poetry run pre-commit run --all-files ``` ### 测试 使用以下命令运行 Python 测试: ``` $ poetry run pytest --cov ```
标签:CodeQL, GitHub API, Python, SARIF, SAST, 云安全监控, 变种分析, 多仓库分析, 安全评估工具, 数据库下载, 文档结构分析, 无后门, 盲注攻击, 终端工具, 逆向工具, 静态分析