Kritt-ai/open-kritt · 上手攻略
- 仓库:Kritt-ai/open-kritt
- 链接:https://github.com/Kritt-ai/open-kritt
- 分类:AI 安全 / 漏洞研究 / Agent 编排
- 作者:spark
- 更新:2026-08-21
是什么
open·kritt 是一款自托管、开源的多 Agent 漏洞研究编排工具。它不是单点扫描器,而是一个把"提示词工作流 + Agent 执行 + 结果验证 + 报告导出"串成可复用剧本(playbook)的控制台,主要面向安全研究员与对安全敏感的开发者。
定位上,它不尝试把整个仓库直接扔给一个大模型让它"找出漏洞"——README 原话是「Pointing a model at an entire repository and asking it to find vulnerabilities rarely works well」。它的路线是:把研究问题拆成小而聚焦的任务,并行调度多个 AI Agent,再把各自的产出聚合为可验证的发现。
形态上由三件套组成:
- Web 控制台(基于 Docker Compose 的本地栈,默认
http://localhost:5173) - 仓库内的 CLI(
./kritt setup/./kritt start/./kritt-headless),无需 npm install - 一套围绕"workflow / post-script / skill / ranker"的便携 JSON 配置
解决什么问题
传统"AI + 安全"工具的痛点集中在三点:
- 扫描覆盖与噪声:单 prompt 让模型通读仓库,往往返回一长串似是而非的洞,开发者无法判断哪条可信。
- 缺乏可复现的工作流:每个研究员都有自己的 prompt 套路,但无法版本化、共享、并行化。
- 结果无法交付给团队/客户:导出格式碎片化,没法打包成结构化、可分享的取证包。
open·kritt 直接对症:
- 把"扫描 → 验证 → 排序 → 导出"做成可配置的 workflow 与 post-script;
- 支持把外部扫描器(Codex、Claude Code)接进来跑分析;
- 提供统一的 finding schema + 自动去重 + 自定义严重度排序器;
- 完成后打包成"带 manifest 的 ZIP",包含发现、结构化数据、后处理输出、PoC 文本——可分享版本会剥离敏感字段。
快速安装
1. 前置依赖
- Git
- Docker + Docker Compose
- Node.js 20+(仅用于本地预览文档站点 Mint,不必装来跑主程序)
⚠️ README 明确警告:tool-enabled agent 在临时 job 容器中以 root 身份运行,拥有仓库写权限和直接互联网访问(会自行安装工具、编译目标、跑测试、构造 PoC)。因此强烈建议跑在专用 Docker 主机或 VM 上,扫描未受信代码前请读 Threat Model。
2. 启动
git clone https://github.com/Kritt-ai/open-kritt
cd open-kritt
./kritt setup # 交互式配置模型访问(Codex 登录 / OpenAI / Anthropic / OpenRouter 任选其一)
./kritt start # 起 Docker Compose 栈
栈起来后浏览器打开 http://localhost:5173。需要扫私有 GitHub 仓库时,./kritt setup 阶段可填入 GITHUB_TOKEN,这是可选的。
3. 无浏览器/服务器场景
./kritt-headless
headless CLI 负责导入便携的 workflow/post-script/skill/ranker JSON、创建扫描(与 Web 表单走同一套后端校验)、查看扫描状态/阶段/失败原因、编辑非敏感运行时设置、导出 finding bundle。注意它不在终端打印 finding 内容,完整结果走导出。
4. 本地预览文档
npm install -g mint
cd docs-site
npm run dev # http://localhost:3001
核心用法
编排"扫描剧本":workflow
open·kritt 的核心抽象是 workflow——一条由多个聚焦提示步骤组成的可复用剧本,定义:
- 每个步骤用哪个 Agent / 模型;
- 步骤输入(文件、依赖子集、CVE 关键词等);
- 步骤之间如何传数据;
- 失败重试与跳过策略。
README 把它类比为「Chain focused prompts into reusable security research playbooks」。详细步骤语义见 Workflows and prompt steps。
典型场景下,研究员会让一个 Agent 扫某个目录的输入校验点,让另一个 Agent 抓反汇编里的危险 syscall,第三个 Agent 写 PoC 草稿,最后用一个 verifier Agent 跑测试确认是否真的能复现。
跑扫描
支持两种对象:
- 远程仓库:通过 GitHub URL(或自托管 Git);
- 本地仓库:直接指定路径,让工具拷贝到一个临时 job 容器里跑。
底层执行器支持 Codex 与 Claude Code(README 提及),模型访问在 ./kritt setup 阶段绑定。
验证发现:post-script
post-script 是「在 Agent 报告后跑一段脚本做交叉验证 / 构造 PoC / 生成可读报告」。README 明确它用于「validate issues, build proofs of concept, and produce reports」。这意味着你可以把"跑通一段单元测试"或"用已知 payload 打一次服务端点"作为后置门槛,过滤掉幻觉式 false positive。
自定义排序器
如果你对小工具默认严重度不满意,可以写自己的 ranker(基于 CVSS、自家资产权重、历史 false positive 率等)。最终入库前由统一 finding schema 与自动去重兜底。
导出
每次扫描完成后,会产出:
- canonical findings:归一化后的漏洞列表;
- structured data:JSON 等结构化字段;
- post-processing output:post-script 输出;
- reports + PoCs:报告文本与 PoC 源码(始终以纯文本保存,便于审计与人工核验)。
所有以上被打包成一个带 share-safe manifest 的 ZIP:
- 完成的扫描:完整导出;
- 被中断或失败但已有发现的扫描:明确标记为 partial export。
典型适用场景
- 白盒漏洞研究 / 赏金流水线:把多个提示模板固化下来,让多个 Agent 并行扫同一仓库的不同模块,再合并排序。README 自报其团队(研究者笔名 Blockian)凭这套底层工具在 Immunefi / HackenProof 上累计拿了 超过 $1,500,000 赏金。
- 审计 vs 跑 PoC 的拆分:让不同 Agent 分别负责"找洞"与"复现",互不污染上下文。
- CI 中的轻量 AI 复查:把 workflow 配成 PR trigger,让模型只扫 diff 文件,省 token。
- 安全教学 / 红队训练:因为 workflow 与 skill 都是 JSON,可以直接 fork 同事的剧本快速上手。
坑与注意
- 别在主力开发机上跑未受信项目:默认 job 容器是 root + 有网络,且会改写"被扫描仓库的拷贝"——这本身是 PoC 构造需要,但意味着宿主机不能太宝贵。
- 默认端口绑 127.0.0.1,后端没有应用层认证:README 原文「Keep the stack private」——别直接对外暴露。
- GITHUB_TOKEN 是可选的:只在扫私有仓库时用得到;公网项目可以零 token 起步。
- headless CLI 不打印 finding 内容:这是设计选择,避免在 shell history 里泄露漏洞细节;但意味着排错必须靠日志与导出包。
- 许可证 = AGPL v3.0:注意 AGPL 在网络服务化场景下会触发源码公开义务。如果你要把它包成 SaaS 给客户用,先看清边界。
- 威胁模型不是文档摆设:扫描未受信代码前必读 threat-model.md;它解释了为何默认容器是 root + 有网络,以及如何改成更保守的沙箱。
与同类对比
| 维度 | open·kritt | 通用"AI 安全扫描"GPT 套壳 | 传统 SAST(Semgrep / CodeQL) |
|---|---|---|---|
| 工作流可编排 | ✅ workflow + skill JSON | ❌ 多为单 prompt | ⚠️ 规则可写,但非 Agent |
| 多模型并行 | ✅ Codex / Claude Code / 自定义 | ⚠️ 通常锁单一模型 | N/A |
| 内置验证/PoC | ✅ post-script 链路 | ⚠️ 通常只产出描述 | ⚠️ 仅在 data-flow 规则下可触发 |
| 去重 + 排序 | ✅ finding schema + ranker | ❌ | ⚠️ 规则级 |
| 可分享导出包 | ✅ ZIP + manifest | ❌ | ⚠️ SARIF 标准但非打包 |
| 自托管 + 开源 | ✅ AGPLv3 | 视项目而定 | ✅ 多为开源 |
| 学习曲线 | 中(需懂 workflow 概念) | 低 | 中(需懂规则) |
定位差异:open·kritt 不是 SAST 替代品,而是给"已经在写提示词 / 跑赏金 / 需要交付结构化报告"的安全研究员搭一个可编排、可验证、可分享的底座。
一句话推荐结论
如果你正把"提示词 + Agent + 漏洞研究"当流水线来用,open·kritt 是当下少有的把 workflow、验证、导出三件事一起做掉的自托管开源底座;先拉专用 VM 跑起来再考虑在主力机上装。