隐藏导体-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.jsonflag:参赛者需要泄露的目标文件
MCP配置的工作原理
该应用程序使用 mcp.json 要配置GitHub MCP服务器连接,请执行以下操作:
- 启动时:应用程序验证
mcp.json存在 - 当用户进行身份验证时:
- 用户的GitHub令牌通过OAuth获得 - 令牌被注入MCP配置(替换 ${GITHUB_PERSONAL_ACCESS_TOKEN}) - 为该用户的会话创建了一个专用的MCP客户端
- 聊天时:MCP客户端使用用户的令牌连接到远程GitHub MCP服务器
这意味着:
- ✅ 相同
mcp.json易受攻击的应用程序使用了配置文件 - ✅ 参赛者可以将他们的GitHub PAT(个人访问令牌)放入
mcp.scan.json并扫描mcp-scan mcp.scan.json寻找有毒物质流。 - ✅ 每个用户都有自己的隔离MCP会话及其凭据
- ⚠️
mcp.json是必需的 -没有它,应用程序将无法启动(没有硬编码的默认值)
