Reeve-Security/reeve
GitHub: Reeve-Security/reeve
Reeve 是一款本地运行的 AI agent 端点审计工具,通过只读扫描配置文件生成 CycloneDX SBOM 和 AIBOM 证据,帮助安全团队发现并验证 AI 助手的权限、连接和授权情况。
Stars: 0 | Forks: 0
从端点开始审计你的 AI agent。
AI 助手继承了运行它们的用户的权限:本地文件、shell、网络路径、已保存的授权以及连接到内部系统的 MCP server。Reeve 会读取已记录的 AI 工具配置路径,记录已注册的内容,并生成你现有的安全和合规工具可以验证的证据。
开源,在本地运行。没有任何数据离开端点。
- **洞察 AI 层。** 跨越 Claude Desktop / Code / Cowork、Cursor、Codex 以及 macOS、Windows 和 Linux 上其他已记录的交互界面,全面发现 MCP server、connector、extension、其背后的 package、已保存的“始终允许”授权,以及聊天日志中选择性共享的 secret。
- **契合标准。** 每次扫描都会生成 CycloneDX 1.5 SBOM 和 AIBOM sidecar,并可选提供 Rego 策略检查结果和报告,全部采用你的 pipeline 已经可以接入的格式。
- **保持本地化且可验证。** 默认情况下仅读取配置文件,除非你主动选择,否则绝不执行 agent。使用 Sigstore 对其发布版本进行签名,并能够以相同方式对扫描输出进行签名。
## 快速开始
不到一分钟即可安装并运行。以下步骤跳过了签名验证;如果需要先验证二进制文件,请参阅[验证你的下载](#verify-your-download)。
**Linux / macOS。** 使用安装脚本,或下载发布归档文件:
```
curl --proto '=https' --tlsv1.2 -LsSf \
https://github.com/Reeve-Security/reeve/releases/latest/download/aibom-cli-installer.sh | sh
```
不想将脚本通过管道传给你的 shell?请从[最新发布版本](https://github.com/Reeve-Security/reeve/releases/latest)下载 `.tar.xz` 归档文件并解压 `aibom-cli`。
**Windows。** 下载并解压已签名的 zip 压缩包(无需额外工具):
```
$ASSET = "aibom-cli-x86_64-pc-windows-msvc.zip"
Invoke-WebRequest -Uri "https://github.com/Reeve-Security/reeve/releases/latest/download/$ASSET" -OutFile $ASSET
Expand-Archive $ASSET -DestinationPath .\reeve
```
或者在浏览器中从[最新发布版本](https://github.com/Reeve-Security/reeve/releases/latest)下载该 zip 压缩包。
扫描端点(仅读取配置文件;不运行 agent):
```
aibom-cli scan --policy-check --output-dir ./reeve-out --sign-mode fixture
```
默认情况下,Reeve 会扫描你的主目录(home directory)并将结果写入 `./out`;可以使用 `--target` 和 `--output-dir` 来选择不同的路径。如果输出目录不存在,系统会自动创建它,且不会覆盖现有文件。
`--sign-mode fixture` 可确保首次运行时处于离线状态且即时完成:它会写入一个占位符签名包,而不是调用 `cosign`。若需真实的 Sigstore 签名,请在配置了签名身份的环境中使用 `--sign-mode real`(参见[验证你的下载](#verify-your-download))。
在共享机器上,可以将 `--target` 指向 `/Users` 或 `C:\Users` 等父级目录,以便在一次运行中扫描所有下一级的子主目录。Reeve 会检查目标路径下已知的配置路径以及下一级的子主目录,而不会扫描整个磁盘。
将证据转换为可读的报告:
```
aibom-cli report --aibom ./reeve-out/*.aibom.json --format html --output ./reeve-out/report.html
```
`report` 会将一个 AIBOM sidecar 渲染为 HTML。`*.aibom.json` 这个 glob 匹配规则会选择单端点扫描写入的单一 sidecar;如果目录中包含多个文件,请传入确切的文件路径。
若要将多个扫描目录汇总为一个本地队列摘要,请使用 `aibom-cli fleet-report --evidence-dir
`。
## Reeve 生成的内容
每次扫描都会生成一组三个输出文件:
| 文件 | 内容 |
|---|---|
| `.cdx.json` | CycloneDX 1.5 SBOM,适用于你已在运行的供应链扫描器 |
| `.aibom.json` | AIBOM sidecar:结构化的 AI agent 证据(声明与观察到的对比、授权、来源)。当你添加 `--policy-check` 时,它会携带 Rego 策略结论。 |
| `.sigstore.json` 或 `.sigstore.fixture.json` | 用于签名输出的 Sigstore 包,或者在 cosign 不可用时的 fixture 包。使用 `--sign-mode real` 可要求进行真实签名。 |
按需生成,绝非默认行为:
| 输出 | 生成方式 |
|---|---|
| Rego 策略检查结果 | `scan --policy-check`(写入 AIBOM sidecar 中) |
| SARIF(敏感数据检查结果) | `scan --sensitive-data-sarif` |
| HTML 报告 | `aibom-cli report` |
## 验证你的下载
Reeve 的发布归档和安装程序均使用 Sigstore(无密钥 OIDC,Fulcio + Rekor)进行签名。安全扫描器本身就是一种攻击面,因此进行验证可以证明你运行的二进制文件正是 Reeve 在 CI 中构建和签名的完全相同的 artifact,而不是被篡改的副本。
**验证无需任何账户或登录。** 你只需要安装了 [`cosign`](https://docs.sigstore.dev/system_config/installation/)。
对于快速试用,验证是可选的,但在生产环境或整个队列使用之前强烈建议进行验证。
**Linux / macOS:**
```
TAG=v0.3.8
ASSET=aibom-cli-x86_64-unknown-linux-gnu.tar.xz
BASE="https://github.com/Reeve-Security/reeve/releases/download/${TAG}"
curl -LO "${BASE}/${ASSET}"
curl -LO "${BASE}/${ASSET}.bundle"
cosign verify-blob \
--bundle "${ASSET}.bundle" \
--certificate-identity-regexp '^https://github.com/Reeve-Security/reeve/.github/workflows/release.yml@refs/tags/v[0-9]+\.[0-9]+\.[0-9]+.*$' \
--certificate-oidc-issuer "https://token.actions.githubusercontent.com" \
"${ASSET}"
```
**Windows:**
```
$TAG = "v0.3.8"
$ASSET = "aibom-cli-x86_64-pc-windows-msvc.zip"
$BASE = "https://github.com/Reeve-Security/reeve/releases/download/$TAG"
Invoke-WebRequest -Uri "$BASE/$ASSET" -OutFile $ASSET
Invoke-WebRequest -Uri "$BASE/$ASSET.bundle" -OutFile "$ASSET.bundle"
cosign verify-blob `
--bundle "${ASSET}.bundle" `
--certificate-identity-regexp '^https://github.com/Reeve-Security/reeve/.github/workflows/release.yml@refs/tags/v[0-9]+\.[0-9]+\.[0-9]+.*$' `
--certificate-oidc-issuer "https://token.actions.githubusercontent.com" `
$ASSET
```
**验证扫描输出。** 扫描会生成一组文件:CycloneDX BOM、AIBOM sidecar 和签名包。对于生产环境,请使用 `--sign-mode real` 进行扫描,这样当 cosign 不可用时,Reeve 会直接报错,而不是生成 fixture 包。
运行 Reeve 的结构性检查,或使用 `cosign verify-blob` 获取完整的 Fulcio/Rekor 证明:
```
aibom-cli verify ./reeve-out --verify-crypto
```
## 可选的执行与性能分析
执行和行为性能分析需要明确授权,绝非默认行为。标准扫描仅读取配置文件,不会启动任何程序。
```
aibom-cli scan --target ~ \
--introspect-execute --introspect-execute-yes \
--profile --profile-yes \
--policy-check --output-dir ./reeve-out
```
`--introspect-execute` 会运行已发现的 stdio MCP server 以读取其声明的工具列表;`--profile` 会运行该 server 并记录其观察到的行为。这两者都会作为证据保存到 AIBOM sidecar 中。
## 设计选择
Reeve 有意保持小巧。以下每一个设计抉择,都以牺牲灵活性换取了安全团队能够审计和信任的可靠性。
**提供证据,而非结论。** Reeve 绝不会将某个 agent 标记为“安全”或“危险”。它会报告配置*声明*了什么,*授予*了什么权限,*观察*到了什么,以及策略*标记*了什么,且每一项都提供了文件级别的参考依据。
**输出 CycloneDX 1.5 格式,让你无需构建新工具。** 大多数组织已经在运行支持 CycloneDX 的供应链扫描器(如 Grype、Dependency-Track、Snyk)。Reeve 生成符合规范的 CycloneDX 1.5 SBOM,使得 AI agent 层能够直接接入你已在运营的 pipeline。
**附带 AIBOM sidecar,因为目前尚无针对 AI agent 证据的标准。** CycloneDX 在设计之初并不支持表达“声明与观察对比”的功能、Sigstore 证书链或基于策略的结论。我们曾有三个选择:将结构化证据硬塞进 CycloneDX 仅支持字符串的属性包中(会失去验证能力),发明一种新的组件类型(会导致 CycloneDX 验证失败),或者将结构化证据放入一个关联的 sidecar 中。我们选择了 sidecar:仅使用 CycloneDX 的消费者仍然可以获得完全有效的 BOM,而支持 AIBOM 的消费者则能获得完整的结构化证据。如果行业最终统一了标准的 AI agent 证据格式,sidecar 中的数据可以直接映射到其中,这使得我们保持了灵活性,而不是去押注一个尚不存在的标准。
**默认本地运行。没有 daemon,没有 agent,没有网络回传。** 安全扫描器本身就是一种攻击面。Reeve 作为单个本地命令运行,读取文件并将输出写入磁盘。除非你主动移动数据,否则没有任何内容会离开端点。
**使用 Rust 编写。** Rust 提供了内存安全性,并为策略引擎提供了一流的 Wasmtime 嵌入支持。
**策略使用 Rego 编写,并编译为 WebAssembly。** Rego 是 Open Policy Agent (OPA) 的策略语言,这是一个被广泛用于 Kubernetes 和云策略且已从 CNCF 毕业的项目。将其编译为 WASM 使得策略包具有可移植性、处于沙盒环境中且可被签名;默认的检查项在构建时以 hash 锁定的 bundle 形式内嵌其中。
**签名发布,且输出可签名。** Sigstore 无密钥签名(Fulcio + Rekor)涵盖了发布二进制文件。扫描输出可以使用相同的机制进行签名;使用 `--sign-mode real` 可强制要求执行此操作。扫描器自身的供应链完整性也包含在其安全策略的范围内,因此你可以验证运行的程序及其生成的结果。
## 文档
- [AIBOM schema 规范](schema/SPEC.md) · [策略目录](policies/README.md)
## 许可证
Apache-2.0。详见 [LICENSE](LICENSE)。标签:AI安全, AI工具, Chat Copilot, SBOM, StruQ, 可视化界面, 硬件无关, 端点安全, 结构化提示词, 补丁管理, 通知系统