cisoventures/RepoRook
GitHub: cisoventures/RepoRook
RepoRook 是一款免费开源的代码安全门控工具,将多种确定性扫描器统一到单一 CLI 与一致 schema 下,专为人类和 AI Agent 编写的代码提供可复现的发布前安全检测。
Stars: 0 | Forks: 0
# RepoRook
RepoRook 是一款免费、开源的安全门控工具,专为人类或编程 Agent 编写的代码而设计。它将确定性扫描器整合在一个 CLI、一种 findings schema、一项 GitHub check 之下,并为 Claude Code、Codex、Cursor、GitHub Copilot、Gemini CLI 和 Windsurf 提供了轻量级集成。
**MIT 许可证 · 无托管服务 · 无遥测 · 无由维护者资助的推理。** RepoRook 扫描的是应用程序代码,而不是生成代码的 agent、技能、插件或 MCP 服务器。
## 新手体验
询问你的编程 Agent:
RepoRook 提供确定性证据。你现有的 agent 可以验证上下文并提出补丁。你来批准更改。RepoRook 和仓库测试会对其进行验证。CI 仍然是合并的门控。
## 快速开始
要求:Node.js 20 或更高版本。RepoRook 会在适用时编排 Semgrep、Gitleaks、`npm audit` 和 `pip-audit`。
默认情况下,Semgrep 会下载公开的 `p/default` 规则包,并在禁用指标的情况下运行它。当你需要完全离线或逐字节可复现的源码扫描时,请将 `semgrepConfig` 设置为固定的本地规则文件。
```
npx reporook doctor
npx reporook setup
npx reporook scan .
```
CI 的退出代码是稳定的:
- `0`:没有发现结果达到配置的阈值
- `1`:至少有一个发现结果达到了阈值
- `2`:目标、配置或必需的扫描器错误
扫描器的缺失绝不会伪装成安全状态。每份报告都会说明覆盖率是 `complete`(完全)、`partial`(部分)还是 `failed`(失败)。
## GitHub Action
```
name: RepoRook
on: [pull_request]
permissions:
contents: read
pull-requests: write
security-events: write
jobs:
security:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
with:
fetch-depth: 0
- uses: cisoventures/RepoRook@main # use a release tag once published
with:
fail-on: high
mode: diff
```
该 Action 会安装固定版本的扫描器,更新一条 PR 评论,上传 SARIF,保留完整的扫描回执,并在报告后强制执行配置的阈值。
## 配置
创建 `reporook.yml`:
```
failOn: high
outputDir: .reporook
semgrepConfig: p/default # or a pinned local Semgrep rules file
paths:
- .
ignore:
- node_modules/**
- dist/**
requiredScanners:
- semgrep
- gitleaks
scanners:
pip-audit: true
```
## 输出
- `.reporook/findings.json`:确定性标准化发现结果
- `.reporook/results.sarif`:兼容 GitHub 的投影
- `.reporook/scan-receipt.json`:commit、配置哈希、扫描器版本和覆盖率
- `.reporook/agent-review.json`:可选的,单独归因的 host-agent 分析
v1 schema 位于 [`schemas/`](schemas/) 中。发现结果的 ID 特意排除了行号,因此在发现结果上方插入代码不会改变其标识。
## Agent 集成
本地 MCP 服务器提供以下功能:
- `scan_repository`
- `scan_changes`
- `list_findings`
- `get_finding`
- `get_remediation_context`
- `verify_fix`
- `export_findings`
直接运行它:
```
{
"mcpServers": {
"reporook": {
"command": "npx",
"args": ["--yes", "@reporook/mcp-server"]
}
}
}
```
原生包位于 [`adapters/`](adapters/) 下。每个 host 都会获得相同的规范安全工作流。原生安全产品可能会深化验证,但它们的结论仍然会单独归因。
## 信任模型
| 标签 | 含义 |
|---|---|
| RepoRook finding | 确定性扫描器在此版本中匹配到了证据 |
| Native-agent validated | 指定的 host 安全员验证了上下文或攻击路径 |
| Agent hypothesis | 尚未经过确定性复现的推理 |
| Scanner resolution passed | 补丁应用后,原有的稳定发现结果已不存在 |
| Fix verified | 扫描器解决、针对性的回归证据以及相关测试均已通过 |
RepoRook 不会静默应用补丁、轮换凭证、创建工单或发布安全通告。
## 开发
```
npm install
npm run check
node cli/dist/index.js scan test-fixtures/vulnerable-app --require-scanners
```
请参阅 [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md)、[`docs/ADAPTERS.md`](docs/ADAPTERS.md) 和 [`CONTRIBUTING.md`](CONTRIBUTING.md)。
## 项目状态
该仓库包含完整的 beta 版架构。扫描器检测准确性和 host 打包应被视为 pre-1.0 阶段,并将通过基于测试用例的贡献进行扩展。
标签:MITM代理, 安全扫描, 开源框架, 持续集成, 时序注入, 自动化攻击, 错误基检测, 静态代码分析