zzjas/anypoc

GitHub: zzjas/anypoc

利用AI agents自动发现并复现软件漏洞,生成经过验证的可执行概念验证工具。

Stars: 10 | Forks: 0

AnyPoC **利用 AI 驱动的概念验证生成,自动发现并复现软件漏洞。** arXiv Bugs Found Bugs Confirmed Bugs Fixed [✨ 核心功能](#-key-features) | [🚀 安装设置](#-setup) | [🤖 使用 AnyPoC](#-using-anypoc) | [📚 工作原理](#-how-it-works) | [🙏 致谢](#-credits)
## ✨ 核心功能 - **真实的漏洞,真实的 PoC。** 发现结果附带可复现的概念验证——经过验证,非虚构。 - **沙箱环境。** Agent 自动确定 Docker 镜像,因此崩溃的二进制文件不会影响您的主机。 - **支持多种 Agent。** 在后台协调您信任的 Claude Code 或 Codex。 AnyPoC 已在 Firefox、OpenSSL、FFmpeg 等大型真实系统中发现了 130+ 个漏洞——详见运行中的列表[此处](https://buglist-a2470.web.app/tool/anypoc)。 ## 🚀 安装设置 克隆仓库,然后让您的编码 Agent 处理其余步骤: ``` claude "Setup AnyPoC following setup.md" # 无内容可翻译 - 未提供需要翻译的标题 codex "Setup AnyPoC following setup.md" ``` ## 🤖 使用 AnyPoC AnyPoC 设计为由 Claude Code 或 Codex 等编码 Agent 通过 **skills** 驱动——您用自然语言描述需求,skill 会为您找出正确的 `anypoc` 调用方式。在后台,skill 会调用本地安装的 `claude` 或 `codex` CLI,因此它会使用您已设置的账户/凭据——无需为 AnyPoC 配置单独的 API 密钥。 以下示例使用 Claude Code 的 `/anypoc` 斜杠命令语法。在 Codex 中,请使用 `$anypoc` 代替 `/anypoc`——其他部分完全相同。 首次针对项目运行 AnyPoC 时,它会引导您完成项目 Docker 环境(Dockerfile、源代码路径、构建标志)的交互式设置。后续运行会复用该设置。 ### 为现有漏洞报告生成 PoC 如果您已有漏洞报告,只是想让 AnyPoC 复现它,请将 skill 指向该报告。报告可以是本地文件、URL(问题跟踪器、公告、博客文章)或粘贴的文本: ``` /anypoc generate a PoC for firefox using the bug report at ./reports/spidermonkey-oob-read.md ``` AnyPoC 会启动项目的 Docker 镜像,让其分析器 Agent 确认漏洞是否可信,生成一个最小 PoC,并从头重新运行以记录证据。 ### 搜索漏洞 AnyPoC 也可以从头发现漏洞。给它一个项目和一个高级别的搜索描述: ``` /anypoc hunt firefox use the last 6 months of commit history to find memory-safety bugs in SpiderMonkey ``` 这使用 commit-history 策略:扫描器遍历 git 历史记录以寻找 bug-fix 提交,提取底层模式,在代码库中扫描相关漏洞,并将每个漏洞报告流式传输到 PoC 工作池——一次完成。 查看进度和检测到的漏洞: ``` /anypoc dashboard ``` ### 发现更多功能 要了解 AnyPoC 能为您做什么(设置新项目、无 PoC 查找漏洞、重试特定 PoC、启动仪表板、检查状态...): ``` /anypoc help ``` ## 📚 工作原理
扫描器 — 如何发现漏洞 扫描器是 AnyPoC 的"查找"部分。它接受三种策略之一,并生成结构化的漏洞报告: - **history** — 在时间范围内挖掘 git log 以寻找 bug-fix 提交,提取底层漏洞模式,然后扫描当前代码库中与修复前版本相似的代码。当您想要广泛搜索且不知道从哪里开始时,这是最佳选择。 - **focused** — 接受要审计内容的自然语言描述(文件、模块、功能、漏洞类型),并驱动一个限定在该区域的 LLM 会话。当您已有假设时,这是最佳选择。 - **commit-pr** — 审查单个提交或拉取请求,以发现该变更引入的漏洞。当您进行预合并审查或事后分析特定变更时,这是最佳选择。 每种策略都会增量发出 `BugReport`,因此下游消费者(PoC 生成、仪表板)可以在扫描完成之前开始工作。
PoC 生成 — 如何复现漏洞 PoC 生成是"复现"部分。对于每个漏洞报告,它会在项目特定的 Docker 容器中运行三阶段管道: 1. **分析** — 分析器 Agent 阅读报告及相关源代码,判断漏洞是真实存在还是误报。在这里被拒绝的报告不会消耗 PoC 生成资源。 2. **生成** — 生成器 Agent 根据项目的 `poc_gen.md` 指导,制作一个最小的概念验证(精心设计的输入、独立程序、脚本……),针对目标二进制文件迭代直到触发漏洞。 3. **证据检查** — 独立的 Agent 从头重新运行 PoC 以确认复现,并根据项目的 oracle 规则记录证据( sanitizer 输出、崩溃回溯、意外输出)。 在 `hunt` 模式下,扫描器和有界的 PoC 工作池并发运行:报告发出后立即分发给 workers,当池饱和时在安全的会话边界处暂停扫描器以进行背压。
CLI 参考 — 如果您更喜欢直接使用 anypoc 并自行组合命令 ### 仪表板 ``` anypoc dashboard ``` 然后在浏览器中打开 **http://localhost:8501**。 ### 查找漏洞 管道有四个步骤: #### 步骤 1: 生成来源 📥 从项目的提交历史中提取潜在漏洞模式: ``` anypoc scan source commits \ -p firefox \ --time-range "from 2024-01-01 to 2024-12-31" \ --description "memory errors; integer overflow; buffer overflow" ``` #### 步骤 2: 提取模式 🧩 分析这些来源以创建漏洞模式: ``` anypoc scan pattern -p firefox ``` #### 步骤 3: 扫描漏洞 🐛 扫描代码库以寻找类似漏洞: ``` anypoc scan bug -p firefox ``` #### 步骤 4: 生成 PoC 💥 自动生成概念验证漏洞利用: ``` anypoc poc run firefox ``` 查看进度: ``` anypoc poc status firefox ``` ### 添加新项目(手动) #### 1. 初始化您的项目 ``` anypoc project init myproject ``` 这会创建一个包含所有必要内容的项目文件夹: ``` projects/myproject/ ├── Dockerfile # How to build the target ├── paths.md # Where to find source code & binaries └── prompts/ # Custom prompts for poc generation (optional) ``` #### 2. 配置 Dockerfile 编辑 `projects/myproject/Dockerfile` 以: - 克隆或复制源代码 - 安装任何依赖项 - 使用 sanitizers(ASan、UBSan 等)构建,以更好地检测漏洞 #### 3. 设置路径 编辑 `projects/myproject/paths.md` 以告诉系统如何在容器内找到源代码和二进制文件。 #### 4. 构建 Docker 镜像 ``` anypoc project build myproject ``` #### 5. 开始搜索 ``` anypoc scan source commits -p myproject --time-range "last 6 months" anypoc scan pattern -p myproject anypoc scan bug -p myproject anypoc poc run myproject ```
标签:AI安全, Bug bounty, Chat Copilot, Claude, CVE检测, Docker, PoC生成, 二进制安全, 云安全监控, 安全防御评估, 沙箱环境, 漏洞复现, 请求拦截, 软件漏洞, 逆向工具, 静态分析