渗透测试本质上是在近乎无限的状态空间中的定向搜索:
这种结构并非渗透测试独有。漏洞研究、数学证明、CTF 挑战——任何有清晰起点、清晰成功条件以及中间未知路径的问题,都具有相同的形状。
Cairn 就是为这类问题而构建的。渗透测试是它第一个得到验证的领域。
该引擎基于黑板架构构建,并具有显式的事实-意图图。它只需要三个原语:
| 概念 | 含义 |
|---|---|
| 事实 | 已确认的客观发现,写入黑板 |
| 意图 | 声明的探索方向,尚未执行 |
| 提示 | 任何时刻注入的人为判断;下次读取时被智能体吸收 |
图从原点向目标生长。每一个新事实都是一块垫脚石;每一个意图都是迈向未知的一步。
智能体工作器运行一个 OODA 循环——观察整个图,定向到当前状态,决定下一个意图,执行探索——并将发现作为新事实写回。工作器没有固定角色。任务是在运行时根据图的当前状态生成的,而不是根据预定义的工作描述。
智能体仅通过共享黑板(Stigmergy)进行协调。没有直接通信。没有信息孤岛。
三种任务类型,全部由同一个工作器执行:
| 任务 | 功能 | 输出 |
|---|---|---|
| 引导 | 项目启动时,直接尝试解决问题 | 事实 + 可能完成 |
| 推理 | 读取整个图:目标是否达成?下一步应探索什么? | 完成 / 新意图 / 无操作 |
| 探索 | 认领一个意图,执行探索,报告发现 | 一个事实 |
系统架构:
┌──────────────────────────────────┐
│ Cairn 服务器 │
│ 事实 + 意图 + 提示 │
└─────────────────┬────────────────┘
│
读写 API
│
┌─────────────────┴────────────────┐
│ 调度器 │
│ 调度任务,管理容器, │
│ 写入协议 │
└──────────┬───────────────┬───────┘
│ │
┌───────────────┴──┐ ┌──────┴──────────────┐
│ 工作器容器 │ │ 工作器容器 │
│ (项目 A) │ │ (项目 B) │
│ ┌────┐ ┌────┐ │ │ ┌────┐ ┌────┐ │
│ │ W. │ │ W. │ │ │ │ W. │ │ W. │ │
│ └────┘ └────┘ │ │ └────┘ └────┘ │
└──────────────────┘ └─────────────────────┘
Cairn 服务器仅维护图的一致性。
Cairn 调度器读取图,调度任务,启动和销毁工作器容器,并且是协议的唯一写入者。每个项目拥有自己的工作器容器;多个智能体工作器在其内部并发运行。智能体工作器只接收提示并返回结构化输出。
支持的工作器后端:Claude Code、Codex 和 Pi。
腾讯云黑客马拉松 · AI渗透测试挑战赛 · 第二届
610 支队伍 · 1,345 名参赛者 · 来自全国顶尖高校和安全厂商
| 指标 | 数值 |
|---|---|
| 解出题目数 | 54 / 54 —— 唯一AK的团队 |
| 最终排名 | 第3名 |
该系统在比赛前从未经过测试。整个流水线在比赛日凌晨4点首次上线。没有训练,没有调优,没有领域特定的工具。零 MCP 工具,零 RAG,零预定义的智能体角色。
先决条件
两种设置方式都需要工作器容器镜像:
docker pull --platform=linux/amd64 ghcr.io/oritera/cairn-worker-container:latest
创建本地调度器配置文件,并填写你的 LLM 端点和 API 密钥:
cp dispatch.example.yaml dispatch.yaml
拉取用于构建 Cairn 的基础镜像:
docker pull ghcr.io/astral-sh/uv:python3.13-trixie
docker compose up --build
这将启动 cairn-server(端口 8000),并在服务器通过健康检查后启动 cairn-dispatcher。调度器会挂载项目根目录下的 dispatch.yaml,并通过主机套接字连接到 Docker。数据持久化到 ./datas/cairn/。
# 启动服务器
uv run --project cairn cairn serve
# 运行调度器
uv run --project cairn cairn dispatch --config dispatch.yaml
# 仅执行启动健康检查
uv run --project cairn cairn dispatch --config dispatch.yaml --startup-healthcheck-only
运行快速回归测试套件(无需 Docker 或实时模型端点):
uv run --project cairn --group dev pytest
Cairn 是一个通用问题求解引擎。尽管它支持渗透测试、CTF 解题、安全评估和漏洞研究工作流程,但它只能在你有明确授权操作的环境中使用。
你对自己如何使用本项目负全部责任。未经所有者或运营者明确事先许可,请勿将 Cairn 用于任何系统、网络、应用程序或数据。未经授权的安全测试、利用或数据访问可能违法,并可能造成损害。
本项目的开发者和贡献者不认可也不承担因使用本项目而导致的任何滥用、误用、损害、损失或法律后果。使用本项目即表示你同意确保自己的活动符合你所在司法管辖区的所有适用法律、法规、合同义务以及专业或组织政策。
本项目采用 GNU AGPLv3 许可证,供个人和教育用途使用。
商业使用:如果你希望在商业或专有环境中使用本项目而不承担AGPL-3.0的开源义务,请联系我获取商业许可证。
贡献:提交拉取请求即表示你同意你的贡献可以根据AGPL-3.0以及项目的商业许可证进行使用。