henleda/virtual-patch-copilot

GitHub: henleda/virtual-patch-copilot

一个模型无关的 AppSec 代理管道,能够自动发现应用漏洞、通过 F5 Distributed Cloud 实时部署虚拟补丁进行缓解、利用 exploit 验证策略有效性,并起草代码修复 PR,形成从漏洞发现到彻底修复的完整闭环。

Stars: 0 | Forks: 1

# virtual-patch-copilot [![CI](https://static.pigsec.cn/wp-content/uploads/repos/cas/99/993938d8ce5e902ccfb9d6747725c320d855dea3235ed9a304cedf0d94c9321f.svg)](https://github.com/henleda/virtual-patch-copilot/actions/workflows/ci.yml) [![License: Apache-2.0](https://img.shields.io/badge/license-Apache--2.0-blue.svg)](LICENSE) ![Python](https://img.shields.io/badge/python-3.10%E2%80%933.12-blue.svg) 一个 agent pipeline,能够**发现应用漏洞,通过正确的 F5 Distributed Cloud (XC) 控制措施实时缓解每一个漏洞,并起草真实的代码修复方案**——在有人工监督且一切操作均可逆的前提下,将“AI 发现漏洞”到“代码修复发布”之间的暴露窗口从数周缩短至数分钟。 权宜之计(创可贴)为你争取时间;PR 才是最终解药。每一个被缓解的发现都会生成一个代码修复 PR,并且 copilot 会**根据该发现的实际 exploit 来验证自身的权宜之计**——不断优化,直到 exploit 被真正阻断——因此它绝不会声称一个无效的修复是有效的。 它是**与模型无关的**:每个 agent 的模型都在 `config/agents.yaml` 中配置,因此你可以将其运行在 Claude、OpenAI、Gemini 或本地 Ollama 上——无论是针对单个 agent 还是全局——都无需修改任何代码。 ![控制台 — 审查步骤](https://static.pigsec.cn/wp-content/uploads/repos/cas/9f/9fca212398349c2625e4c1ac9072b02e6c0aff6aeb783aad04e4b90196a2791c.png) ## 工作原理 ``` repo ─▶ discover ─▶ verify ─▶ triage ─▶ generate ─┬▶ apply (XC band-aid: snapshot → self-test → (find) (refute) (route) (XC config) │ attach → validate → refine → keep/rollback) remediate └▶ open PR (the real code fix — the cure) ``` - **discover → verify**:发现候选漏洞并对抗性地反驳较弱的项目(经过校准的、严重程度加权的置信度阈值;每个不同的漏洞仅报告一次,并附带其实际 endpoint)。 - **triage**:将每个发现路由到最强的控制措施:`service_policy` · `waf` · `waf_data_guard` · `api_schema` · `malicious_user` · `bot_defense` · `rate_limit` —— 或者在没有合适的权宜之计时仅进行代码修复。 - **apply**:在人工批准的关卡后,将控制措施创建/附加到实时的 LB 上,然后**针对该发现自身的 exploit 验证其有效性**(一个探测 agent 会推导出 setup/exploit/legit 请求)。如果策略未能阻断,**refiner** 会诊断并重试,直到成功——或者诚实放弃(“需要代码修复”)。确定性的 linter 会在任何实时往返之前捕获自我冲突的策略。 - **remediate**:将代码解药起草为 GitHub PR。一个**账本**会追踪每个发现的状态 `found → mitigated → remediated → retired`,并且 **retire** 会在解药合并后分离权宜之计。 贯穿始终的安全护栏:除非明确开启,受保护的 LB/策略会拒绝任何修改操作;每次 apply 都会先进行快照,并在失败时回滚。 ## 在 2 分钟内体验(无需云环境,无需密钥) ``` pip install -e ".[console]" python3 demo/build_demo_out.py # curated dataset — the full story, offline VPCOPILOT_OUT=demo/out vpcopilot console # http://127.0.0.1:8787 ``` 直接打开 `demo/out/report.html` 即可查看可分享的仪表板。请参阅 **[docs/DEMO.md](docs/DEMO.md)** 获取详细引导(以及基于 XC 实时环境的运行路径)。 **想在一个安全的代码库上真实运行它?** 在你自己的代码之前,先将其指向一个已知存在漏洞的 OSS 应用(VAmPI / OWASP crAPI)——一次扫描仅需一个模型密钥,且不会做出任何更改。请参阅 **[docs/TRY_IT.md](docs/TRY_IT.md)**。 ## 快速开始(实时环境) ``` pip install -e ".[deploy,console,dev]" # deploy=GitHub PRs, console=web UI, dev=tests cp .env.example .env # model key(s) + XC creds + GITHUB_TOKEN # 编辑 config/agents.yaml 来为每个 agent 选择 models vpcopilot console # scan, apply, PR, retire — all from the UI # 或者 headless: vpcopilot scan /path/to/app-repo --out out ``` `scan` 会将结果写入 `out/` 目录(包含 `findings.json`、`triage.json`、`policies/*.json`、代码修复 PR 草稿、`report.html`),并且**不会**对 XC 或 GitHub 进行任何写入操作——可以安全地在任何地方运行。只有在人工批准关卡之后的 `apply` / `pr` / `retire` 阶段,才会发生对实时环境的更改。完整的命令参考:**[docs/USAGE.md](docs/USAGE.md)**。 ## 控制台 这是一个遵循完整生命周期的引导式流程——一个固定的顶部显眼横幅(对比于变更控制所需的数天,N 个可利用漏洞在数秒内被实时缓解)位于五个步骤的顶部: 1. **Scan** —— 指向一个 repo;只读,安全。 2. **Review** —— 查看发现结果 + 推荐的 XC 控制措施;点击某一行以检查 exploit / 代码 / 策略。 3. **Mitigate** —— 实时应用每个权宜之计;refiner 会以流式输出 `before 200 → after 403 BLOCKED` 的状态,并带有*在 N 次尝试中自愈* / *无法修复 → 发布代码修复* 的标签。 4. **Cure** —— 为每个发现打开代码修复 PR。 5. **Retire** —— 四状态账本追踪;在其代码解药合并后分离权宜之计。 凭据、XC 状态、各 agent 的模型配置以及可分享的 HTML 报告均位于 **Setup** 下。 **③ Mitigate** —— 应用每个权宜之计并观察其验证过程: ![Mitigate 步骤](https://static.pigsec.cn/wp-content/uploads/repos/cas/4f/4f6667e83a0f6a98f9566da64b6be9eb9894266ee98d8b268881ed2dcbe0fc52.png) **⑤ Retire** —— 四状态账本(此处的 `crapi-sql-001` 一路走到了 *retired* 状态): ![Retire 步骤](https://static.pigsec.cn/wp-content/uploads/repos/cas/1a/1abdbbc3334b15076b86ce18ddca2d3440693fc5cda8b743fc892dd239bc61d9.png) 每次扫描还会生成一个独立的、可分享的 **`report.html`** —— 包含相同的显眼横幅以及一目了然的图表、自愈记录(`200 → 403`,*自愈 ×2*)、速率限制的行为证明以及账本: ![HTML 报告](https://static.pigsec.cn/wp-content/uploads/repos/cas/d6/d68e2c35312352ca2dbde1ffced4fad4b7dece85d3a2e5c635bce475730194dc.png) ## 文档 | 文件 | 内容 | |---|---| | [docs/TRY_IT.md](docs/TRY_IT.md) | 在你自己的代码库之前,先在安全的 repo(VAmPI / crAPI)上尝试 | | [docs/DEMO.md](docs/DEMO.md) | 5 分钟运行手册(离线 + 实时) | | [docs/USAGE.md](docs/USAGE.md) | 完整的 CLI + 控制台参考 | | [DESIGN.md](DESIGN.md) | 架构 | | [MODELS.md](MODELS.md) | 跨提供商模型说明 | | [docs/QUALITY_PLAN.md](docs/QUALITY_PLAN.md) | 质量燃尽 | | [docs/PROJECT_STATE.md](docs/PROJECT_STATE.md) | 运行时交接 —— 当前状态、基准测试结果、未决事项 | ## 安全与负责任的使用 这是一个**双用途安全工具**。`scan` 是只读的;`apply` / `pr` / `retire` 会更改实时系统,并且验证过程会触发真实的 exploit。请仅对你拥有的或获得明确授权测试的系统使用此工具。报告与安全护栏:[SECURITY.md](SECURITY.md)。 ## 许可证 [Apache-2.0](LICENSE)。本项目与 F5, Inc. 没有任何隶属、认可或赞助关系;“F5”和“F5 Distributed Cloud”是 F5, Inc. 的商标,此处引用仅为描述通过其公开 API 进行的互操作。
标签:AI智能体, AppImage, CISA项目, F5, Python, Web应用防火墙, 安全运营, 扫描框架, 无后门, 自动化漏洞修复, 虚拟补丁, 逆向工具