AI安全挑战工具

一款故意设计为易受攻击的AI代理聊天机器人,用于演示提示注入和本地文件包含漏洞的安全训练。

  • by apj-ctf
  • Go
  • 本地部署
  • 更新于
在 GitHub 查看 apj-ctf/hidden-conductor

使用说明

隐藏导体-AI代理安全挑战

一个故意易受攻击的AI代理聊天机器人,展示了快速注入和本地文件包含漏洞。

🚨 警告

此应用程序是 故意脆弱 用于安全培训和CTF目的。 不要 部署到生产环境中!

已证明的漏洞

  • 提示注入:不可信的GitHub问题内容直接影响AI行为
  • 本地文件包含(LFI):从文件系统读取任意文件
  • 数据渗漏:将文件内容发送到GitHub评论

先决条件

  • Docker(可选,用于容器化部署)
  • GitHub OAuth应用程序凭据
  • Google Gemini API密钥
  • 启用了问题的测试GitHub存储库

关键文件

  • mcp.json:MCP服务器配置(由应用程序加载,Snyk可扫描)
  • main.go:具有易受攻击的代理工作流的AI代理
  • mcp_client.go:加载配置并注入用户令牌的MCP客户端
  • mcp_config.go:配置加载器 mcp.json
  • flag:参赛者需要泄露的目标文件

MCP配置的工作原理

该应用程序使用 mcp.json 要配置GitHub MCP服务器连接,请执行以下操作:

  1. 启动时:应用程序验证 mcp.json 存在
  2. 当用户进行身份验证时:
    • 用户的GitHub令牌通过OAuth获得
    • 令牌被注入MCP配置(替换 ${GITHUB_PERSONAL_ACCESS_TOKEN})
    • 为该用户的会话创建了一个专用的MCP客户端
  3. 聊天时:MCP客户端使用用户的令牌连接到远程GitHub MCP服务器

这意味着:

  • ✅ 相同 mcp.json 易受攻击的应用程序使用了配置文件
  • ✅ 参赛者可以将他们的GitHub PAT(个人访问令牌)放入 mcp.scan.json 并扫描 mcp-scan mcp.scan.json 寻找有毒物质流。
  • ✅ 每个用户都有自己的隔离MCP会话及其凭据
  • ⚠️ mcp.json 是必需的 -没有它,应用程序将无法启动(没有硬编码的默认值)