AI代码安全分析工具

VibeShift是一款智能安全代理,用于分析AI生成的代码,识别漏洞并提供修复建议,适用于AI辅助开发环境。

  • by GroundNG
  • Python
  • 本地部署
  • 66 星标
  • 更新于
在 GitHub 查看 ilikepizza2/qa-mcp

使用说明

VibeShift:Vibe编码器的安全工程师

VibeShift 是一个智能安全代理,旨在与AI编码助手(如Cursor、GitHub Copilot、Claude Code等)无缝集成。它充当您的自动化安全工程师,分析人工智能生成的代码,识别漏洞,并促进人工智能驱动的补救 之前 不安全的代码会进入你的代码库。它利用了 MCP(模型上下文协议) 在现有的AI编码环境中实现流畅的交互。

问题: AI编码助手极大地加速了开发,但它们也可以生成具有微妙或明显安全漏洞的代码。手动审查所有人工智能生成的代码是否存在安全漏洞是缓慢的,容易出错,并且不能随着人工智能开发的速度而扩展。这种“氛围驱动的开发”可能会使应用程序暴露在外。

解决方案:GroundNG的VibeShift 通过使您的AI编码助手能够:

  1. 自动分析AI生成的代码: 当AI助手生成或修改代码时,可以触发VibeShift,使用一套工具(SAST、DAST组件)和AI驱动的检查来执行安全分析。
  2. 识别安全漏洞: 在AI生成的代码段或更大的代码块中找出常见和复杂的漏洞(例如XSS、SQLi、不安全的配置、逻辑缺陷)。
  3. 促进人工智能驱动的补救: 直接向AI编码助手提供详细的反馈和漏洞信息,使其能够建议甚至自动应用修复程序。
  4. 创建安全反馈循环: 确保开发人员及其人工智能助手立即意识到潜在的安全风险,从而能够快速纠正和学习。

这为人工智能辅助编码创造了一个“左移”的安全范式,将安全性直接嵌入到开发工作流程中,并帮助更快地发布更安全的代码。

演示(点击播放这些视频)

特性

  • MCP集成: 与Cursor/Windsurf/Github Copilot/Roo代码无缝集成
  • 自动安全扫描: 触发AI代码生成/修改以执行:
    • 静态代码分析(SAST): 集成Semgrep等工具以查找源代码中的漏洞。
    • 动态分析(DAST图元): 可以调用Nuclei或ZAP等工具对正在运行的组件进行检查(如适用)。
  • 人工智能辅助测试记录: 从自然语言描述生成基于Playwright的测试脚本(在自动模式下)。
  • 确定性测试执行: 使用Playwright可靠地运行录制的JSON测试文件。
  • AI驱动的测试发现: 抓取网站并利用任何LLM(符合openai格式)为发现的页面建议测试步骤。
  • 回归测试: 轻松运行现有的测试套件以捕获回归。
  • 自动反馈循环: 返回执行结果(包括失败、屏幕截图、控制台日志),为AI助手提供直接反馈。
  • 自我修复: 现有测试在代码更改时会自我修复。无需手动更新。
  • UI测试: 剧作家不直接支持的UI测试也得到了支持。例如, Check if the text is overflowing in the div
  • 视觉回归测试:使用传统的像素匹配和视觉LLM方法。

它是如何工作的

+-------------+       +-----------------+       +---------------------+       +-----------------+       +-------------+
|    User     | ----> | AI Coding Agent | ----> |     MCP Server      | ----> | Scan, test, exec| ----> | Browser     |
| (Developer) |       | (e.g., Copilot) |       | (mcp_server.py)     |       | (SAST, Record)  |       | (Playwright)|
+-------------+       +-----------------+       +---------------------+       +-----------------+       +-------------+
      ^                                                  |                            |                     |
      |--------------------------------------------------+----------------------------+---------------------+
                                      [Test Results / Feedback]
  1. 用户: 提示他们的AI编码助手(例如,“测试此存储库的安全漏洞”,“记录登录流的测试”,“运行回归测试'Test_login.json'”)。
  2. AI编码代理: 确认意图,并使用MCP调用 MCP Server.
  3. MCP服务器: 将请求路由到相应的功能(get_security_scan, record_test_flow, run_regression_test, discover_test_flows, list_recorded_tests).
  4. VibeShift代理:
    • 传统安全扫描: 调用 静态分析工具 (例如Semgrep)在代码上。
    • 记录: 这 WebAgent (在自动模式下)与LLM交互以计划步骤,通过以下方式控制浏览器 BrowserController (Playwright),处理HTML/Vision,并将生成的测试步骤保存到JSON文件中 output/ 目录。
    • 执行: 这 TestExecutor 加载指定的JSON测试文件,使用 BrowserController 根据记录的步骤与浏览器交互,并捕获结果、屏幕截图和控制台日志。
    • 发现: 这 CrawlerAgent 用途 BrowserController 和 LLMClient 抓取页面并建议测试步骤。
  5. 浏览器: Playwright驱动实际的浏览器交互。
  6. 反馈回路:
    • 综合安全报告(漏洞、位置、建议)通过MCP服务器返回给 AI编码代理.
    • AI编码代理将此信息呈现给开发人员,并可以使用该信息 建议或应用修复程序.
    • 目标是快速循环代码生成->安全扫描->人工智能驱动的修复->重新扫描(可选)。

