kosiorkosa47/honeymcp
GitHub: kosiorkosa47/honeymcp
专为 MCP 协议设计的开源蜜罐,用于被动采集针对 AI Agent 生态的攻击行为与威胁情报,填补了当前 MCP 安全领域中公开攻击语料库的空白。
Stars: 0 | Forks: 0
示例会话输出
``` $ printf '%s\n' \ '{"jsonrpc":"2.0","method":"initialize","id":1,"params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"curl","version":"0"}}}' \ '{"jsonrpc":"2.0","method":"tools/list","id":2}' \ '{"jsonrpc":"2.0","method":"tools/call","id":3,"params":{"name":"list_tables","arguments":{}}}' \ | ./target/release/honeymcp --persona personas/postgres-admin.yaml --db hive.db --- stdout (JSON-RPC responses) --- {"jsonrpc":"2.0","result":{"capabilities":{"tools":{"listChanged":false}},"instructions":"Postgres admin MCP server. Provides read-only introspection tools for an internal production database. All queries are audited.","protocolVersion":"2024-11-05","serverInfo":{"name":"postgres-admin","version":"15.4"}},"id":1} {"jsonrpc":"2.0","result":{"tools":[{"description":"Execute a read-only SQL query against the primary database.","inputSchema":{"properties":{"sql":{"description":"SQL statement to execute.","type":"string"}},"required":["sql"],"type":"object"},"name":"query"}, ...]},"id":2} {"jsonrpc":"2.0","result":{"content":[{"text":"public.users\npublic.orders\npublic.sessions\npublic.api_keys\npublic.audit_log\n","type":"text"}],"isError":false},"id":3} --- stderr (tracing, plain text) --- 2026-04-17T09:20:46Z INFO honeymcp: persona loaded persona=postgres-admin tools=4 2026-04-17T09:20:46Z INFO honeymcp::server: session started session=postgres-admin-... 2026-04-17T09:20:46Z INFO honeymcp::server: session ended session=postgres-admin-... $ sqlite3 hive.db 'SELECT COUNT(*), method FROM events GROUP BY method;' 1|initialize 1|tools/call 1|tools/list ``` 完整未删节记录:[`docs/demo-day1.txt`](docs/demo-day1.txt)。(attacker)"] -- "JSON-RPC 2.0
newline-delimited" --> Transport[stdio transport] Transport --> Session[Session dispatcher] Persona[(persona
YAML)] --> Session Session -->|initialize| Init[InitializeResult] Session -->|tools/list| List[ToolsListResult] Session -->|tools/call| Call[ToolCallResult
canned text] Session --> Logger Logger --> SQLite[(SQLite
events table)] Logger --> JSONL[(JSONL append log)] ``` ## 项目结构 ``` src/ protocol/ JSON-RPC 2.0 + MCP payload types transport/ Transport trait, stdio implementation persona/ YAML persona loader + validator logger/ SQLite + JSONL structured logging server.rs Session / request dispatcher main.rs CLI entry (clap) personas/ Example personas (postgres-admin) ``` ## 角色设定格式 ``` name: "postgres-admin" version: "15.4" instructions: "..." tools: - name: "query" description: "..." inputSchema: { type: object, properties: { sql: { type: string } } } response: "... fake result text ..." ``` 角色设定是你唯一需要调整的配置,用于伪装成一个新的服务。 ## honeymcp-probes 作为此 crate 中的第二个二进制文件发布。这是一个包含 13 个攻击载荷的 CLI 测试套件,你可以将其指向任何 MCP 端点,以查看哪些攻击能够穿透: ``` honeymcp-probes --target http://your-mcp-server/message # 用于 CI 的 JSON 报告: honeymcp-probes --target http://your-mcp-server/message --json > report.json # 如果有任何 Critical 严重级别的 probe 收到 HTTP 2xx 响应,则使构建失败: honeymcp-probes --target http://your-mcp-server/message --fail-on-critical ``` 探测器的分类体系与服务器的检测器分类体系完全对应 —— `honeymcp-probes` 发送的任何内容都是 `honeymcp` 被调优以识别的。防御者无需运行传感器即可审计自己的 MCP 服务器。 ## 开发 克隆仓库,然后启用带版本控制的 pre-commit 钩子(在每次提交前运行 `cargo fmt --check` + `cargo clippy -D warnings`): ``` git config core.hooksPath .github/hooks ``` 工具链:Rust 1.88+(edition 2024 依赖项)。 ``` cargo test # run the suite (unit + integration) cargo fmt --all # format cargo clippy --all-targets -- -D warnings ``` ## 前期工作与 honeymcp 的意义 存在相关的相邻工作,但针对的是不同的层面: - **MCP 网关**(MintMCP、Aembit)—— 用于合法部署的保护性代理,而非欺骗。 - **提示注入分类器**(StackOne Defender、Augustus、CloneGuard)—— 检测载荷,但不生成攻击遥测数据。 - **智能体红队工具**(DeepTeam、Garak)—— 进攻方工具,而非被动收集。 `honeymcp` 填补了一项空白:对攻击者在野外实际发送给 MCP 服务器的内容进行**被动情报收集**,其服务器伪装足够逼真,足以维持多轮交互。映射至 OWASP Top 10 for Agentic Applications 2026 —— **ASI04 (Agentic Supply Chain Vulnerabilities)** 和 **ASI05 (Unexpected Code Execution)**。 ## 路线图 - 第 2-7 天:HTTP/SSE 传输、多会话日志记录、提示注入检测启发式算法 - 第 8-14 天:角色设定库(GitHub MCP、filesystem、Slack、Linear)、结构化异常评分 - 第 15-21 天:基于 SQLite 事件存储的实时仪表板(Web UI) - 第 22-30 天:公开遥测流、CVE 复现、调查结果报告 ## 许可证 Apache-2.0 —— 详见 `LICENSE`。
标签:Awesome, CISA项目, CVE, DNS解析, Docker, ETW劫持, github, Honeypot, JSONL, JSON-RPC, MCP协议, postgres, Rust, SQLite, SSE, 人工智能安全, 可视化界面, 合规性, 命令执行, 大模型安全, 威胁情报, 安全防御评估, 工具投毒, 开发者工具, 开源项目, 攻击面分析, 数字签名, 日志记录, 模型上下文协议, 系统管理, 网络安全, 网络攻防, 网络流量审计, 蜜罐, 证书利用, 请求拦截, 通知系统, 隐私保护