Agent-Field/sec-af
GitHub: Agent-Field/sec-af
基于多 Agent 对抗验证架构的 AI 原生安全审计器,通过从源到汇的污点追踪证明漏洞可利用性,以极低的 LLM 成本产出带有判定结论和完整凭证的审计结果。
Stars: 35 | Forks: 6
# SEC-AF
### 基于 [AgentField](https://github.com/Agent-Field/agentfield) 构建的 AI 原生安全审计器
[](LICENSE)
[](https://www.python.org/downloads/)
[](https://github.com/Agent-Field/agentfield)
[](https://railway.com/deploy/sec-af)
[](https://github.com/Agent-Field)
其他工具只能标记模式。SEC-AF **证明可利用性**:每项发现都包含判定结论、数据流追踪和可操作的凭证。免费、开源,仅需一次 API 调用。一次包含 30 个已验证发现的完整审计成本约为 **$1.40 的 LLM 调用费用**。
详细分类:按类别划分的 30 个已验证发现
| 类别 | 数量 | 示例 | |---|---|---| | 缺失认证 | 8 | ImportPaste, delete_all_pastes, system_debug, CreateUser, file upload | | 命令注入 | 4 | 通过 ImportPaste, system_debug, system_diagnostics 执行 `os.popen(cmd)` | | SQL 注入 | 3 | `resolve_pastes` 中未过滤的 `filter`,LIKE 模式注入,登录 | | 认证绕过 | 3 | JWT 签名禁用,JWT 授权绕过,密码认证破损 | | 明文凭据 | 3 | 明文密码存储,明文比对,诊断信息中的密码 | | SSRF | 2 | ImportPaste mutation 在服务端跟随用户提供的 URL | | 业务逻辑 / URL 过滤 | 2 | URL 过滤不足,未认证的大规模删除 | | DoS / 资源耗尽 | 3 | users/audits 查询缺少分页,uncontrolled simulate_load | | 配置 / 密钥 | 2 | 硬编码的 JWT/Flask 密钥,生产环境开启 debug 模式 |设计模式:AI 原生安全分析的工作原理
SEC-AF 应用了 several 架构模式,这些模式是通过组合多个专注的 AI Agent 而非运行单一单体扫描所独有的。这些模式解决了 AI 驱动安全分析中的根本性挑战。 **1. 对抗性 Agent 张力 (HUNT vs. PROVE)** 大多数 AI 安全工具只问单个模型“这是否有漏洞?”并接受答案。SEC-AF 在结构上分离了*发现* Agent 和*证伪* Agent。Hunters 的动机是发现漏洞;provers 的动机是证伪它们。每个发现都要经过一个 4-Agent 验证链 —— 追踪器重建数据流,过滤分析器寻找 hunter 可能遗漏的缓解措施,漏洞假设者构建具体的攻击场景,判定 Agent 权衡所有相互冲突的证据。Agent 之间的这种对抗性张力是实现 94% 噪声削减的关键 —— 架构本身就编码了怀疑态度。 **2. 信号级联与逐步收窄** Pipeline 不会将所有发现倾倒给用户,而是在每个阶段压缩信号:106 个原始发现 → AI 去重后 61 个 → 对抗性验证后 30 个。每个阶段都是一个过滤器。这模仿了人类安全团队如何进行分类 —— 先是广泛发现,然后是越来越严格的审查。关键见解在于,每个过滤器都是一种*不同类型*的 AI 推理:用于去重的语义相似性,用于验证的污点分析,用于确认的漏洞构建。 **3. 通过上下文修剪实现信息经济** 当给定不相关的上下文时,LLM 更容易产生幻觉。SEC-AF 仅路由每个 Agent 需要的信息:注入 hunter 接收经过修剪的、仅包含数据流图和输入入口点的侦测上下文,而加密 hunter 接收依赖树和密钥管理模式。验证者接收投影的发现视图,仅包含其特定验证方法所需的字段。这种针对策略的上下文修剪减少了幻觉和成本 —— Agent 不会因从未看到的信息而自我干扰。 **4. 流式阶段重叠** 传统 Pipeline 顺序运行:完成侦测,然后开始搜寻,再开始证明。SEC-AF 通过 `asyncio.Queue` 重叠阶段 —— hunters 开始接收实时产生的侦测输出,去重处理在每个 hunter 完成时即时处理发现。Provers 开始验证第一批去重后的发现,而后续的 hunters 仍在运行。这种流式架构减少了实际耗时,同时不牺牲信号级联 —— 每个发现仍然通过每个过滤器,只是更早。 **5. 通过 AI 门控实现动态路由** Pipeline 根据发现的内容在运行时调整。一个 AI 门控检查侦测输出并选择激活哪些 hunt 策略 —— 一个带有 JWT 认证的 Flask 应用会触发与带有 gRPC 的 Go 微服务不同的 hunter。一个单独的 CWE 扩展门控根据检测到的技术栈动态扩展漏洞目标列表。一个可达性门控评估依赖项漏洞是否具有可利用的调用路径,避免在不可达代码上浪费验证资源。 **6. 编码 Agent 的引导式自主** SEC-AF 通过 AgentField Harness 运行在编码 Agent(Claude Code, OpenCode, Codex)之上。Reasoner 不给 Agent 一个巨大的提示词,而是提供阶段感知的引导式自主:Agent 接收狭窄的任务定义、扁平的输出 Schema(2-4 个字段)和特定策略的上下文。Agent 在这些边界内拥有完全的自主权 —— 它可以读取文件、追踪代码并自由推理 —— 但 Harness 限制了其输出的*形状*。这防止了自主 Agent 偏离任务或产生非结构化结果的常见失败模式。 **7. 可组合的 Reasoner DAG 与完全可观测性** 每次 Agent 调用都流经 AgentField 控制平面,创建完整的审计有向无环图。你可以看到哪个 hunter 发现了哪个发现,每次验证花了多长时间,prover 生成了什么证据,以及 Pipeline 在哪里花费了时间。添加一个新的漏洞类别只需一个文件 —— 一个新的 hunter。编排器发现它,路由上下文给它,并将其发现集成到现有的去重 → 证明 → 修复 Pipeline 中。DAG 即架构。它遗漏了什么(以及原因)
9 个遗漏的场景主要是 **GraphQL 协议级攻击**:批量查询、深度递归、别名滥用、字段重复、内省暴露。这些需要运行时/DAST 分析。SEC-AF 目前侧重于 SAST。协议级检测已在路线图上。
完整请求选项
``` curl -X POST http://localhost:8080/api/v1/execute/async/sec-af.audit \ -H "Content-Type: application/json" \ -d '{ "input": { "repo_url": "https://github.com/org/repo", "branch": "main", "depth": "thorough", "severity_threshold": "high", "scan_types": ["sast", "sca", "secrets", "config"], "output_formats": ["sarif", "json", "markdown"], "compliance_frameworks": ["pci-dss", "soc2", "owasp", "hipaa"], "max_cost_usd": 15.0, "max_provers": 30, "max_duration_seconds": 1800, "include_paths": ["src/"], "exclude_paths": ["tests/", "vendor/"] } }' ```深度配置
| 配置 | 策略 | 验证 | 典型时间 | 典型成本 | |---|---|---|---|---| | `quick` | 5 个核心策略 | 仅主要发现 | 2-5 min | ~$0.10-0.40 | | `standard` | 11 个策略 (核心 + 扩展) | 前 30 个发现 | 15-80 min | ~$0.18-0.90 | | `thorough` | 全部策略集 | 所有发现 | 30-120 min | ~$2-8 | 成本基于通过 OpenRouter 的 Kimi K2.5($0.22/M 输入, $0.88/M 输出)。DVGA 基准测试(standard 深度,30 个已验证发现,约 166-255 次估计 LLM 调用,82 个 DAG 边)估计成本为 **$0.18–$0.90**。完整分析:[`exampl/benchmark-analysis.json`](exampl/benchmark-analysis.json)。任何兼容 OpenRouter 的模型均可使用 —— 设置 `HARNESS_MODEL` 和 `AI_MODEL` 进行切换。判定模型
| 判定 | 含义 | |---|---| | `confirmed` | 通过具体证据证明了可利用性 | | `likely` | 有强烈指标,部分验证 | | `inconclusive` | 证据不足,需要人工审查 | | `not_exploitable` | 证据表明无实际利用路径 |输出格式
| 格式 | 消费者 | 描述 | |---|---|---| | `sarif` | GitHub Code Scanning, 安全工具 | SARIF 2.1.0,包含严重性和位置 | | `json` | Pipelines, API | 完整的结构化结果,包含判定、凭证、成本 | | `markdown` | 安全团队 | 叙述性报告,包含发现和修复建议 |CI 集成
``` name: sec-af-audit on: pull_request: jobs: security-audit: runs-on: ubuntu-latest permissions: contents: read security-events: write steps: - uses: actions/checkout@v4 - name: Trigger SEC-AF run: | RESPONSE=$(curl -sS -X POST "$AGENTFIELD_SERVER/api/v1/execute/async/sec-af.audit" \ -H "Content-Type: application/json" \ -d '{ "input": { "repo_url": "${{ github.event.repository.clone_url }}", "branch": "${{ github.head_ref }}", "commit_sha": "${{ github.event.pull_request.head.sha }}", "base_commit_sha": "${{ github.event.pull_request.base.sha }}", "depth": "standard", "output_formats": ["sarif"] } }') echo "execution_id=$(echo "$RESPONSE" | jq -r '.execution_id')" >> "$GITHUB_ENV" env: AGENTFIELD_SERVER: ${{ secrets.AGENTFIELD_SERVER }} - name: Wait for results run: | for i in {1..60}; do RESULT=$(curl -sS "$AGENTFIELD_SERVER/api/v1/executions/$execution_id") STATUS=$(echo "$RESULT" | jq -r '.status') [ "$STATUS" = "succeeded" ] && { echo "$RESULT" | jq -r '.result.sarif' > results.sarif; exit 0; } [ "$STATUS" = "failed" ] && { echo "Audit failed"; exit 1; } sleep 10 done echo "Timed out"; exit 1 env: AGENTFIELD_SERVER: ${{ secrets.AGENTFIELD_SERVER }} - uses: github/codeql-action/upload-sarif@v3 with: sarif_file: results.sarif ```环境变量
| 变量 | 必需 | 默认值 | 描述 | |---|---|---|---| | `AGENTFIELD_SERVER` | 是 | `http://localhost:8080` | 控制平面 URL | | `OPENROUTER_API_KEY` | 是 | - | LLM 提供商凭证 | | `HARNESS_MODEL` | 否 | `moonshotai/kimi-k2.5` | 用于深度 `.harness()` 分析的模型 | | `AI_MODEL` | 否 | `moonshotai/kimi-k2.5` | 用于快速 `.ai()` 门控和判定的模型 | | `SEC_AF_MAX_TURNS` | 否 | `50` | 每次调用的最大 Harness 轮次 | | `AGENTFIELD_API_KEY` | 否 | unset | 安全环境的 API 密钥 | | `HARNESS_PROVIDER` | 否 | `opencode` | Harness 后端提供商 | | `SEC_AF_AI_MAX_RETRIES` | 否 | `3` | 模型调用的重试次数 |
SEC-AF 基于 [AgentField](https://github.com/Agent-Field/agentfield) 构建,这是用于生产级自主 Agent 的开放基础设施。[看看我们还在构建什么 →](https://github.com/Agent-Field)
**[Apache-2.0](LICENSE)**
标签:AI安全, AMSI绕过, Chat Copilot, CISA项目, DevSecOps, GraphQL安全, LLM, Maven, PE 加载器, Python, Unmanaged PE, Web报告查看器, 上游代理, 云安全监控, 命令注入, 威胁检测, 开源安全工具, 数据展示, 无后门, 漏洞验证, 红队, 结构化查询, 网络安全, 自动化安全, 计算机取证, 请求拦截, 软件供应链安全, 远程方法调用, 逆向工程平台, 隐私保护, 静态分析