入门指南

先决条件

  • Python 3.10+
  • 访问任何LLM(在我的测试中,gemini 2.0闪存最适合免费使用)
  • MCP已安装(pip install mcp[cli])
  • 已安装Playwright浏览器(patchright install)

安装

  1. 克隆存储库:
    git clone https://github.com/GroundNG/VibeShift
    cd VibeShift
    
  2. 创建虚拟环境(推荐):
    python -m venv venv
    source venv/bin/activate # Linux/macOS
    # venv\Scripts\activate # Windows
    
  3. 安装依赖项:
    pip install -r requirements.txt
    
  4. 安装Playwright浏览器:
    patchright install --with-deps # Installs browsers and OS dependencies
    

配置

  1. 将.env.example.重命名为项目根目录中的.env文件。
  2. 添加您的LLM API密钥和其他必要的详细信息:
    # .env
    LLM_API_KEY="YOUR_LLM_API_KEY"
    
    • 替换 YOUR_LLM_API_KEY 用你真正的钥匙。

添加MCP服务器

将此添加到您的mcp配置中:

{
  "mcpServers": {
    "VibeShift":{
      "command": "uv",
      "args": ["--directory","path/to/cloned_repo", "run", "mcp_server.py"]
    }
  }
}

在与AI编码助手交互时,保持此服务器运行。

用法

使用自然语言通过启用MCP的AI编码助手与代理进行交互。

示例:

  • 安全分析:

    • 自动(首选): VibeShift会自动分析AI助手生成或显著修改的代码片段。
    • 显式命令:

      “VibeShift,分析此功能的安全漏洞。” “让VibeShift检查Copilot刚刚为SQL注入编写的Python代码。” “在提交之前,使用VibeShift保护生成的代码。”

  • 记录测试:

    “记录测试:转到https://practicetestautomation.com/practice-test-login/,在用户名字段键入“student”,在密码字段键入“Password123”,单击提交按钮,并验证文本“恭喜学生”是否可见。"

    • (代理将自动执行这些操作并保存 test_....json 文件在 output/)
  • 执行测试:

    “运行回归测试 output/test_practice_test_login_20231105_103000.json"

    • (代理将执行指定文件中的步骤,并报告包含错误和详细信息的PASS/FAIL状态。)
  • 发现测试步骤:

    “从以下内容开始发现潜在的测试步骤https://practicetestautomation.com/practice/"

    • (代理将抓取网站,分析页面,并返回每个页面的建议测试步骤。)
  • 列出记录的测试:

    “列出可用的已录制web测试。”

    • (代理人将返回以下列表 .json 在中找到的文件 output/ 目录。)

输出:

  • 安全报告: 返回给AI编码助手,详细说明:
    • 漏洞类型(例如,CWE、OWASP类别)
    • 代码中的位置
    • 严重性
    • 证据/解释
    • 建议的补救措施(通常供AI采取行动)
  • 记录的测试: 保存为JSON文件 output/ 目录(参见 test_schema.md 格式)。
  • 执行结果: 作为JSON对象返回,总结运行情况(状态、错误、证据路径)。完整结果也保存到 output/execution_result_....json.
  • 发现结果: 作为JSON对象返回,其中包含发现的URL和建议的步骤。完整结果保存到 output/discovery_results_....json.

灵感

  • **浏览器使用**dom上下文树的生成深受其启发,并经过修改以适应静态/动态/视觉元素。特别感谢他们对开源的贡献。
  • Semgrep:我们利用的强大的开源静态分析工具。
  • 核:用于基于模板的动态扫描功能。

贡献

我们欢迎捐款!请看 CONTRIBUTING.md 有关如何开始、报告问题和提交pull请求的详细信息。我们特别感兴趣的是:

  • 新的安全分析器集成。

许可证

该项目根据 容量2.0.