工具定位
Bugsy 是一个命令行界面(CLI)工具,提供代码安全漏洞的自动修复能力。它是 Mobb 的社区版,Mobb 被描述为第一个供应商无关的自动安全漏洞修复工具。Bugsy 旨在帮助开发者快速识别并修复代码中的安全漏洞。
主要能力
Mobb 可摄取来自 Checkmarx、CodeQL(GitHub Advanced Security)、OpenText Fortify 和 Snyk 的 SAST 结果,并生成供开发者审查和提交的代码修复。
Bugsy 具备两种模式:
- Scan 模式(无需 SAST 报告):使用 Checkmarx 或 Snyk CLI 工具对指定的开源 GitHub/GitLab/ADO 仓库运行 SAST 扫描;分析漏洞报告以识别可自动修复的问题;生成代码修复,并将用户重定向到 Mobb 平台上的修复报告页面。
- Analyze 模式(需用户提供预生成的 SAST 报告):分析 Checkmarx/CodeQL/Fortify/Snyk 漏洞报告,识别可自动修复的问题。
需要特别说明的是:Bugsy 本身不检测代码中的任何漏洞,它使用的是上述 SAST 工具检测出的结果。社区版仅分析公开的 GitHub 仓库;私有仓库仅允许在有限时间内分析。
使用方式
可通过命令行使用 npx 直接运行 Bugsy,运行后将显示其用法帮助。
运行新的 SAST 扫描并获取修复,使用 Bugsy Scan 命令。
获取预先生成的 SAST 报告的修复,使用 Bugsy Analyze 命令。示例:
npx mobbdev analyze --scan-file sast_results.json --repo https://github.com/mobb-dev/simple-vulnerable-java-project
Bugsy 会为结果中识别出的每个受支持漏洞自动生成修复,并引导开发者审查并提交这些修复到代码中。使用 Scan 或 Analyze 命令加 -h 选项可查看 Bugsy 支持的所有选项。
作为 MCP 服务器使用
Bugsy 也可作为 MCP 服务器使用,使 Claude 等 AI 助手能够自动扫描并修复代码仓库中的漏洞。
API 密钥:使用 MCP 服务器功能需要 Mobb API 密钥。在 mobb.ai 注册获取 API 密钥,并设置 API_KEY 环境变量:
export API_KEY=your_api_key_here
本地 Git 仓库:MCP 服务器分析带有未提交更改的 git 仓库。需确保代码位于本地 git 仓库中,并有已修改、已添加或已暂存的文件可供分析。
从命令行运行 mobb-mcp。
将 Mobb MCP 添加到 Cursor MCP 客户端配置中。API_URL 仅在未使用 https://app.mobb.ai 时需要。
环境变量:
- API_KEY:你的 Mobb API 密钥(必需)
- API_URL:自定义 Mobb API URL(可选,默认为 https://app.mobb.ai)
- MVS_AUTO_FIX:覆盖自动修复设置——设为 "true" 或 "false",可强制启用/禁用自动应用修复,不受用户数据库设置影响(可选)
配置完成后,可通过 AI 助手使用 MCP 服务器:让 Claude 扫描漏洞(使用 mobb-mcp 运行扫描,或运行 fix-vulnerabilities MCP 工具)。
MCP 服务器将:验证仓库路径;检查 git 变更(已修改、已添加或已暂存的文件);上传变更文件进行分析;为检测到的漏洞生成自动修复;返回详细的修复建议。
fix_vulnerabilities:扫描当前代码变更并返回潜在漏洞的修复。
- 参数:path(字符串)——本地 git 仓库的路径
- 返回:包含代码补丁和说明的详细漏洞修复
MCP 使用流程:对代码进行更改;在 git 中暂存或修改文件;向 AI 助手提问:“Can you check my code for security vulnerabilities?”;助手将使用 MCP 服务器分析你的更改;收到包含代码补丁的详细修复建议。
常见错误提示
- “API_KEY environment variable is not set”:请确认已设置 Mobb API 密钥
- “Path is not a valid git repository”:请确保指向有效的 git 仓库
- “No changed files found”:请确保仓库中有已修改、已添加或已暂存的文件
在 CI/CD 流水线中使用
如果 CI/CD 流水线中包含 SAST 扫描,Bugsy 可以轻松接入,为每个检测到的问题提供即时修复。以下是一个在流水线中运行 Bugsy 的简单命令行示例。
默认情况下,Bugsy 在分析期间使用 WebSocket 连接进行实时状态更新。但某些代理环境或防火墙可能会阻止 WebSocket 连接。此时可使用 --polling 标志改用 HTTP 轮询。
何时使用 --polling:网络阻止 WebSocket 连接(ws:// 或 wss://);处于不支持 WebSocket 的企业代理之后;使用默认 WebSocket 模式时出现连接超时。
轮询特性:轮询间隔 5 秒;超时 30 分钟;相比 WebSocket 模式延迟略高,但可在受限环境中工作。
开发与支持
安装依赖并运行测试。如果使用 VSCode,可使用 launch.json 文件调试代码,运行 CLI tests 配置以持续运行和调试测试。
如需使用 Bugsy 的支持,或希望分享想法和了解更多信息,欢迎加入 Discord 服务器。